LeetCode刷题笔记-数据结构-day4
Posted LL.LEBRON
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题笔记-数据结构-day4相关的知识,希望对你有一定的参考价值。
文章目录
LeetCode刷题笔记-数据结构-day4
240.搜索二维矩阵 II
1.题目描述
原题链接:240. 搜索二维矩阵 II
2.解题思路
题目说了矩阵两个重要的性质:
- 每行的所有元素从左到右升序排列
- 每列的所有元素从上到下升序排列
根据性质。我们可以发现,如果从右上角出发,初始化i = 0,j = m - 1
:
- 若
matrix[i][j] == target
,返回true
- 若
matrix[i][j] > target
,向左走,j--
- 若
matrix[i][j] < target
,向下走,i++
- 如果出界,返回
false
最终的时间复杂度为O(n+m)
,符合题目要求
3.代码
class Solution
public:
bool searchMatrix(vector<vector<int>>& v, int t)
int n=v.size(),m=v[0].size();
int i=0,j=m-1;
while(i<n&&j>=0)
if(v[i][j]<t) i++;
else if(v[i][j]>t) j--;
else return true;
return false;
;
435.无重叠区间
1.题目描述
原题链接:435. 无重叠区间
2.解题思路
算法:贪心
具体思路:
按照区间右端点排序
选择的区间结尾越小,余留给其它区间的空间就越大,就越能保留更多的区间,所以这里使用右端点排序。优先保留结尾小且不相交的区间。这样保留的区间也更多,从而需要移除的区间就越少!
3.代码
class Solution
public:
int eraseOverlapIntervals(vector<vector<int>>& v)
sort(v.begin(),v.end(),[](vector<int>& a,
vector<int>& b)
return a[1]<b[1];
);
int ed=v[0][1];
int res=0;
for(int i=1;i<v.size();i++)
if(v[i][0]<ed) res++;
else ed=v[i][1];
return res;
;
以上是关于LeetCode刷题笔记-数据结构-day4的主要内容,如果未能解决你的问题,请参考以下文章