
LeetCode随笔
文章平均质量分 61
leetcode
井井酒
敲代码的文艺青年
展开
-
【LeetCode】N皇后-回溯
N皇后、N皇后II — 回溯原创 2023-01-04 19:10:46 · 759 阅读 · 1 评论 -
0807第305场力扣周赛
0807第305场力扣周赛(C++)AC了两道,第一道5min, 第二道花了15min左右,第四道写完超时,花了很长时间优化,其实优化思路还是挺简单的,一下子没想到,跟笨蛋一样原创 2022-08-07 13:08:39 · 725 阅读 · 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 · 244 阅读 · 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 · 356 阅读 · 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 · 290 阅读 · 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 · 340 阅读 · 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 · 466 阅读 · 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 · 384 阅读 · 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 · 478 阅读 · 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 · 473 阅读 · 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 · 410 阅读 · 0 评论 -
LeetCode 21.合并两个有序链表
题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。分析定义result储存结果,将两个链表各自遍历一遍,每次各拿出一个结点比较,把较小的连接在result后面,直到至少有一个链表元素全用完,此时,将另一个链表剩余部分直接连接在当前结果后面。图解代码class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNo原创 2021-12-13 20:42:03 · 206 阅读 · 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 · 426 阅读 · 0 评论 -
LeetCode 367. 有效的完全平方数
有效的完全平方数原创 2021-12-08 21:12:28 · 170 阅读 · 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 · 137 阅读 · 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 · 394 阅读 · 0 评论