算法之刷题篇
文章平均质量分 82
刷题,为大厂而冲
边学边卷
不想开摆,只能开卷
展开
-
动态规划刷题
动态规划一、动态规划1. 使用题目类型2. 解题常规套路(以leetcode322最大最小值型为例)二、刷题经历 一、动态规划 1. 使用题目类型 1.计数 有多少种方式走到右下角 有多少种方法选出k个数使得和是Sum 2.求最大最小值 从左上角走到右下角路径的最大数字和 最长上升子序列长度 3.求存在性 取石子游戏,先手是否必赢 能不能选出k个数使得和是Sum 2. 解题常规套路(以leetcode322最大最小值型为例) 1.确定状态:当我们在利用动态规划解题时,需要创建一个数原创 2022-05-10 21:22:04 · 134 阅读 · 0 评论 -
DFS刷题
DFS问题的刷题经历2022.05.10 2022.05.10 leetcode22 括号生成 解题思路:利用回溯法,不设置剪枝条件,定义count来时刻记录当前track中左括号数目-右括号数目之差,当track中元素数目为2n且count为0时,保存结果并终止递归;当count数值大于n时直接终止递归;当track中元素的数目大于2n时直接终止递归;当track中元素数目等于2n但count不为0时直接终止递归;当track中元素数目小于2n且count小于0时直接终止递归。 leetcode20原创 2022-05-10 21:14:56 · 168 阅读 · 0 评论 -
数组问题的解题思路
数组刷题经历2022.05.03 2022.05.03 leetcode215 数组中第k个最大元素 解题思路:利用最大堆,把数据依次放入,再依次取出,取出第k个数就是第k个最大元素 leetcode33 搜索旋转排序数组 解题思路:原创 2022-05-04 18:21:47 · 294 阅读 · 0 评论 -
字符串问题的解题思路
字符串刷题经历2020.05.02 2020.05.02 leetcode3 无重复最长子串 解题思路:利用滑动窗口,定义两个指针start和end组成窗口,定义一个Map集合来储存数组中的元素及其下标。起始时两指针同时指向字符串第一个元素,end指针开始进行遍历,每遍历一个元素,将元素和下标以key-value的形式存放在Map中,更新结果集,移动end指针。当遍历到相同元素时,移动start指针至上次出现的次元素的下标值加一的位置,并更新Map集合中该元素的value值,更新结果集。当end指针到达原创 2022-05-02 21:25:59 · 222 阅读 · 0 评论 -
树问题的解题思路
树的刷题经历2022.5.1前言:递归1. 基本概念:2. 递归的使用条件3. 递归解题思路3.1 按照规律随缘写3.2 标准程序化正文:刷题 2022.5.1 前言:递归 1. 基本概念: 递归算法,是一种直接或者间接调用自身函数或者方法的算法,说简单了,就是程序自身的调用。 2. 递归的使用条件 问题可以分解成若干个小问题,且小问题和原问题的解题思路相同 存在终止条件 3. 递归解题思路 3.1 按照规律随缘写 参照快排 3.2 标准程序化 假设我们定义的函数可以解决问题,那么我们在我们定原创 2022-05-01 11:27:02 · 401 阅读 · 0 评论 -
链表问题的解题思路
链表刷题经历2022.4.30 2022.4.30 leetcode206 反转链表 解题思路:利用双指针,对要反转的链表定义一前一后两个指针pre和cur,反复迭代。 leetcode92 反转链表Ⅱ 与Ⅰ的区别:反转指定的两个下标之间的链表 解题思路:利用双指针,对要反转的链表定义一前一后两个指针rpe和cur,让两个指针分别指向要反转的部分链表的头节点和尾节点,利用Ⅰ的思路反转中间部分。 leetcode160 相交链表 解题思路:利用双指针,一个指针p1从A开始遍历,遍历到null之前则转而原创 2022-04-30 22:01:40 · 332 阅读 · 0 评论