Queue Reconstruction by Height(根据高度重组队列)
来源:互联网 发布:上海嘉桥数据咨询公司 编辑:程序博客网 时间:2024/05/17 07:47
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]]
以后都不翻译题目了。。大家自己看吧
方法比较简单,实现也不是很难。
从输入中每次都找高度最低的那个,比如例题中就是[4,4],我们需要一个新的vector,于是这个[4,4]就理所应当排在第5个位置,前面有4个人嘛。
然后第二找的就应该是[5,0]或者[5,2]也可以,比如[5,2]的话,那么他就应该放在第3个位置
下一个就是[5,0],放在第1个位置。
下一个[6,1]这个开始有讲究了因为新的vector此时的状态是{[5,0],x,[5,2],x,[4,4],x} 其中x表示尚空的位置,则[6,1]就应该放在第4个位置,他的前面有一个比他高或者相同高度的人,也就是说他的前面应该有一个现存和他一样高或者为空的位置。因为我们是从高度最低开始寻找的,所以空位置将来必然是和他一样高或比他高的,因此可以当做是比他高的存在。
那么下一个[7,1] 此时状态为{[5,0],x,[5,2],[6,1],[4,4],x},很清晰,放在最后
下一个[7,0]状态为{[5,0],x,[5,2],[6,1],[4,4],[7,1]},只剩一个位置了
具体代码如下:
vector<pair<int, int>> reconstructQueue(vector<pair<int, int>>& people) { pair<int, int> p(-1,-1); int s = people.size(); vector<pair<int, int>> v(s,p); for(int i = 0; i < s; ++i){ int size = people.size(); int k = 0; for(int j = 0; j < size; ++j) { if(people[k].first > people[j].first){ k = j; } } pair<int, int> t = people[k]; people.erase(people.begin() + k); int count = 0; for(int j = 0; j < s; ++j){ if(v[j].second == -1 || v[j].first >= t.first){ if(count == t.second){ v[j] = t; break; } else{ count++; } } } } return v; }
- Queue Reconstruction by Height(根据高度重组队列)
- 406. Queue Reconstruction by Height(根据身高重排队列)
- LeetCode oj 406. Queue Reconstruction by Height(优先队列)
- [LeetCode] Queue Reconstruction by Height 身高队列
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- Queue Reconstruction by Height
- 406. Queue Reconstruction by Height (Medium)
- Java中异常处理示例
- 在struts2中获取请求action名称或参数
- dbm数据库操作
- Python 边做边学 8.1 工具类--HTTP工具
- php
- Queue Reconstruction by Height(根据高度重组队列)
- codeforces 797B Odd sum
- python中的模块
- 微信小程序入门篇(一)
- cookie的使用方法和注意事项
- linux下如何查看网卡的流量
- C# 特性(Attribute)详细介绍
- http://www.cnblogs.com/liughost/p/4917350.html
- HDU Quicksum