
LeetCode
小南的学习笔记
这个作者很懒,什么都没留下…
展开
-
二叉搜索树中第K小的元素
我们可以根据中序遍历,设置计数器,每经过一个结点计数器加一,达到第K个元素时输出即可。# 二叉搜索树中第K小的元素。原创 2022-12-10 21:36:25 · 194 阅读 · 0 评论 -
【LeetCode】【Java】买卖股票的最佳时机||
给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。示例 1:示例 2:示例 3:提示:1原创 2022-11-19 10:19:10 · 281 阅读 · 0 评论 -
【LeetCode】【Java】删除排序数组中的重复项
使用快慢指针,慢指针代表没有重复数字的末尾,快指针寻找不同数字,由于是有序的,所以快指针寻找到的不同数字不会再次出现到有序序列中。原创 2022-11-19 10:18:05 · 216 阅读 · 0 评论 -
【LeetCode】【Java】 最小公倍数为 K 的子数组数目
tp < k 只有当前子数组的第一个元素可能出现该情况,最小公倍数不是k,但是可能和后续元素一起可能构成最小公倍数,需要跳过。一开始我被困扰在求子数组上了,其实利用两个for循环就可以解决,至于最小公倍数的求解,可以通过求最大公约数间接求最小公倍数。当遍历中,在连续的子数组中,有一个数不符合后,就跳出内循环,从起始位置i的下一个元素开始,外层for循环是确定每次遍历的起始位置i,内层for循环是求从i开始的所有子数组,题目给出了两个关键条件,求最小公倍数,求子数组,明确问题,接下来就是求解了。原创 2022-11-14 20:13:10 · 1059 阅读 · 0 评论 -
【LeetCode】【Java】两数相加
明白题意,思路其实很简单,就是利用链表的特性进行求解,我们可以用循环来遍历两个链表,当其中一个链表不为null时,我们就可以求和,把求到的结果存到新的链表中,最后返回链表的头结点即可。题目首先给出了几个关键条件,“非空链表”、“表示两个非负整数”、“逆序存储”、每个结点存储一位“、”两数相加“,其中比较关键的信息是。,为什么要用逆序存储呢?题目最终让求两数相加,我们平时在进行加法运算时,都是从。,这样也符合链表的顺序,便于求解,否则我们还要将两个链表反转再相加。,那么题目说逆序存储,那么我们。原创 2022-11-07 19:46:40 · 282 阅读 · 0 评论 -
【LeetCode】【Java】有效的数组
通过用三个数组res存每个数字出现的次数(1-9),每个数只能最多出现一次,在每行、每列、每个块中,遇到空格(.)需要跳过,我们可以判断其ASCII码即可(.的ascii是46),每个数出现的次数,通过使用数字字符的ASCII码减去48,把49到57映射到1-9,方便计数。的三个必要条件,我们只需要判断数独是否符合这三个条件即可,最容易想到的就。原创 2022-11-04 19:59:08 · 157 阅读 · 0 评论 -
【LeetCode】【Java】最大子序和
确定dp数组及下标含义原创 2022-10-26 16:41:27 · 338 阅读 · 1 评论 -
【LeetCode】【Java】【买卖股票的最佳时机】
price[i]+dp[i-1][0]:第i天卖出股票,那么第i天的现金就为卖出股票的现金加上i-1天持有股票的现金数。由于dp[i-1][0]和dp[i-1][1]都是从第一列推出的,所以初始化dp[0][0]和dp[0][1]即可。-price[i]:第i-1天不持有现金,那么第i天的现金就为第i的买股票后剩余的现金数。dp[i-1][0]:第i-1天就持有股票,那么第i天的现金就为第i-1天的现金数。dp[i-1][1]:第i-1天不持有股票,那么第i天的现金就为昨天的现金数。原创 2022-10-26 10:50:54 · 413 阅读 · 0 评论 -
【LeetCode】【JAVA】P102 二叉树的层序遍历
用数组把0-9,每个数字所需要的火柴棒数保存下来,序号是数字,值是该数字需要的火柴棒数,使用双重循环遍历0-9,判断n-4-arr[i]-arr[j]==arr[i+j],但是我并没有把火柴棒组成的所有数字的表给求出来,我只遍历了0-9,所以就没有办法过全部数据。(由于最大24根,减去符号4根,也就是还有20根可以组成三个数,一个为0(需要6根),剩余14根可以组成的最大数为711,需要7根),再通过双重循环遍历。原创 2022-10-23 10:49:48 · 215 阅读 · 0 评论