我正在学习C#,我用java编程了一些东西,我想对我的C#代码有一个反馈。
这个练习来自codility。
目标是旋转数组A、K次;也就是说,A的每个元素将被移动到正确的K次。编写一个函数:类解决方案{公共int[]解决方案(int[] A,int K);}给定由N个整数和整数K组成的数组A,返回数组A旋转的K次。例如,给定A= 3、8、9、7、6 K=3,函数应该返回9、7、6、3、8。进行了三次旋转:3、8、9、7、6 -> 6、3、8、9、7 -> 7、6、3、8、9 -> 9、7、6、3、8 (另一个例子),给定A= 0 0 0 K=1时,函数应该返回0 0 0给定的A= 1,2,3,4 K=4,函数应该返回1,2,3,4
这是我的密码。它给出了100%,但也许一些东西可以是improved.Thanks的建议。
using System;
// you can also use other imports, for example:
// using System.Collections.Generic;
// you can write to stdout for debugging purposes, e.g.
// Console.WriteLine("this is a debug message");
class Solution {
public int[] solution(int[] A, int K) {
int len = A.Length;
int[] B = new int[len];
if(len > 0 && K % len != 0 )
{
for ( int i = 0; i < len; i++)
{
B[(K + i) % len] = A[i];
}
}
else
{
return A;
}
return B;
}
}发布于 2019-09-20 14:19:47
K的乘法,我喜欢不旋转的事实。B被创建得太早,因为在某些情况下,它将被创建为徒劳。class Solution { public int[] solution(int[] A, int K); }编写的。提供的签名值得自己审查(大写约定、静态成员、有意义的成员名称)。但是,如果您“不能”更改给您的签名,我将保持一致,使用N而不是len来表示数组的长度。K的负值?如果你想一想,左旋转就是右旋转的反义词。RotateRight (带有参数array和count ),并明确说明是执行原地旋转还是创建新数组。https://codereview.stackexchange.com/questions/229371
复制相似问题