LeetCode 283 解题及优化
来源:互联网 发布:iphone6导出视频mac 编辑:程序博客网 时间:2024/06/05 02:50
LeetCode 283
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, 1, 0, 3, 12],调用函数后为[1, 3, 12, 0, 0]注:你必须在原地进行操作,不能复制一份数组。尽可能少的去操作
解题:
class Solution {public: // 时间复杂度 O(n) // 空间复杂度 O(n) void moveZeroes(vector<int>& nums) { vector<int> nonZeroElements; // 将vec中所有非0元素放入nonZeroElements中 for( int i = 0 ; i < nums.size() ; i ++ ) if( nums[i] ) nonZeroElements.push_back( nums[i] ); // 将nonZeroElements中的所有元素依次放入到nums开始的位置 for( int i = 0 ; i < nonZeroElements.size() ; i ++ ) nums[i] = nonZeroElements[i]; // 将nums剩余的位置放置为0 for( int i = nonZeroElements.size() ; i < nums.size() ; i ++ ) nums[i] = 0; }};
优化1
class Solution {public: // 时间复杂度 O(n) // 空间复杂度 O(1) void moveZeroes(vector<int>& nums) { int k = 0; // nums中, [0...k)的元素均为非0元素 // 遍历到第i个元素后,保证[0...i]中所有非0元素 // 都按照顺序排列在[0...k)中 for(int i = 0 ; i < nums.size() ; i ++ ) if( nums[i] ) nums[k++] = nums[i]; // 将nums剩余的位置放置为0 for( int i = k ; i < nums.size() ; i ++ ) nums[i] = 0; }};
优化2
class Solution {public: // 时间复杂度 O(n) // 空间复杂度 O(1) void moveZeroes(vector<int>& nums) { int k = 0; // nums中, [0...k)的元素均为非0元素 // 遍历到第i个元素后,保证[0...i]中所有非0元素 // 都按照顺序排列在[0...k)中 // 同时, [k...i] 为0 for(int i = 0 ; i < nums.size() ; i ++ ) if( nums[i] ) swap( nums[k++] , nums[i] ); }};
0 0
- LeetCode 283 解题及优化
- LeetCode 75 解题与优化
- Leetcode难度表及解题汇总
- leetcode 第三题题目及解题思路
- 【LeetCode】Balanced Binary Tree 算法优化 解题报告
- LeetCode 解题
- LeetCode 解题
- [LeetCode]Same Tree解题
- LeetCode 解题报告索引
- [LeetCode]Permutations,解题报告
- Leetcode Triangle 解题报告
- [LeetCode]Anagrams,解题报告
- leetCode解题报告
- [LeetCode]Candy, 解题报告
- leetcode解题目录
- leetCode Candy解题分享
- LeetCode 解题API
- 【LeetCode】Candy 解题报告
- 程序员的眼里的“逗逼”用户[转]
- Spring 注入随笔
- HDU 3001 Travelling (三进制状压dp)
- linux关闭某端口
- Ajax 与 Comet
- LeetCode 283 解题及优化
- SSL P1715 计算面积
- JAVA实现线程安全
- sonar:一个项目多个分支,如何区分统计代码检查结果2
- Python进阶之“属性(property)”详解
- [转]ALSA --- amixer控制声卡驱动实现Line-in功能
- Linux系统中的文件类型
- Mac JDK Mysql Maven Tomcat IDEA
- Poj3669 meteor shower bfs