代码随想录——贪心算法:根据身高重建队列 & Vector原理
1.代码随想录-逆波兰式、滑动窗口最大值2.代码随想录-栈与队列-有效的括号(括号匹配)3.代码随想录——栈与队列8-前K个高频元素4.二叉树的递归遍历和迭代遍历5.代码随想录——二叉树-11.完全二叉树的节点个数6.代码随想录——二叉树-12.平衡二叉树7.代码随想录——二叉树17-路径总和8.代码随想录——二叉树19.最大二叉树9.代码随想录——二叉树21、合并二叉树(附:递归算法复杂度分析)10.代码随想录——二叉树23、验证二叉搜索树11.代码随想录——25二叉搜索树的最小绝对值差(递归遍历如何记录前后两个指针)12.代码随想录——25.二叉搜索树中的众数13.代码随想录——26、二叉(搜索)树的最近公共祖先14.代码随想录——回溯8、组合总和II15.代码随想录——回溯9.分割回文串16.代码随想录——回溯19重新安排行程17.代码随想录——回溯 N皇后18.代码随想录——贪心8.跳跃游戏II19.代码随想录——贪心9.K次取反后最大化的数组和 && std::sort函数的第三个参数说明20.代码随想录——贪心13.分发糖果
21.代码随想录——贪心算法:根据身高重建队列 & Vector原理
22.代码随想录——贪心算法22单调递增的数字23.代码随想录——贪心23监控二叉树24.代码随想录——动态规划5.周总结25.代码随想录——动态规划9不同的二叉搜索树26.代码随想录——动态规划01背包27.代码随想录——动态规划13.分割等和子集28.代码随想录——动态规划14最后一块石头的重量II(01背包)29.动态规划——dp的含义归类(完全背包和01背包区别)30.动态规划——26单词拆分31.代码随想录——动态规划背包问题总结32.代码随想录——动态规划31打家劫舍III(树状DP)33.代码随想录——动态规划、股票问题34.代码随想录——单调栈35.回溯总结
代码
class Solution {
public:
static bool cmp(vector<int>& a,vector<int>& b){
if(a[0] == b[0])return a[1]<b[1];//如果身高相同,k更小的在前面
return a[0] > b[0];//身高不同就从高到低
}
// 1.数组
vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
//有两个属性的贪心。只能先确定一个,不能同时考虑
//这里先确定身高从高到低。再按照k插在前面。因为后面的人身高比前面的人矮,不会影响前面已经排好了的k
sort(people.begin(),people.end(),cmp);
vector<vector<int>> ans;//不能直接插在people后
for(int i=0;i<people.size();i++){
ans.insert(ans.begin() + people[i][1],people[i]);
}
return ans;
}
// //2.链表
// vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {
// //有两个属性的贪心。只能先确定一个,不能同时考虑
// //这里先确定身高从高到低。再按照k插在前面。因为后面的人身高比前面的人矮,不会影响前面已经排好了的k
// sort(people.begin(),people.end(),cmp);
// list<vector<int>> ans;
// for(int i=0;i<people.size();i++){
// int pos = people[i][1];
// auto it = ans.begin();
// while(pos--){
// it++;
// }
// ans.insert(it,people[i]);
// }
// return vector<vector<int>>(ans.begin(),ans.end());
// }
};
数组和链表的代码看上去都是O(n^2)的复杂度。但实际运行时间却不同:
2和4是链表,1、3和6是数组。
原因是vector每次insert时,如果size超过capicity了,其会扩容并全量拷贝一次。
Vector原理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!