将列表的索引添加到新列表

时间:2015-12-12 12:42:57

标签: java list indexing addition

给定一个整数长度为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编写?

3 个答案:

答案 0 :(得分:0)

收藏: Java - Rotating array

使用整数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];