Update 75. Sort Colors.md

This commit is contained in:
ShusenTang 2019-12-03 23:07:35 +08:00 committed by GitHub
parent 02f9cc9de5
commit 1023737d59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,6 +4,11 @@
其实这题就是学习数据结构快排时可能遇到的"[荷兰国旗问题](https://en.wikipedia.org/wiki/Dutch_national_flag_problem)"可以用快排类似的partition的方法求解。
定义两个指针`right_0`和`left_2`初始分别为`-1`和`nums.size()`。始终满足`right_0`及其左边的元素全为0、`left_2`及其右边的元素全为2。
从前往后遍历数组将0放在位置`right_0 + 1`通过swap完成下同并更新`right_0`, 将2放在位置`left_2 - 1`并更新`left_2`遍历完成后即所有的0都在左边所有的2都在右边中间全为1。
注意:
**代码中最后`else`那里不更新`i`!!! 因为可能交换后`nums[i]=0`,需要在下一次循环中再次交换**
时间复杂度O(n)空间复杂度O(1)
# C++