
刷题专栏
聿默
创作不易,可以订阅博主哦。
展开
-
【c++】leetcode152 乘数最大子数组
leetcode152 乘数最大子数组解法:含极值的动态规划问题。原创 2023-03-07 21:15:06 · 92 阅读 · 0 评论 -
【c++】leetcode128 最长连续序列
leetcode128 最长连续序列解法:排序后按照以下操作:(1)前后数值差1,连续则当前长度+1(2)前后相等,则为重复,不改变当前长度原创 2023-02-06 21:52:15 · 244 阅读 · 0 评论 -
【c++】148. 排序链表
leetcode148 排序链表解法:递归排序+递归合并链表原创 2023-02-01 21:34:07 · 361 阅读 · 0 评论 -
【c++】leetcode139 单词拆分
leetcode139 单词拆分解法:动态规划原创 2023-02-01 20:02:41 · 181 阅读 · 0 评论 -
【c++】leetcode142 环形链表 II
【c++】leetcode142 环形链表 II解法:快慢指针原创 2023-01-29 20:51:05 · 265 阅读 · 0 评论 -
【c++】leetcode124 二叉树中的最大路径和
leetcode124 二叉树中的最大路径和,通过递归方法做。原创 2022-12-20 22:32:28 · 216 阅读 · 0 评论 -
【c++】leetcode160 相交链表
leetcode160 相交链表解法:(1)遍历两遍,第一遍记录AB链表的长度,第二遍,在长度相等时,判断节点是否相等,相等则返回,不相等则继续遍历。知道有一方走到NULL。(2)通过指针指向链表,将AB,BA组合成相同长度的链表,然后遍历。原创 2022-11-29 21:57:31 · 636 阅读 · 0 评论 -
【c++】leetcode141 环形链表
leetcode141 环形链表解法:快慢指针,停止条件需要注意,要判断fast与fast->next。原创 2022-11-29 20:26:20 · 465 阅读 · 0 评论 -
【c++】leetcode136 只出现一次的数字
leetcode136 只出现一次的数字解法:排序+两两比较;按位异或原创 2022-11-28 22:06:10 · 422 阅读 · 0 评论 -
【c++】leetcode121 买股票的最佳时机
leetcode121 买股票的最佳时机解法:维护最小的买入值与最大的收益。原创 2022-11-23 21:25:12 · 285 阅读 · 0 评论 -
【c++】leetcode114 二叉树展开为链表
leetcode114 二叉树展开为链表解法:用栈实现非递归先序遍历原创 2022-11-19 17:04:29 · 382 阅读 · 0 评论 -
【c++】leetcode101 对称二叉树
leetcode101 对称二叉树解法:递归原创 2022-11-19 15:28:19 · 382 阅读 · 0 评论 -
【c++】leetcode104 二叉树的最大深度
leetcode104 二叉树的最大深度解法: 直接左右子树的最大深度加1.原创 2022-11-18 11:10:49 · 453 阅读 · 0 评论 -
【c++】leetcode102 二叉树的层序遍历
leetcode102 二叉树的层序遍历解法: 广度优先搜索原创 2022-11-18 10:58:54 · 199 阅读 · 0 评论 -
【c++】leetcode94 二叉树的中序遍历
二叉树的中序遍历原创 2022-11-17 18:05:16 · 340 阅读 · 0 评论 -
【c++】leetcode79 单词搜索
leetcode79 单词搜索解法:回溯+dfs(深度优先搜索)原创 2022-11-15 22:18:39 · 174 阅读 · 0 评论 -
【c++】leetcode78 子集
给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解法:回溯做法,通过加入一个start,避免数组重复。既然没有重复,每一种可能性都需要作为path加入到res中。原创 2022-11-13 13:15:55 · 239 阅读 · 1 评论 -
【c++】leetcode76 最小覆盖子串
给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。解法:map+左右指针缩小子串范围。原创 2022-11-13 12:56:34 · 217 阅读 · 0 评论 -
【c++】leetcode75 颜色分类
给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。解法:值为0的放到左边,值为2的放到右边,值为1的时候不动。原创 2022-11-12 19:03:43 · 376 阅读 · 0 评论 -
【c++】leetcode72 编辑距离
给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。解法:动态规划原创 2022-11-10 22:10:47 · 147 阅读 · 0 评论 -
【c++】leetcode70 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?解法:动态规划的来源, fn = fn-1 + fn-2.原创 2022-11-10 10:54:03 · 347 阅读 · 0 评论 -
【c++】leetcode64 最小路径和
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。解法:动态规划原创 2022-11-10 09:50:35 · 134 阅读 · 0 评论 -
【c++】leetcode62 不同路径
一个机器人位于一个 m x n 网格的左上角 ,机器人试图达到网格的右下角,问总共有多少条不同的路径?解法:动态规划,路径总和等于上面位置与左边位置路径数之和。原创 2022-11-10 09:38:54 · 235 阅读 · 0 评论 -
【c++】leetcode56 合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。解法:排序之后,维护一个返回二维数组。原创 2022-11-09 21:22:48 · 122 阅读 · 0 评论 -
【c++】leetcode55 跳跃游戏
判断你是否能够到达最后一个下标。解法:如果最大的步数跳不到当前的index,那么就返回false;通过可以那么要么用之前最大的步数与当前index起跳nums[i],求最大值。原创 2022-11-09 20:29:35 · 656 阅读 · 0 评论 -
【c++】leetcode53 最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。解法:动态规划,初始条件,以及状态方程,要么不要之前的从当前index开始,要么要之前的。原创 2022-11-09 20:05:08 · 102 阅读 · 0 评论 -
【c++】leetcode49 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。解法:排序好的string作为umap的key, sort之前的字符串push到这个vector中,如果不存在key就赋值原创 2022-11-09 13:25:12 · 115 阅读 · 0 评论 -
【c++】leetcode48 旋转图像
给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。解法:通过将顺时针旋转90度,拆解为两个运算,一个是按照列的中位线左右旋转,接着再沿右上到左下这根斜线旋转。原创 2022-11-09 12:44:56 · 317 阅读 · 0 评论 -
【c++】leetcode46 全排列
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。解法:回溯法处理,如果path.size()==nums.size(),就可以存下来,如果不相等,就遍历,只要元素不在path中,就可以push。其中continue用法很重要,如果是break,那么就只会得到一个path。原创 2022-11-09 12:24:03 · 526 阅读 · 0 评论 -
【c++】leetcode39 组合总和
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。解法:通过回溯算法做,回溯的核心是,选择了之后进行遍历,然后回退。找到满足条件的就push_back保存起来。其中加上了sort与begin是为了做去重。原创 2022-11-09 11:06:56 · 149 阅读 · 0 评论 -
【c++】leetcode34 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。解法:通过二分法,一个用于找到左边界,一个用于找到右边界。原创 2022-11-08 21:48:24 · 303 阅读 · 0 评论 -
【c++】leetcode33 搜索旋转排序数组
给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1 。解法:通过二分法,三种情况,mid位置就是target,另外就是将nums[mid] > nums[right],nums[mid]原创 2022-11-08 21:14:15 · 115 阅读 · 0 评论 -
【c++】leetcode32 最长有效括号
给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。解法:通过维护暂未匹配括号栈来解这一题。原创 2022-11-08 20:20:05 · 185 阅读 · 0 评论 -
【c++】leetcode31 下一个排列
找到整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。解法:找规律,找到前后降序的那个数索引i,即比较小的那个数;找到右边刚好大于i索引指定数的索引,交换;翻转i之后的降序排列为升序排列,i+1->n-1。原创 2022-11-08 14:34:31 · 95 阅读 · 0 评论 -
【c++】leetcode23 合并K个升序链表
给你一个链表数组,每个链表都已经按升序排列。解法:暴力、分治,再两两合并。原创 2022-11-07 14:33:13 · 201 阅读 · 0 评论 -
【c++】leetcode22 括号生成
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。解法:回溯:在函数主体中写出执行的条件,满足条件后执行,执行完再回退寻找其他的可能性。原创 2022-11-05 12:17:43 · 178 阅读 · 0 评论 -
【c++】leetcode19 删除链表的倒数第 N 个结点
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。解法:快慢指针,快指针先走n步,第n+1步慢指针才开始走。等到快指针走到链表尾的时候,就走到需要被替换链表节点的前一位。然后通过->next = ->next->next。原创 2022-11-04 13:24:33 · 161 阅读 · 0 评论 -
【c++】leetcode17 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。解法:通过map存一个键值对。对第一个字母的直接放入vector,后续弹出,与其他元素排列组合。原创 2022-11-03 15:43:10 · 258 阅读 · 0 评论 -
【c++】leetcode21 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 解法:通过一个新链表与一个cur接住后来链上的指针。原创 2022-11-03 13:26:03 · 456 阅读 · 0 评论 -
【c++】leetcode20 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。解法:stack+string的用法,如果是括号的前半部分,就push到堆栈中,如果是括号的后半部分,就看堆栈顶是不是其前半部分,是的话就退栈,否则return false。原创 2022-11-02 14:12:37 · 486 阅读 · 0 评论