给定一个整数长度为3的数组,返回一个元素“向左旋转”的数组,因此{1,2,3}产生{2,3,1}。
我的第一次尝试(我在python中很容易做到这一点,所以我有同样的想法)。
public int[] rotateLeft3(int[] nums) {
return [nums[1:] + nums[0]];
}
但正如你所料,我得到了一个错误,所以我立即写了这个。
public int[] rotateLeft3(int[] nums) {
int[] answer = new int[3];
answer[0] = nums[1];
answer[1] = nums[2];
answer[2] = nums[0];
return answer;
}
我觉得这可能是解决问题的最低效方式,但我之所以这样做是因为它说长度为3.我以前的代码在python中适用于所有大小。所以我想知道我以前的代码将如何用java编写?
答案 0 :(得分:0)
使用整数nums [];
如果没有,请迭代并将int []转换为Integer []
或使用http://commons.apache.org/lang/:
Integer[] array2= ArrayUtils.toObject(nums);
Collections.rotate(Arrays.asList(nums), -1);
转换为数组:.toArray();
答案 1 :(得分:0)
也许......
public int[] rotateLeft(int size, int[] array) {
int temp = int[size-1]; // We're just gonna save the las value.
for (int i = size-1; i == 0; i--) {
array[i] = array[i-1]; // We move them all 1 to the left.
}
array[0] = temp; // This is why we saved the las value.
return array;
希望它能帮到你!
答案 2 :(得分:0)
您可以使用System.arraycopy轻松完成此操作:
int[] arr = { 1, 2, 3};
int[] rotated = new int[arr.length];
System.arraycopy(arr, 1, rotated, 0, arr.length - 1);
rotated[arr.length-1] = arr[0];