
LeetCode随笔
文章平均质量分 61
leetcode
井井酒
敲代码的文艺青年
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【LeetCode】N皇后-回溯
N皇后、N皇后II — 回溯原创 2023-01-04 19:10:46 · 782 阅读 · 1 评论 -
0807第305场力扣周赛
0807第305场力扣周赛(C++) AC了两道,第一道5min, 第二道花了15min左右,第四道写完超时,花了很长时间优化,其实优化思路还是挺简单的,一下子没想到,跟笨蛋一样原创 2022-08-07 13:08:39 · 752 阅读 · 0 评论 -
LeetCode 200.岛屿数量
LeetCode 200.岛屿数量给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。示例 1: 输入:grid = [ [“1”,“1”,“1”,“1”,“0”], [“1”,“1”,“0”,“1”,“0”], [“1”,“1”,“0”,“0”,“0”], [“0”,“0”,“0”,“0”,“0”] ] 输出:1示例 2: 输入:grid = [原创 2022-06-30 17:20:33 · 278 阅读 · 0 评论 -
LeetCode 712. 两个字符串的最小ASCII删除和
文章目录问题思路代码实现(C++) 问题 LeetCode 712.两个字符串的最小ASCII删除和 给定两个字符串s1 和 s2,返回 使两个字符串相等所需删除字符的 ASCII 值的最小和 。 示例 1: 输入: s1 = “sea”, s2 = “eat” 输出: 231 解释: 在 “sea” 中删除 “s” 并将 “s” 的值(115)加入总和。 在 “eat” 中删除 “t” 并将 116 加入总和。 结束时,两个字符串相等,115 + 116 = 231 就是符合条件的最小和。 示例 2: 输原创 2022-05-17 21:37:43 · 366 阅读 · 0 评论 -
LeetCode 72.编辑距离
文章目录题目思路代码实现 题目 【hard】给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 (0 <= word1.length, word2.length <= 500; word1 和 word2 由小写英文字母组成) 示例1: 输入:word1 = “horse”, word2 = “ros” 输出:3 解释: horse -> rors原创 2022-05-17 16:15:32 · 303 阅读 · 0 评论 -
最长递增子序列问题(Longest Increasing Subsquence, LIS)
文章目录问题思路代码实现(C++)总结 问题 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例1 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。 示例2 输入:nums = [0,1,0,3,2,3] 输出:4 示例3 输入:num原创 2022-05-16 22:41:36 · 357 阅读 · 0 评论 -
LeetCode 1373.二叉搜索树的最大键值和
文章目录题目思路代码实现(C++)总结 题目 【Hard】给你一棵以 root 为根的 二叉树 ,请你返回 任意 二叉搜索子树的最大键值和。 二叉搜索树的定义如下: 任意节点的左子树中的键值都 小于 此节点的键值。 任意节点的右子树中的键值都 大于 此节点的键值。 任意节点的左子树和右子树都是二叉搜索树。 示例1 输入:root = [1,4,3,2,4,2,5,null,null,null,null,null,null,4,6] 输出:20 解释:键值为 3 的子树是和最大的二叉搜索树。 示例2 输入原创 2022-05-11 10:44:41 · 489 阅读 · 0 评论 -
LeetCode 98. 验证二叉搜索树
文章目录问题思路代码实现(C++)总结 问题 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树 示例1 输入:root = [2,1,3] 输出:true 示例2 输入:root = [5,1,4,null,null,3,6] 输出:false 解释:根节点的值是 5 ,但是右子节点的值是 4 。 思路 根据BST定义,每个节点都原创 2022-05-10 19:46:23 · 397 阅读 · 0 评论 -
LeetCode 652.寻找重复子树
文章目录题目思路代码(C++)总结 题目 给定一棵二叉树 root,返回所有重复的子树。 对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。 如果两棵树具有相同的结构和相同的结点值,则它们是重复的。 示例1 输入:root = [1,2,3,4,null,2,4,null,null,4] 输出:[[2,4],[4]] 示例2 输入:root = [2,1,1] 输出:[[1]] 思路 题目要求找到所有重复子树,所以需要将一棵树的子树以某种方式表示出来并进行比较,如果有相同的就加入结果集。 首原创 2022-05-10 14:21:17 · 500 阅读 · 0 评论 -
Leetode 2.两数相加
题目 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 分析 双指针 | 模拟数学加法 两个链表遍历一遍,每次对两个节点求和,设变量cnt记录是否进位 代码 class Solution { pub原创 2022-01-10 20:12:35 · 483 阅读 · 0 评论 -
LeetCode 24.两两交换链表中的节点
题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 分析 核心的交换节点步骤可以拆解为3步,以1,2,3, 4链表为例,加入要交换2,3节点,则 第一步:1连接3 第二步:2连接4 第三部:3连接2 这里的连接指的是将结点的next指向该结点。 图解 代码 class Solution { public: ListNode* swapPairs(ListNode* head) { ListNo原创 2021-12-13 22:05:20 · 421 阅读 · 0 评论 -
LeetCode 21.合并两个有序链表
题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 分析 定义result储存结果,将两个链表各自遍历一遍,每次各拿出一个结点比较,把较小的连接在result后面,直到至少有一个链表元素全用完,此时,将另一个链表剩余部分直接连接在当前结果后面。 图解 代码 class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNo原创 2021-12-13 20:42:03 · 216 阅读 · 0 评论 -
LeetCode 19.删除链表的倒数第N个结点
题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出:[1] 分析 可以先求链表长度length,然后向后走length - n步找到待删元素的前一位,但是至少要两次遍历链表; 使用快慢指针法可以一次遍历找到待删元素 图解 上述思路有一个问题,当n = k, 即待原创 2021-12-13 17:22:14 · 436 阅读 · 0 评论 -
LeetCode 367. 有效的完全平方数
有效的完全平方数原创 2021-12-08 21:12:28 · 177 阅读 · 0 评论 -
LeetCode69. Sqrt(x)
题目 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1: 输入:x = 4 输出:2 示例 2: 输入:x = 8 输出:2 解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。 提示: 0 <= x <= 231 - 1 分析 二分查找稍微作变动,对于一个数x, 求它的算术平方根原创 2021-12-07 15:26:28 · 147 阅读 · 0 评论 -
LeetCode 35.搜索插入位置
题目 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums = [1,3,5,6], target = 5 输出: 2 示例 2: 输入: nums = [1,3,5,6], target = 2 输出: 1 示例 3: 输入: nums = [1,3,5,6], target = 7 输出: 4 示例 4: 输入: nums = [1,3,5,6], tar原创 2021-12-06 21:05:11 · 403 阅读 · 0 评论