方法一:
直接遍历两次,第一次统计每类数字的个数;第二次依次给数组按统计的个数赋值; 时间复杂度O(n)
方法二:
利用三个指针p0、p1、p2,分别指向第一个不为0、1、2的数。其中,p0、p1从头开始遍历,p2从数组尾开始遍历。第二种比第一种快一倍
如果三个指针中有任何两个可以互换,即:
即p0向了1,同时p1指向了0

或者p0指向了2,p2指向了0

又或者p1指向了2,p2指向了1

如果,以上三种情况均不是那么说说明三个指针各自不同,则可以直接将每个指针的位置赋上相应的值

#include<iostream>
#include<vector>
using namespace std;
/*方法1*/
void sort1(vector<int> &nums) {
int count0 = 0, count1 = 0, count2 = 0;
int i = 0;
while (i<nums.size()) {
if (

本文介绍了两种方法解决只含0,1,2的数组按0,1,2顺序输出的问题。方法一是两次遍历,先统计数量再赋值,时间复杂度为O(n)。方法二是利用三个指针p0、p1、p2,通过调整指针位置快速完成排序,速度是方法一的两倍。"
108997182,8022024,Docker容器中解决中文输入问题,['docker'],"['Docker', '中文输入', '字符集', 'POSIX', 'C.UTF-8', 'Dockerfile']
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



