Leetcode刷题总结和心得

博主分享了在LeetCode刷题的心得体会,包括英语单词、语法细节、中断循环、链表结构、数据类型转换、算法分析等方面,强调了理解和掌握每个题目背后的逻辑和时间复杂度的重要性。同时,提到了在编程过程中遇到的问题和解决方案,如数组下标越界、内存管理、递归调用等。
摘要由CSDN通过智能技术生成

认真刷刷看,希望能有一个好的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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值