8.23 数组的partition调整
Posted latup
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.23 数组的partition调整相关的知识,希望对你有一定的参考价值。
【题目】:
给定一个有序数组arr,调整arr使得这个数组的左半部分没有重复元素且升序,而不用保证右部分是否有序
例如:
arr=[1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 8, 8, 8, 9],调整之后arr=[1, 2, 3, 4, 5, 6, 7, 8, 9, ...]
【补充题目】:
给定一个数组arr,其中只可能含有0、1、2三个值,请实现arr的排序
另一种问法为:有一个数组,其中只有红球、篮球和黄球,请实现红球全放在数组的左边,篮球放在中间,黄球放在右边
另一种问法为:有一个数组,再给定一个值k,请实现比k小的数都放在数组的左边,等于k的数都放在数组的中间,比k大的数都放在数组的右边
【要求】:
1、所有题目实现的时间复杂度为O(N)
2、所有题目实现的额外空间复杂度为O(1)
题目来源:左程云老师《程序员代码面试指南》
以上是关于8.23 数组的partition调整的主要内容,如果未能解决你的问题,请参考以下文章