Move Zeroes(leetcode)
来源:互联网 发布:视频特效制作软件哪些 编辑:程序博客网 时间:2024/06/08 09:54
Move Zeroes
- Move Zeroes
- 题目
- 解决
- 利用vector的函数及性质
- 将非0数提前
题目
leetcode题目
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.
解决
1. 利用vector的函数及性质
当发现0
的时候,利用vector的函数erase()
将0
删除,之后再将0
加进数组中。这样就能不会改变vector中原来非0
的数的顺序。
class Solution {public: void moveZeroes(vector<int>& nums) { int num = nums.size(); vector<int>::iterator it = nums.begin(); for (int i = 0; i < num; i++) { if ((*it) == 0) { nums.erase(it); nums.push_back(0); } else { it++; } } }};
2. 将非0
数提前
遍历数组,将每一个非0
数提前,直到前面没有0
为止。同时记录最后一个非0
的数在新数组中的位置index
,从下标为index + 1
添加0
直到index == n
。
class Solution {public: void moveZeroes(vector<int>& nums) { int num = nums.size(); int index = 0; for (int i = 0; i < num; i++) { if (nums[i] != 0) { int temp = nums[i]; nums[i] = nums[index]; nums[index++] = temp; } } while (index < num) { nums[index++] = 0; } }};
阅读全文
0 0
- leetcode 283: Move Zeroes
- leetcode - Move Zeroes
- Leetcode: Move Zeroes
- LeetCode - Move Zeroes
- LeetCode-Move Zeroes
- [LeetCode]Move Zeroes
- leetcode-283-Move Zeroes
- [leetcode 283]Move Zeroes
- LeetCode---Move Zeroes
- LeetCode 283----Move Zeroes
- LeetCode Move Zeroes
- LeetCode Move Zeroes
- Leetcode #283 Move Zeroes
- leetcode: (283) Move Zeroes
- [LeetCode 283] Move Zeroes
- 【LeetCode】Move Zeroes
- LeetCode-Move Zeroes
- [LeetCode] Move Zeroes
- git merge 和 git rebase 区别
- 第十五周项目一(6)——堆排序
- 微信摇一摇(模拟)
- CtrlP命令
- linux查找文件命令find
- Move Zeroes(leetcode)
- Unity3D --游戏体上所有Component组件复制
- Error:Please select Android SDK
- 态度支付,如何用聚合支付帮助商家赚钱
- Masonry学习之UILabel
- 算符优先系列之(一)Firstvt和Lastvt集 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descri
- 字符解码时加号解码为空格问题探究
- 文章标题
- Linux 多线程编程