博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode--075--颜色分类(python)
阅读量:5072 次
发布时间:2019-06-12

本文共 1325 字,大约阅读时间需要 4 分钟。

给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。

此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。

注意:

不能使用代码库中的排序函数来解决这道题。

示例:

输入: [2,0,2,1,1,0]

输出: [0,0,1,1,2,2]
进阶:

一个直观的解决方案是使用计数排序的两趟扫描算法。

首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。
你能想出一个仅使用常数空间的一趟扫描算法吗?

 

偷懒。用冒泡做了一下。。

1 class Solution: 2     def sortColors(self, nums: List[int]) -> None: 3         """ 4         Do not return anything, modify nums in-place instead. 5         """ 6         for i in range(len(nums)): 7             for j in range(len(nums)-1,i,-1): 8                 if nums[j] < nums[j-1]: 9                     temp = nums[j]10                     nums[j] = nums[j-1]11                     nums[j-1]=temp

进阶,36ms范例:

1 class Solution: 2     def sortColors(self, nums: List[int]) -> None: 3         """ 4         Do not return anything, modify nums in-place instead. 5         """ 6         pre = 0 7         cur = 0 8         post = len(nums)-1 9         while cur <= post:10             if nums[cur] == 0:11                 nums[pre], nums[cur] = nums[cur], nums[pre]12                 pre += 113                 cur += 114             elif nums[cur] == 2:15                 nums[post], nums[cur] = nums[cur], nums[post]16                 post -= 117             else:18                 cur += 1

 

转载于:https://www.cnblogs.com/NPC-assange/p/11448546.html

你可能感兴趣的文章
Illustrated C#学习笔记(一)
查看>>
理解oracle中连接和会话
查看>>
两种最常用的Sticky footer布局方式
查看>>
Scrapy实战篇(三)之爬取豆瓣电影短评
查看>>
HDU 5510 Bazinga KMP
查看>>
[13年迁移]Firefox下margin-top问题
查看>>
Zookeeper常用命令 (转)
查看>>
【CF888E】Maximum Subsequence 折半搜索
查看>>
Java程序IP v6与IP v4的设置
查看>>
RUP(Rational Unified Process),统一软件开发过程
查看>>
eclipse下的tomcat内存设置大小
查看>>
数据库链路创建方法
查看>>
linux文件
查看>>
Linux CentOS6.5上搭建环境遇到的问题
查看>>
Enterprise Library - Data Access Application Block 6.0.1304
查看>>
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
vmware tools 的安装(Read-only file system 的解决)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>