[Leetcode] 406. Queue Reconstruction by Height 解题报告
来源:互联网 发布:惠普网络驱动官方下载 编辑:程序博客网 时间:2024/06/06 01:23
题目:
Suppose you have a random list of people standing in a queue. Each person is described by a pair of integers (h, k)
, where h
is the height of the person and k
is the number of people in front of this person who have a height greater than or equal to h
. Write an algorithm to reconstruct the queue.
Note:
The number of people is less than 1,100.
Example
Input:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]Output:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]
思路:
这道题目其实是插入排序的变种:我们首先对数组元素按照h和k进行排序,但是排序的规则比较特殊:越高的人越往前排,但是如果两个人的身高相同,则k小的人排在前面。这样排序之后我们就可以依次对有序数组内的元素进行插入:当处理到第i个人的时候,我们只需要将其插入到当前结果的第k个位置即可,这是因为比他高或者和他一样高但k小的人都已经在结果集中了,所以该人的位置一定是当前结果集的第k个。很巧妙有没有?
由于插入排序在最坏情况下的时间复杂度是O(n^2),所以该算法的时间复杂度也就是O(n^2)。
代码:
class Solution {public: vector<pair<int, int>> reconstructQueue(vector<pair<int, int>>& people) { sort(people.begin(), people.end(), pairComp); vector<pair<int, int>> ret; for(int i = 0; i < people.size(); ++i) { ret.insert(ret.begin() + people[i].second, people[i]); } return ret; }private: struct pairCompare { bool operator() (pair<int, int>& a, pair<int, int>& b) { return a.first == b.first ? a.second < b.second : a.first > b.first; } } pairComp;};
阅读全文
0 0
- LeetCode 406. Queue Reconstruction by Height 解题报告
- [leetcode] 406. Queue Reconstruction by Height 解题报告
- Leetcode解题报告:406. Queue Reconstruction by Height
- LeetCode解题报告 406. Queue Reconstruction by Height [medium]
- [LeetCode]406. Queue Reconstruction by Height 解题报告
- [Leetcode] 406. Queue Reconstruction by Height 解题报告
- Leetcode 406. Queue Reconstruction by Height 排队重构 解题报告
- LeetCode—406. Queue Reconstruction by Height
- [LeetCode]406.Queue Reconstruction by Height
- LeetCode 406. Queue Reconstruction by Height
- [LeetCode] 406. Queue Reconstruction by Height
- Leetcode 406. Queue Reconstruction by Height
- LeetCode 406. Queue Reconstruction by Height
- LeetCode笔记:406. Queue Reconstruction by Height
- 【LeetCode】 406. Queue Reconstruction by Height
- [leetcode]406. Queue Reconstruction by Height
- [Leetcode] 406. Queue Reconstruction by Height
- LeetCode 406. Queue Reconstruction by Height
- spring轻松实现数据源动态切换
- DDX_Control与DDX_Check
- 进行前端性能优化几种常用的方法。
- OpenCV全局/局部阀值二值化
- Spring:@Autowired注解、@Resource注解和@Service注解
- [Leetcode] 406. Queue Reconstruction by Height 解题报告
- JAVA RPC学习
- 922总结
- java EE开发之Servlet第十三课:复杂自定标签
- 关于Mac下appid登录提示‘This action could not be completed.’
- Java知识复习(常用类)
- 集合框架
- MySQL内核技术之"Table结构与操作"
- c语言--数组初始化