[LeetCode] Move Zeroes - 整数数组处理问题
生活随笔
收集整理的这篇文章主要介绍了
[LeetCode] Move Zeroes - 整数数组处理问题
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
目录:
1.Move Zeroes - 数组0移到末尾 [顺序交换]
2.
题目概述:
Given an arraynums, 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, givennums = [0, 1, 0, 3, 12], after calling your function,nums should be[1, 3, 12, 0, 0].
Note:
1.You must do this in-place without making a copy of the array.
2.Minimize the total number of operations.
void moveZeroes(int* nums, int numsSize) {int count; //计算0的个数int i,j;int n;n = 0;count = 0;for(i=0; i<numsSize; i++) {if(nums[i]==0) {count++;}else {nums[n] = nums[i];n++;}}//后置0for(j=0; j<count; j++) {nums[n] = 0;n++;} }
1.Move Zeroes - 数组0移到末尾 [顺序交换]
2.
一.Move Zeroes
题目概述:
Given an arraynums, 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, givennums = [0, 1, 0, 3, 12], after calling your function,nums should be[1, 3, 12, 0, 0].
Note:
1.You must do this in-place without making a copy of the array.
2.Minimize the total number of operations.
解题方法:
题意是把数组nums中0的元素后置,同时不能采用赋值数组。两种方法:
1.遇到是0的元素从数组最后向前存储并移位,遇到非0元素从前存储;
2.推荐:从前往后查找,不是0的元素前移,并计算0的个数,后面的全置0。
我的代码:
方法一:Runtime: 28 ms
void moveZeroes(int* nums, int numsSize) {int count; //计算0的个数int i,j;int n;n = 0;count = 0;for(i=0; i<numsSize; i++) {if(nums[i]==0) {count++;}else {nums[n] = nums[i];n++;}}//后置0for(j=0; j<count; j++) {nums[n] = 0;n++;} }
总结
以上是生活随笔为你收集整理的[LeetCode] Move Zeroes - 整数数组处理问题的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 基于VSM的命名实体识别、歧义消解和指代
- 下一篇: [LeetCode] Isomorphi