由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 网上很多blog show算法结果是个错的作者压根没验证过
相关主题
问个fb onsite题目急求大神指导一道面经
刷题弱人来问个two sum的题目谁有空刷个题目
string permutation,怎么处理重复字母?max sub vector sum 问题
贴个自己的答案:Binary Tree Max Path SumLRU question
Yodle 面试题 Triangle 答对能有面试机会[算法]打印所有因子乘积组合
问一个java的函数调用问题发一个有趣的java题
这段LIS为啥崩溃?问个外循环和内问题
java concurrence 例子问一个java的基本问题
相关话题的讨论汇总
话题: nums话题: int话题: left话题: operations话题: right
进入JobHunting版参与讨论
1 (共1页)
H**********5
发帖数: 2012
1
比如这个
http://blog.gainlo.co/index.php/2016/11/18/uber-interview-question-move-zeroes/
一开始看效率果然很高,我就用java实现,随便跑个test居然是个错误结果。
public static void moveZeroes(int[] nums) {
int right = nums.length-1;
int operations=0;
for(int left = 0; left < nums.length; left++){
if(left>right){
nums[left]=0;
operations++;
continue;
}
if(nums[left] != 0){
continue;
}
nums[left]=nums[right];
operations++;
right--;
}
System.out.println(operations);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] nums={2,0, 1, 0, 3, 12,0,4,23,12,0};
//int[] nums={1, 2, 0, 3, 0, 1, 2};
moveZeroes(nums);
for(int i:nums)
System.out.print(i+" ");
}
他的operations次数确实少
w*******o
发帖数: 113
2
这个和283的区别在于这个不要求保留原来非零数的顺序。
估计这个作者的思路是
左指针指向零,然后右指针的非零数覆盖左指针的值。
但是他忽略了一种情况就是右指针的值也可能指向0.
比如说[2,0,1,0]
这时候把后面的零赋值给前面就会造成错误。
可以在for循环的第二个if语句后加上:
while (nums[right] == 0) right--;
我的代码如下:
public void moveZeroes(int[] nums) {
int l = 0;
for (int n : nums) if (n != 0) nums[l++] = n;
while (l < nums.length) nums[l++] = 0;
}
H**********5
发帖数: 2012
3
对的,这个码就是最优解了。

【在 w*******o 的大作中提到】
: 这个和283的区别在于这个不要求保留原来非零数的顺序。
: 估计这个作者的思路是
: 左指针指向零,然后右指针的非零数覆盖左指针的值。
: 但是他忽略了一种情况就是右指针的值也可能指向0.
: 比如说[2,0,1,0]
: 这时候把后面的零赋值给前面就会造成错误。
: 可以在for循环的第二个if语句后加上:
: while (nums[right] == 0) right--;
: 我的代码如下:
: public void moveZeroes(int[] nums) {

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一个java的基本问题Yodle 面试题 Triangle 答对能有面试机会
返回字符串所有的 combination问一个java的函数调用问题
求两个google onsite题目解答这段LIS为啥崩溃?
大家新年好。 请教一个 c interview question (转载)java concurrence 例子
问个fb onsite题目急求大神指导一道面经
刷题弱人来问个two sum的题目谁有空刷个题目
string permutation,怎么处理重复字母?max sub vector sum 问题
贴个自己的答案:Binary Tree Max Path SumLRU question
相关话题的讨论汇总
话题: nums话题: int话题: left话题: operations话题: right