![](https://img-blog.csdnimg.cn/8912dad158534d4c816996e4bcf7a0f3.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
LeetCode每日一题
文章平均质量分 60
量变才能质变
小俱的一步步
莫忧莫惧莫回头
展开
-
[leetCode]257. 二叉树的所有路径(两种方法)
如果当前节点是叶子节点,则在当前路径末尾添加该节点后我们就得到了一条从根节点到叶子节点的路径,将该路径加入到答案即可。如果当前节点不是叶子节点,则在当前的路径末尾添加该节点,并继续递归遍历该节点的每一个孩子节点。求当前节点为根节点的路径可以划分为其左子树和右子树的路径加上当前节点的值。核心思想:将大问题转换为小问题——>,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。原创 2023-11-26 22:11:01 · 397 阅读 · 6 评论 -
LCR 013. 二维区域和检索 - 矩阵不可变(java)
题目求子矩阵元素的和,首先想到的是暴力解法,两个for循环,将矩阵中的元素遍历相加,但是超出了时间限制。将暴力求和优化:思路:创建一个新的矩阵sums,每个元素表示该位置到已知矩阵[0, 0],元素的和,为了减少边界的判断,直接创建比原来矩阵多一行一列的sums的矩阵:图解:原创 2023-09-22 16:52:20 · 238 阅读 · 6 评论 -
LeetCode454. 四数相加 II+15. 三数之和
使用Map集合,四组数分为两组(两组的时间复杂度都为O^2),每组数相加,将所加得到的值存在Map中的键,将值存出现的次次数,在相加后两组数组时,判断是否Map中存有负的两数之和,若有将其值累加,得到答案。输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]原创 2023-06-23 22:02:57 · 427 阅读 · 1 评论 -
LeetCode24. 两两交换链表中的节点+19. 删除链表的倒数第 N 个结点
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。1.非递归:解题思路:创建虚拟头结点,方便第一个节点的操作,首先要记录两个数交换后连接的节点,再进行交换、连接。2.递归:删除链表的倒数第 N 个结点题目描述:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。使用快慢指针找到倒数第n个节点,由于删除节点,因此将指针指向删除节点的前一个节点。首先,快慢指同时指向虚拟头结点(方便删除头原创 2023-06-21 18:03:47 · 195 阅读 · 3 评论 -
LeetCode[动态规划]746.使用最小花费爬楼梯+198.打家劫舍
每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。由于题目表述可以从下标为 0 或下标为 1 的台阶开始爬楼梯,因此在0或1下标下,不花费体力,初始值dp[0] =0, dp[1] = 0;偷窃到的最高金额 = 1 + 3 = 4。dp[i-2]+cost[i-2]:表示上一次跳了两步到达i层,每次取两者最小的,可求出最地的花费。情况二,第i个偷,则第i-1个不偷,最高金额可能为dp[i-2]+nums[i]。原创 2023-05-30 20:21:40 · 517 阅读 · 1 评论 -
leetcode88.合并两个有序数组
为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。思路:创建一个临时数组,分别遍历两个数组,并比较两元素的大小,小的添加到临时数组中,最后将临时数组赋给nums1。输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。解释:需要合并 [1,2,3] 和 [2,5,6]。原创 2023-05-24 09:46:47 · 584 阅读 · 0 评论 -
Leetcode 448.找到所有数组中消失的数字
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围。但没有出现在 nums 中的数字,并以数组的形式返回结果。原创 2023-05-10 23:55:50 · 103 阅读 · 0 评论 -
leetcode 70.爬楼梯+209.长度最小的子数组
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr],并返回其长度。当楼梯阶数大于2时,第一种:第一步爬1阶;第二种:第一步爬2阶。爬过一阶后,可以当做又是第一步爬。思路:开始用的双循环暴力枚举,结果超时了,改用滑动窗口法。子数组 [4,3]是该条件下的长度最小的子数组。你有多少种不同的方法可以爬到楼顶呢?1. 1 阶 + 1 阶 + 1 阶。有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。原创 2023-05-07 22:42:37 · 366 阅读 · 1 评论 -
LeetCode1047. 删除字符串中的所有相邻重复项
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。4.将待压入栈的字符与栈顶元素比较,相同时将栈顶元素弹出,不同时将待压栈字符压栈。是一个数组拷贝方法,可以将一个数组中的一部分拷贝到一个新数组中。5.遍历结束,返回栈中元素的倒序。原创 2023-05-03 21:22:51 · 811 阅读 · 1 评论