
LC排序
你别教我打游戏
直面困难,重视过程,追求结果,淡忘过去。
展开
-
LeetCode 1893. 检查是否区域内所有整数都被覆盖 (差分数组 | 区间合并)
1893. 检查是否区域内所有整数都被覆盖class Solution {public: bool isCovered(vector<vector<int>>& ranges, int left, int right) { vector<int> diff(60); for(auto& p:ranges) { diff[p[0]]++; diff[p[1]+1]--原创 2021-07-23 04:00:32 · 197 阅读 · 0 评论 -
LeetCode 354. 俄罗斯套娃信封问题 (排序+LIS+二分)
354. 俄罗斯套娃信封问题Java的Arrays.binarySearch用法需要小心一点。import java.util.Arrays;class Solution { public int maxEnvelopes(int[][] envelopes) { Arrays.sort(envelopes, (o1, o2) -> { if(o1[0] == o2[0]){ return o2[1] - o1[1原创 2021-03-04 15:19:47 · 134 阅读 · 1 评论 -
LeetCode 剑指 Offer 40. 最小的k个数 (堆排、快排、计数排序)
// 计数排序class Solution { public int[] getLeastNumbers(int[] arr, int k) { int[] cnt = new int[10010]; for(int x:arr){ cnt[x]++; } int[] ans = new int[k]; int pos = 0; for(int i=0;i<=10000;i原创 2021-01-01 13:57:35 · 149 阅读 · 0 评论 -
LeetCode 406. 根据身高重建队列 (贪心+排序)
406. 根据身高重建队列身高从低到高,留空位置。先放的人对后方的人没有影响(身高比他矮),所以,只需要考虑在前面留多少空位置即可。class Solution {public: static bool cmp(const vector<int>&v1,const vector<int>&v2){ return v1[0]<v2[0] || v1[0]==v2[0] && v1[1]>v2[1];原创 2020-11-16 14:28:42 · 168 阅读 · 0 评论 -
LeetCode 56. 合并区间 57. 插入区间 (排序、贪心)
56. 合并区间按照区间的第一维排序:class Solution {public: // vector<int> 默认字典序排序 // static bool cmp(const vector<int>&v1,const vector<int>&v2){ // return v1[0]<v2[0]; // } vector<vector<int>> merge(vecto原创 2020-11-04 23:29:00 · 104 阅读 · 0 评论 -
LeetCode 274. H 指数 275. H指数 II(排序+二分、计数排序)
275. H指数 II排序、二分根据题给定义,可以发现这个过程明显具有单调性。排序过后,h指数将数组分成两段;左面一段都具有这样的特征:a[n−h−1]<=ha[n-h-1]<=ha[n−h−1]<=h右面一段都具有这样的特征:a[n−h−1]>ha[n-h-1]>ha[n−h−1]>h临界点就是h指数。class Solution {public: int hIndex(vector<int>& a) {原创 2020-08-06 14:12:24 · 147 阅读 · 0 评论 -
LeetCode 215. 数组中的第K个最大元素 (快排思想、小根堆)
Top K class Solution {public: int findKthLargest(vector<int>& nums, int K) { return solve(nums,0,nums.size()-1,K); } // 在数组 nums[l,r]中寻找第k大的数 int solve(vector<int>& a,int l,int r,int k){ if(l==r) return原创 2020-08-08 00:25:16 · 204 阅读 · 0 评论