码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] 75. Sort Colors

时间:2019-10-17 01:23:08      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:数组   leetcode   ||   数组排序   anything   排序   ase   length   mod   

颜色排序,中文又叫做荷兰国旗。好吧,题意是给一个数组,里面只有0,1,2三个数字,把数组排序成[0, 0, 0, 1, 1, 1, ....1, 2, 2, 2, 2, 2]的样子。

思路是two pointer夹逼扫描,遇到0就放在左起当前的位置,遇到1就不处理,遇到2就放在右起当前位置。代码如下,

时间O(n)

空间O(1)

 1 /**
 2  * @param {number[]} nums
 3  * @return {void} Do not return anything, modify nums in-place instead.
 4  */
 5 var sortColors = function(nums) {
 6     // corner case
 7     if (nums.length === 0 || nums === null) return;
 8 
 9     // normal case
10     let left = 0;
11     let right = nums.length - 1;
12     let cur = 0;
13     while (cur <= right) {
14         if (nums[cur] === 0) {
15             swap(nums, cur, left);
16             cur++;
17             left++;
18         } else if (nums[cur] === 1) {
19             cur++;
20         } else {
21             swap(nums, cur, right);
22             right--;
23         }
24     }
25 };
26 
27 var swap = function(nums, i, j) {
28     let temp = nums[i];
29     nums[i] = nums[j];
30     nums[j] = temp;
31 };

 

[LeetCode] 75. Sort Colors

标签:数组   leetcode   ||   数组排序   anything   排序   ase   length   mod   

原文地址:https://www.cnblogs.com/aaronliu1991/p/11689560.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!