LeetCode 406. 根据身高重建队列

简介: LeetCode 406. 根据身高重建队列

406. 根据身高重建队列


贪心算法

解题思路

按身高从大到小排序,让高个子站在前面。那么对于排序完的数组,每次插入的节点都比前面的节点小,自然不会影响前面的节点的k值。


考虑一种特殊情况:身高相同


这种情况下要按k值从小到大排序,因为如果不这样,例如 [ 5 , 2 ] ,这种情况下 [ 5 , 0 ] 的插入会影响 [ 5 , 2 ] 的k值


代码实现

class Solution
{
public:
    vector<vector<int>> reconstructQueue(vector<vector<int>> &people)
    {
        sort(people.begin(), people.end(), [](const vector<int> &u, const vector<int> &v)
             { return u[0] > v[0] || (u[0] == v[0] && u[1] < v[1]); });
        int n = people.size();
        vector<vector<int>> res;
        for (auto i : people)
        {
            res.insert(res.begin() + i[1], i);
        }
        return res;
    }
};
目录
相关文章
|
2月前
【LeetCode 24】225.用队列实现栈
【LeetCode 24】225.用队列实现栈
12 0
|
2月前
|
算法
【LeetCode 23】232.用栈实现队列
【LeetCode 23】232.用栈实现队列
19 0
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 09. 用两个栈实现队列
使用两个栈实现队列的Python解决方案,包括初始化两个栈、实现在队列尾部添加整数的appendTail方法和在队列头部删除整数的deleteHead方法,以及相应的示例操作。
40 2
|
4月前
|
Python
【Leetcode刷题Python】641.循环双端队列
文章介绍了如何实现一个循环双端队列,包括其操作如插入、删除、获取队首和队尾元素,以及检查队列是否为空或已满,并提供了Python语言的实现代码。
25 0
|
4月前
|
Python
【Leetcode刷题Python】232. 用栈实现队列
如何使用Python语言通过两个栈来实现队列的所有基本操作,包括入队(push)、出队(pop)、查看队首元素(peek)和判断队列是否为空(empty),并提供了相应的代码实现。
22 0
|
6月前
|
存储 算法 Python
二刷力扣--栈和队列
二刷力扣--栈和队列
|
6月前
|
容器
【LeetCode刷题】栈和队列题目练习~
【LeetCode刷题】栈和队列题目练习~
|
7月前
|
机器学习/深度学习 存储 算法
数据结构与算法⑨(第三章_下)队列的概念和实现(力扣:225+232+622)(下)
数据结构与算法⑨(第三章_下)队列的概念和实现(力扣:225+232+622)
24 0
|
7月前
|
算法 前端开发 C语言
数据结构与算法⑨(第三章_下)队列的概念和实现(力扣:225+232+622)(上)
数据结构与算法⑨(第三章_下)队列的概念和实现(力扣:225+232+622)
36 0
|
7月前
|
C语言
Leetcode每日一题——“用栈实现队列”
Leetcode每日一题——“用栈实现队列”