认真刷刷看,希望能有一个好的leetcode排名
2021年11月17日开始,争取年前过完参考资料上的101个题目。
第一天刷题,感觉还可以,写了4个算法题目。
题解看是要看官方和代码随想录以及《算法分析》等书籍。看到作者本身就描述的不清楚的东西就再找别的资料来进行学习。
①遇到看了几遍还不懂的可以先标记放置,下文中应该会有相关的解释。这种有答案、有反馈的感觉真好;
②每一个题目都要好好分析时间和空间复杂度;
0、相关的英语单词
| 汉语 | 洋文 |
|---|---|
| 指针 | pointer、ptr |
| 优先队列 | priority-queue |
| 条纹 | streak |
| 数值 | va//value |
| 有效的 | valid |
1、语法细节
if(index==3) 别写成 if(index=3)
vector a;
a.size();//这个数据是实时更新的
1.1、调用自定义排序两种方法
下面这种不知道为啥会显示超时
sort(intervals.begin(), intervals.end(), [](vector<int> a, vector<int> b)
{
return a[1] < b[1];});//注意最后面这些标点符号,这是匿名函数lambda来调用排序算法
- 20220705修正
- 很可能是因为
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
vector<vector<int>> vec = {
{
5, 8}, {
2, 4}, {
6, 6}};
//这样就行了
sort(vec.begin(), vec.end(), [](vector<int> a, vector<int> b){
return a[0] < b[0];//写成了 a[1] < b[1]可能和题目要求 不一致
});
cout<<vec[0][1];
return 1;
}};
要用这种就不会超时
class Solution {
private:
static bool cmp(const vector<int>& a, const vector<int>& b) {
return a[0] < b[0];
}
public:
int find(vector<int>& points) {
sort(points.begin(), points.end(), cmp);
}
2、中断循环
break;//直接终止这个循环
continue;//结束本次循环
这两个别用混了。
3、细节
问题的特殊情况尽量考虑到!减少重复提交的次数,争取一次过。
4、难度
等级
a、直接自己有思路
b、看了文字解释能独立编程
c、看了文字还要看别人的源代码
5、leetcode中链表的结构
struct ListNode {
int val;
ListNode *next;
ListNode(): val(0), next(nullptr){
} // 下面这三个是节点的构造函数的三种重载
ListNode(int x) : val(x)
博主分享了在LeetCode刷题的心得体会,包括英语单词、语法细节、中断循环、链表结构、数据类型转换、算法分析等方面,强调了理解和掌握每个题目背后的逻辑和时间复杂度的重要性。同时,提到了在编程过程中遇到的问题和解决方案,如数组下标越界、内存管理、递归调用等。
最低0.47元/天 解锁文章
18万+

被折叠的 条评论
为什么被折叠?



