Leetcode刷题顺序(自用更新中)

本文作者分享了个人在LeetCode刷题的顺序与总结,涵盖数组、链表和字符串三个部分。对于数组,重点讨论了二分法、双指针法、滑动窗口和模拟等技巧;链表部分介绍了虚拟头节点和双指针法的应用;字符串部分则简要提及。文章还包含了作者在解题过程中的思考和相关链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Leetcode刷题顺序与总结(更新中)



前言

刷题顺序:先从同一类型里题目开始刷起,同一类型里再从简单到中等到困难刷起,题型顺序建议:数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论。整理一些自己在刷题时的想法,参考链接:https://github.com/youngyangyang04/leetcode-master


一、数组

1.二分法

适用场景:只要看到面试题里给出的数组是有序数组,都可以想一想是否可以使用二分法

二分法有两种模板,自己只考虑left <= right时的情况,这样区间定义只考虑[left, right]

    public static int searchInsert(int[] nums, int target) {
   
        while(nums.length <= 0){
   
            return 0;
        }
        int left = 0,right = nums.length-1,mid = 0;
        while (left <= right){
   
            System.out.println(left+""+mid+""+right);
            mid = (right+left)/2;
            if(nums[mid] == target){
   
                return mid;
            }else if (nums[mid] < target){
   
                left = mid + 1;
            }else{
   
                right = mid - 1;
            }
        }
        return  right + 1;
    }

想法:自己做了几道二分法的题目,69,74,offer_53等。题目上大致思路一致,主要考虑区间的问题,建议画图举几个例子确定区间。


2.双指针法

适用场景:是你想要从两端向中间迭代数组。这时你可以使用双指针技巧:一个指针从始端开始,而另一个指针从末端开始。值得注意的是,这种技巧经常在排序数组中使用。
双指针法(快慢指针法):通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。比较经典的一道题 T15_三数之和

public static List<List<Integer>> threeSum(int[] nums) {
   
        Arrays.sort(nums);
        int left,right;
        List<List<Integer>> res = new ArrayList<>();
        if (nums == null || nums.length <= 2) return res;
        for(int i = 0;i <= nums.length - 3;i++)
根据引用\[1\]和引用\[2\]的内容,推荐的LeetCode顺序是按照目类型,优先选择树、链表、二分查找、DFS、BFS、动态规划等常见类型的目。可以先做2~4道简单,然后再做中等难度的目。在选择目时,可以优先选择目序号小、点赞多、提交成功率高的目,这样可以从简单入手,节省时间。同时,LeetCode每道目都有“模拟面试”功能,可以给自己设定时间限制,如果做不出来可以看答案,然后记住思路后再自己尝试一遍。每种类型的目做完10+道后,可以总结规律。 根据引用\[3\]的内容,目可以按照不同的分类进行,比如数组与贪心算法、子数组与贪心算法、子序列与贪心算法、数字与贪心、单调栈法、双指针法等。可以根据自己的兴趣和需求选择相应的目进行。 综上所述,LeetCode顺序可以按照目类型或者目分类进行选择。 #### 引用[.reference_title] - *1* [LeetCode 顺序,按标签分类,科学!](https://blog.youkuaiyun.com/fengyuyeguirenenen/article/details/125099023)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [leetcode 指南 & 顺序](https://blog.youkuaiyun.com/qijingpei/article/details/125561071)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [leetcode-顺序推荐](https://blog.youkuaiyun.com/weixin_38087674/article/details/114107841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值