Leetcode刷题记录

碎碎念:决心要在Gap 这一年提高自己的代码能力,就从刷算法题开始吧,有上过acwing不太能持续跟上,于是决定跟着代码随想录的专题学习了,从零开始,希望能坚持每日更新

ps:在记录的时候希望可以同时锻炼自己的表达,之前存在记录的思路和方法再看一遍看不懂也不能回想起来的情况,这次尽量避免啦

数组专题

10.20  数组——查找类型

1. LCR 121. 寻找目标值 - 二维数组 - 力扣(LeetCode)

问题描述:

  • 对于二维数组,每行数字递增,每列数字递增,在该数组中寻找target

思路:

  • 分析数组特征,不难发现,若将该数组逆时针旋转45°,则可变成二叉搜素树;
  • 对于根节点,若其值 x > target , 则向左寻找,即j--;反之 i++;

代码:

class Solution{
public:
       bool findTargetIn2DPlants(vector<vector<int>>& plants, int target) {
    int i = 0;
    if (plants.size() == 0)
        return false;
    int j = plants[0].size() - 1 ;
    while(i < plants.size()&&j >= 0){
        if(plants[i][j] > target)
             j--;
        else if(plants[i][j] < target)
             i++;
        else
            return true;
        }
        return false;

    }
};

分析:

  1. 注意事项:注意j的取值;注意while循环的条件
  2. 时间复杂度:

2.704. 二分查找 - 力扣(LeetCode)

问题描述:

  • 给定n个元素的有序数组nums,寻找目标值target,若存在返回下标,不存在返回下标

思路:

  • 这是一道传统的二分查找题目,数组有序且无重复数字

代码:

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0;
        int right = nums.size()-1;
        while(left <= right){
                int mid = (right-left) / 2 + left;
                if(nums[mid] > target)
                     right = mid -1;
                else if (nums[mid] < target)
                     left = mid+1;
                else
                    return mid;
        }
        return -1;
    }
};

分析:

  1. 遇到的问题:①while循环中的条件没搞清楚;② 在right,left重新赋值时犯了重新加了int,相当于重新定义局部变量的错误,导致报错超时
  2. 时间复杂度:logn

反思与疑问:
  • 提升代码能力之路遇到的问题
    • 不能坚持:一直都有刷题的意识,但总是断断续续不系统,同时易忘,所以在保研过程中机试依然是自己的弱项,甚至是致命项
    • 不知道要如何系统学习,让知识过脑子:尝试过acm模式和leetcode模式,学习过acwing有做笔记,又有看到代码随想录的方法,但始终没有找到最适合自己的方法,做笔记也是有尝试在各个平台记录,最开始想用onenote一直以来的记笔记软件,但不方便手写和写代码,又尝试了平板,但感觉其实记录下来思路过程对自己的记忆好像没有加深,我最喜欢的方式应该是纸记,但是随手就会丢弃,最终选择了飞书,但依然存在记忆不深的问题,我觉得是复习不勤和练习不够的问题,在同一类型题我每次只学了模板题就没有再继续下去了
    • 总而言之,我十分着急,着急吞下每个类型的题目,对于广度及其的渴望,而对于具体每个模块算法的深度不愿深耕,这应该是我自学路上一直遇到的问题,因为没有合理的适合自己的计划,所以一遇到困难就会放弃,三天打鱼两天筛网;在算法提升这件事上,我确实只是一个还未踏进门的门外汉,虽然心向往已久,在我意识到刷题很重要这件事已有一年之余
  • 刷题过程中遇到的问题
    • 零散的基础知识忘记
    • 有思路但写不出代码,感觉还是写的太少的缘故
唯有更加勤奋才能摆脱coding threat,所以接下来还是好好的沉下心提升吧!相信并坚持长期主义!希望通过写博客的正反馈促进我坚持下去,也欢迎大佬们给出建议呀!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值