leetcode刷题,总结,记录,备忘 75
2015-07-08 22:32
363 查看
leetcode75
Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.
Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.
Note:
You are not suppose to use the library's sort function for this problem.
比较简单的题目,但是后面有高的要求,先上简单版的
更高级的要求是只有一次遍历,说实话我不会,,,,去查了别人的解法,有了理解。即将0扔到前面,将2扔到后面,如果是 1就不管,我看了别人的写法,,很容易的就理解了流程,但是其中有几个关键点,就是在先判断出是0,就是互换之后,下标不能自增,还应该再循环一次,再判断一下互换了之后的值是不是2,否则才 ++遍历下一个数。其实流程看几次就明白了,再不济就数字带进去试。我在初学变成的时候,看的郝斌的视频,他说过,如果有什么程序流程看不懂啥的,就带数进去试,试几次就懂了,的确是至理名言。
Sort Colors
Given an array with n objects colored red, white or blue, sort them so that objects of the same color are adjacent, with the colors in the order red, white and blue.Here, we will use the integers 0, 1, and 2 to represent the color red, white, and blue respectively.
Note:
You are not suppose to use the library's sort function for this problem.
比较简单的题目,但是后面有高的要求,先上简单版的
class Solution { public: void sortColors(vector<int>& nums) { vector<int> temp; vector<int>::iterator it = nums.begin(); while ((it = find(it, nums.end(), 0)) != nums.end()) { temp.push_back(*it); it++; } it = nums.begin(); while ((it = find(it, nums.end(), 1)) != nums.end()) { temp.push_back(*it); it++; } it = nums.begin(); while ((it = find(it, nums.end(), 2)) != nums.end()) { temp.push_back(*it); it++; } nums = temp; } };
更高级的要求是只有一次遍历,说实话我不会,,,,去查了别人的解法,有了理解。即将0扔到前面,将2扔到后面,如果是 1就不管,我看了别人的写法,,很容易的就理解了流程,但是其中有几个关键点,就是在先判断出是0,就是互换之后,下标不能自增,还应该再循环一次,再判断一下互换了之后的值是不是2,否则才 ++遍历下一个数。其实流程看几次就明白了,再不济就数字带进去试。我在初学变成的时候,看的郝斌的视频,他说过,如果有什么程序流程看不懂啥的,就带数进去试,试几次就懂了,的确是至理名言。
class Solution { public: void sortColors(vector<int>& nums) { if (nums.size() <= 1) return; int s = -1, e = nums.size(); int it = 0, temp; while (it < nums.size()) { if (nums[it] == 0) { if (it > s) { temp = nums[it]; nums[it] = nums[++s]; nums[s] = temp; } else it++; }else if (nums[it] == 2) { if (it < e) { temp = nums[it]; nums[it] = nums[--e]; nums[e] = temp; } else it++; } else it++; } } };
相关文章推荐
- 3Sum 等类似题目分析
- Plus One
- Remove Duplicates from Sorted List II
- WinRT中如何快速获取Uri地址中的QueryString键值对信息
- 7.8
- 《番茄工作法图解》第三章读书笔记
- Android入门(37)——第十四章 使用SeekBar制作可拖动的进度条
- Xamarin.Android开发实践(十四)
- Rotate Image
- Spring事务管理
- UI的Title
- Spark 通讯模块 以及常用分布式通讯方式
- objective c 方法快速查询手册
- hibernate优缺点
- Spark 通讯模块 以及常用分布式通讯方式 分类: spark 2015-07-08 22:29 23人阅读 评论(0) 收藏
- Spring中使用Hibernate
- POJ 1003:Hangover
- Mutex Objects
- 程序启动的完整过程
- Trapping Rain Water