From 60bcb36cd61821b639210531e0c374daa3049439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E6=A0=91=E6=A3=AE?= <14021051@buaa.edu.cn> Date: Fri, 7 Sep 2018 11:05:13 +0800 Subject: [PATCH] Create 283. Move Zeroes.md --- 283. Move Zeroes.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 283. Move Zeroes.md diff --git a/283. Move Zeroes.md b/283. Move Zeroes.md new file mode 100644 index 0000000..953d558 --- /dev/null +++ b/283. Move Zeroes.md @@ -0,0 +1,20 @@ +# [283. Move Zeroes](https://leetcode.com/problems/move-zeroes/description/) +# 思路 +题意就是将所有的0移到数组最后,要求非0元素的相对顺序不变。 +因为要求非0元素相对位置不变,所以从后往前遍历遇到非0元素就前移合适的位置即可。 +为了找到这个合适的位置,用变量not_0记录当前元素之前有多少非0元素,若当前元素也是非0元素,则将该元素移到下标为not_0位置即可。 +时间复杂度O(n),空间复杂度O(1) +# C++ +``` +class Solution { +public: + void moveZeroes(vector& nums) { + int not_0 = 0; + for(int i = 0; i < nums.size(); i++) + if(nums[i] != 0) + nums[not_0++] = nums[i]; + for(int i = not_0; i < nums.size(); i++) + nums[i] = 0; + } +}; +```