排列颜色

news/2024/5/19 21:28:59 标签: 算法, 数据结构, 快速排序, 排序算法

题目描述

现在有一个包含n个物体的数组,其中物体颜色为颜色为红色、白色或蓝色,请对这个数组进行排序,让相同颜色的物体相邻,颜色的顺序为红色,白色,蓝色。
我们用0,1,2分别代表颜色红,白,蓝
注意:
本题要求你不能使用排序库函数
扩展:
一个非常直接的解法是两步的计数排序的算法
首先:遍历一遍数组,记录0,1,2的数量,然后重写这个数组,先将0写入,再将1写入,再将2写入
你能给出一个只用一步,并且能在常数级空间复杂度解决这个问题的算法吗?

class Solution {
public:
    void sortColors(int A[], int n) {
        int front = 0, tail = n-1;
        int i = 0;
        while(i <= tail){
            // 把0放到前面
            if(A[i] == 0){
                swap(A[front], A[i]);
                i++;
                front++;
            }
            // 把2放到后面
            else if(A[i] == 2){
                swap(A[tail], A[i]);
                tail--;
            }
            else{
                i++;
            }
        }
    }
};

提交记录

问题原因

  • 第一次错是直接使用快排的思想,大的放右边,小的放左边,但没有考虑到,pivot为0时,会出现 021这样的错误情况。
  • 第二次错误是把大的移到右边,交换来的大小是无法确定的,所以此时 i 的位置是不能动的

http://www.niftyadmin.cn/n/1340152.html

相关文章

02.Linux之虚拟机安装

2019独角兽企业重金招聘Python工程师标准>>> 1.安装 使用虚拟机软件VMware Workstation&#xff0c;软件官网&#xff1a;http://www.vmware.com。以下示例中操作系统为Win7系统&#xff0c;VMware Workstation版本为8.0。安装步骤如下&#xff1a; 双击VMware Wor…

矩阵置0

题目描述 给定一个m*n的矩阵&#xff0c;如果有一个元素是0&#xff0c;就把该元素所在的行和列上的元素全置为0&#xff0c;要求使用原地算法。 拓展&#xff1a; 你的算法有使用额外的空间吗&#xff1f; 一种比较直接的算法是利用O(m,n)的空间&#xff0c;但是这不是一个好的…

js实现动态操作table

本章案例为通过js&#xff0c;动态操作table&#xff0c;实现在单页面进行增删改查的操作。 简要案例如下&#xff1a; <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%> <% taglib prefix"c&…

iOS 检查声明但未使用变量

product->analyze转载于:https://www.cnblogs.com/SimonGao/p/5070549.html

求平方根(二分)

题目描述 实现函数 int sqrt(int x). 计算并返回x的平方根&#xff08;向下取整&#xff09; class Solution { public:/*** * param x int整型 * return int整型*/int sqrt(int x) {// write code hereif(x < 2){return x;}int left 1, right x / 2;int mid ,approximate…

Intent 类

2019独角兽企业重金招聘Python工程师标准>>> public Intent (Context packageContext, Class<?> cls)Intent&#xff1a;目的&#xff0c;从一个activity跳转到另外一个activity&#xff1b;在Android中有一个活动栈&#xff0c;这样才能确保正确地将一个活动…

LeetCode - Permutations

题目&#xff1a; Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1]. 思路&#xff1a;见缝插针 先有了[1]&#xff0c;然后往它的左右插入…

求路径(动态规划)

题目描述 一个机器人在mn大小的地图的左上角&#xff08;起点&#xff09;。 机器人每次向下或向右移动。机器人要到达地图的右下角&#xff08;终点&#xff09;。 可以有多少种不同的路径从起点走到终点&#xff1f; 备注&#xff1a;m和n小于等于100,并保证计算结果在int范围…