美文网首页
荷兰国旗问题&&Leetcode75题

荷兰国旗问题&&Leetcode75题

作者: 卡恩啦 | 来源:发表于2019-07-07 15:45 被阅读0次
图1 荷兰国旗问题

解题思路:

初始的函数中带有参数int[] nums, int L, int R,int num,其中L代表数组头指针,R代表数组尾指针,num是待比较元素;

初始化3个指针 ,less代表数组头指针之前的位置,more代表数组尾指针后一位的位置,cur代表遍历过程当前指针位置,初始化cur=L;

循环条件,如果cur < more,则进行循环,否则退出循环;

1. 在循环条件中,如果nums[cur] < num,将当前位置的数与小于区域的下一位的数交换,然后小于区域扩一位,即less++,cur++;

2. 如果nums[cur] == num ,直接跳到下一个数;

3. 如果nums[cur] >num,将当前位置的数与more前一位的数交换,之后大于区域向前扩一位,more--,(此处不需要cur++,因为交换后的元素是从数组尾部交换过来的,尚未进行比较,还需进一步进行比较);

如果cur = more,则跳出循环条件,整个过程结束。

图2 Leetcode 75题 颜色分类

解题思路:

1. 初始化3个指针,cur,L,R,其中,cur代表遍历过程的当前指针的位置,L初始化为数组头指针的位置,R初始化为数组尾部指针的位置。

2. 循环条件为当cur<=R时,进行循环条件里面的步骤,当cur与R错开(也就是cur>R)时跳出循环。

3. 当nums[cur] == 0时,将nums[cur]与nums[L]交换,之后cur++,L++;

   当nums[cur] == 1时,cur++;

   当nums[cur] ==2时,将nums[cur]与nums[R]交换,之后R--;(此处不需要cur++,因为交换     后的元素是从数组尾部交换过来的,尚未进行值的确定,所以还需要进一步判断,所以不进       行cur++);

图3 Leetcode75代码

相关文章

  • 荷兰国旗问题&&Leetcode75题

    解题思路: 初始的函数中带有参数int[] nums, int L, int R,int num,其中L代表数组头...

  • [算法题] 荷兰国旗问题

    1. 问题描述 荷兰国旗是由红白蓝3种颜色的条纹拼接而成,如下图所示: 假设这样的条纹有多条,且各种颜色的数量不一...

  • sort-colors

    荷兰国旗问题

  • 荷兰国旗问题

    给定一个数组,元素只有三种取值:0, 1, 2。分别代表三种颜色红白蓝。设计函数调整数组,使得数组按照0,1,2 ...

  • 荷兰国旗问题

    荷兰国旗问题:给定一个数num,将数组中划分成3部分,小于num的部分,等于num的部分,大于num的部分 例题:...

  • 荷兰国旗问题

    1.荷兰国旗问题 传入num 数组中大于num的数放左边 小于num的数放右边 等于num的数 放中间 1....

  • 荷兰国旗问题

    荷兰国旗问题 1、问题 荷兰国旗是由红白蓝3种颜色的条纹拼接而成,如下图所示: 假设这样的条纹有多条,且各种颜色的...

  • 【算法】快速排序及优化

    一、荷兰国旗问题 在讲快速排序前,我们先来看看荷兰国旗问题。题目如下: 其实,这就是快排的partition过程,...

  • 【数组】--荷兰国旗问题

    问题:现有红,白,蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色球在一起。红白蓝...

  • 荷兰国旗问题(颜色排序问题)

    版权声明:本文为博主原创文章,转载请注明出处。个人博客地址:https://yangyuanlin.club欢迎来...

网友评论

      本文标题:荷兰国旗问题&&Leetcode75题

      本文链接:https://www.haomeiwen.com/subject/nbubhctx.html