
刷题笔记
文章平均质量分 94
记录一些leetcode和牛客的题的解题思路和代码~
芋泥*
方寸之间,大有可为
展开
-
【leetocde】Map&Set的应用
map.getdefault(nums[i],0)+1):查找nums[i]对应的value,不存在返回默认值0,存在返回原来存在的值,然后再加1;map.get(node).next是即将要连接的位置,map.get(node.next)是下了一个节点的位置。指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。节点组成,其中每个新节点的值都设为其对应的原节点的值。,返回其中的多数元素。原创 2023-04-07 12:54:24 · 492 阅读 · 5 评论 -
【leetcode】Top-k问题
比比如:专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。对于Top-K问题,能想到的最简单直接的方式就是排序,但是:如果数据量非常大,排序就不太可取了可能数据都不能一下子全部加载到内存中)。最佳的方式就是用堆来解决,基本思路如下:1.前k个最大的元素,则建小堆前k个最小的元素,则建大堆2.将剩余N-K个元素依次与堆顶元素比完之后,堆中剩余的K个元素就是所求的前K个最小或者最大的元素。原创 2023-04-05 11:53:08 · 1042 阅读 · 6 评论 -
【leetcode】二叉树(2)
b. 取栈顶元素,该元素取到后,其左子树要么为空,要么已经遍历,可以直接遍历该节点,对于该节点,其左子树已经遍历,该节点也已经遍历,剩余其右子树没有遍历,将其左子树当成一棵新的树开始遍历,继续a步骤。b. 取栈顶元素,该元素取到后,其左子树要么为空,要么已经遍历,可以直接遍历该节点,对于该节点,其左子树已经遍历,该节点也已经遍历,剩余其右子树没有遍历,将其左子树当成一棵新的树开始遍历,继续a步骤。(2)如果树非空:从根节点位置开始遍历,但此时根节点不能遍历,因为中序遍历规则:左子树、根节点、右子树。原创 2023-03-29 21:16:07 · 999 阅读 · 2 评论 -
【leetocde】二叉树
(3)如果两棵树都不为空,先检测两棵树的root是否相同,如果相同,再检测一个的left是否为另一个的right 并且一个的right是否为另一个的left。(2)如果两棵树相同,也可以认为是子树,因此:只要根节点相同,直接检测root和subRoot是否为相同的树即可。(3)如果两棵树都不为空,先检测根是否相同,根如果相同再递归检测两棵树的左子树以及右子树是否都相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。(2)如果两棵树一个为空,一个不为空,则不相同。原创 2023-03-28 16:53:10 · 450 阅读 · 10 评论 -
【leetcode】栈与队列
我们可以按以下顺序执行: push(1), push(2), push(3), push(4), pop() -> 4, push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1。入栈:先将元素放入a队列中,如果b不空,将b中所有元素导入到a中。(1)利用两个栈,一个为正常栈(保存所有的进出栈数据),一个为最小栈(只有当数据为最小时,才会入栈)(2)核心在于:入栈时,若数据最小,需要两个栈都要入栈,出栈时,如果出的数据为最小,需要更新最小栈。原创 2023-03-27 16:32:52 · 552 阅读 · 5 评论 -
【leetcode】链表(2)
因此我们只需要对链表进行一次遍历,就可以删除重复的元素。快指针走两步,慢指针走一步,如果链表带环,两个最终肯定会在环内相遇;快慢指针,慢指针走一步,快指针走两步,当快指针走到链表最后一个或走到空时,慢指针走到中间节点。指针再次到达,则链表中存在环。先求出链表长度,再除以2,就是中间节点的位置了,从链表头遍历到该位置再返回。该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。原创 2023-03-26 22:40:41 · 721 阅读 · 4 评论 -
【leetcode】链表(1)
请注意相交节点的值不为 1,因为在链表 A 和链表 B 之中值为 1 的节点 (A 中第二个节点和 B 中第三个节点) 是不同的节点。换句话说,它们在内存中指向两个不同的位置,而链表 A 和链表 B 中值为 8 的节点 (A 中第三个节点,B 中第四个节点) 在内存中指向相同的位置。(1)创建两个新的链表,一个链表的头节点为smallHead,存储小于x的节点,smallTail指向smallHead这个链表的最后一个;(1)找到链表的中间节点,然后从中间节点位置断开链表,形成两个链表A和B。原创 2023-03-26 17:47:27 · 638 阅读 · 5 评论 -
【leetcode】数组
nums0n输入:[3,0,1]输出:2输入:[9,6,4,2,3,5,7,0,1]输出:8。原创 2023-03-21 17:03:13 · 737 阅读 · 5 评论