[LeetCode]283. Move Zeroes
来源:互联网 发布:ubuntu uuidgen 编辑:程序博客网 时间:2024/06/14 03:27
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.
方法一:(我的)从数组末端开始遍历,遇到0就把后面的都向前挪,同时记录已经放在末端的0的个数以减小挪动的次数。
public class Solution { public void moveZeroes(int[] nums) { int n=nums.length; int count=0; for(int i=n-1; i>-1; i--){ if(nums[i]==0){ for(int j=i; j<n-1-count; j++){ nums[j]=nums[j+1]; } nums[n-1-count]=0; count++; } } }}分析:太死板了。盯着“哪个元素是0”,但其实换个角度,“哪个元素不是0”,就把它存下来。这样子出发更简便。
方法二:
void moveZeroes(vector<int>& nums) { int lastNonZeroFoundAt = 0; for (int i = 0; i < nums.size(); i++) { if (nums[i] != 0) { nums[lastNonZeroFoundAt++] = nums[i]; } } for (int i = lastNonZeroFoundAt; i < nums.size(); i++) { nums[i] = 0; }}
方法三:用一个容器把非零元素按顺序存下来
void moveZeroes(vector<int>& nums) { int n = nums.size(); // Count the zeroes int numZeroes = 0; for (int i = 0; i < n; i++) { numZeroes += (nums[i] == 0); } // Make all the non-zero elements retain their original order. vector<int> ans; for (int i = 0; i < n; i++) { if (nums[i] != 0) { ans.push_back(nums[i]); } } // Move all zeroes to the end while (numZeroes--) { ans.push_back(0); } // Combine the result for (int i = 0; i < n; i++) { nums[i] = ans[i]; }}
阅读全文
0 0
- 【LeetCode】283. Move Zeroes
- Leetcode 283. Move Zeroes
- LeetCode #283. Move Zeroes
- 283. Move Zeroes LeetCode
- LeetCode 283. Move Zeroes
- LeetCode 283. Move Zeroes
- LeetCode 283. Move Zeroes
- 【LeetCode】283. Move Zeroes
- leetcode 283. Move Zeroes
- leetcode 283. Move Zeroes
- LeetCode 283. Move Zeroes
- leetcode 283. Move Zeroes
- #leetcode#283. Move Zeroes
- LeetCode *** 283. Move Zeroes
- LeetCode 283. Move Zeroes
- LeetCode-283.Move Zeroes
- Leetcode 283. Move Zeroes
- leetcode 283. Move Zeroes
- 【ML--07】机器学习知识点及其算法实现sklearn
- Spring 顾问 自动代理
- react项目实战(权限模块开发九)dva的table控件使用
- 传智播客-Java学习笔记day22
- 详解--邻接表的数组实现【转载】
- [LeetCode]283. Move Zeroes
- 1164: 在线判题(字符串)
- Unity 中的C#脚本
- dp计数 盒子与小球 三连发
- Tip2 使用默认转型方法
- Eclipse安装git插件以及关联导入GitHub项目
- Matlab find函数
- 2017/7/31Python日志
- UVA 1455 Kingdom (线段树 + 并查集 + 离散化)