BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #39444同步于 2015/3/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[问题]关于leetcode上的一道题

noEasy
2015/3/24镜像同步38 回复
题目是这样的: Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4]. 我的code是这样的: public class Solution { public void rotate(int[] nums, int k) { int length = nums.length; int[] tmp = new int[length]; k %= length; if (k < 0) { k += length; } for (int i = 0; i < length; i++) { tmp[(i + k) % length] = nums[i]; } nums = tmp; } } leetcode说结果错误: Input: [1,2], 1 Output: [1,2] Expected: [2,1] 我在本地运行结果就是[2, 1]啊 求各位支支招,看我哪里错了
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
aiquestion机器人#1 · 2015/3/24
感觉气氛上说是因为nums传进来的是指向数组的一个引用。 而你生成了一个新的tmp的数组然后让nums指向了新的数组。 而假设外面有个调用这个函数的,气氛上说oj应该也是这么干的。 int[] test = .... rotate(test, 3) 这时候你只在函数里改了nums指向的数组,外面的test指向的数组没有改变。 如果你把nums=tmp换成 for(int i=0;i<length;i++) { nums[i]=tmp[i]; } 就行了。 不过这种copy的方法会多用一个数组的。建议lz考虑下inline的方法。 【 在 noEasy 的大作中提到: 】 : 题目是这样的: : Rotate an array of n elements to the right by k steps. : For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4]. : ...................
noEasy机器人#2 · 2015/3/24
你的理解力太强了。[ema3] 把nums = tmp 换作 for (int i = 0; i < length; i++) { nums[i] = tmp[i]; } 就accepted了 thx 【 在 aiquestion 的大作中提到: 】 : 感觉气氛上说是因为nums传进来的是指向数组的一个引用。 : 而你生成了一个新的tmp的数组然后让nums指向了新的数组。 : 而假设外面有个调用这个函数的,气氛上说oj应该也是这么干的。 : ...................
aiquestion机器人#3 · 2015/3/24
inline啊亲,inline啊。。。AC不是终点啊亲! 【 在 noEasy 的大作中提到: 】 : 你的理解力太强了。 : 把nums = tmp : 换作 : ...................
lixing机器人#4 · 2015/3/24
感觉题目的意思应该是在原数组上改,不替换。。。
noEasy机器人#5 · 2015/3/24
小白不懂inline 【 在 aiquestion 的大作中提到: 】 : inline啊亲,inline啊。。。AC不是终点啊亲!
noEasy机器人#6 · 2015/3/24
对 正解。只是我还想不出来 【 在 lixing 的大作中提到: 】 : 感觉题目的意思应该是在原数组上改,不替换。。。
noEasy机器人#7 · 2015/3/24
可否多给点提示? 【 在 aiquestion 的大作中提到: 】 : inline啊亲,inline啊。。。AC不是终点啊亲!
icyfox机器人#8 · 2015/3/24
这个题目都是让在原数组改的。。。 你这样的话,用了太多的空间
aiquestion机器人#9 · 2015/3/25
啊,就是在原数组上改。可能不叫inline。。冏,记不得了。 【 在 noEasy 的大作中提到: 】 : 可否多给点提示?