您的位置:首页 > 其它

[LeetCode]: 283: Move Zeroes

2015-09-21 22:22 344 查看
题目:

Given an array
nums
, write a function to move all
0
's to the end of it while maintaining the relative order of the non-zero elements.

For example, given
nums = [0, 1, 0, 3, 12]
, after calling your function,
nums
should be
[1, 3, 12, 0, 0]
.

Note:

You must do this in-place without making a copy of the array.

Minimize the total number of operations.

分析:从后向前逐一查找即可

代码:

public class Solution {
public static void moveZeroes(int[] nums) {
for(int i =nums.length-1; i >=0 ;i--){
if(nums[i] ==0){
int intTemp = 0;
for(int j=i+1;j<nums.length;j++){
if(nums[j]!= 0){
nums[j-1] = nums[j];
nums[j] = 0;
}
}
}
}
}
}


网上高手的思路:现将非0的数前移,再将余下的空位补0

代码:

public class Solution {
public static void moveZeroes(int[] nums) {
int iCounter = 0;
for(int i =0;i<nums.length;i++){
if(nums[i] ==0){
iCounter++;
}
else{
nums[i-iCounter] = nums[i];
}
}

for(int i = (nums.length-iCounter);i<nums.length;i++){
nums[i]=0;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: