logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【数据结构-堆】力扣703. 数据流中的第 K 大元素

这道题目需要我们返回第k大元素,那么我们是不是可以构建一个最小堆,让最小堆的大小最大为k,那么最小堆的队头就是第k大的元素(从尾往头数第k个)。那么我们每次调用add,就push一个数到q中,最小堆q会进行排序,如果q大小超过k,那么就弹出队头元素使得q的大小为k,然后再返回。KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。输出:[null

文章图片
#数据结构#leetcode#算法
【数据结构-Trie树】力扣720. 词典中最长的单词

构造完字典树后,我们从树的根节点开始递归,用longest来记录最长的单词,我们在递归中只有子节点不是空指针,并且子节点的isEnd是true的时候,才会将递归子节点。也就是说,node和wd是在检验没问题后才传入递归函数,而longest需要与当前的单词wd进行比较,如果wd长度更长,则更新longest,如果wd长度等于longest并且字典序更小,也更新longest。输入:words =

文章图片
#数据结构#leetcode#c#
【数据结构-前缀哈希】力扣523. 连续的子数组和

当发现有两个余数相同的key的时候,对他们value作差,如果大于等于二,说明该子段长度大于等于二,这时候就找到了一个好的子数组,返回true,如果到最后都没有找到这样一个好的子数组,返回false。,其中 m 是数组 nums 的长度。解释:[23, 2, 6, 4, 7] 是大小为 5 的子数组,并且和为 42。输入:nums = [23,2,6,4,7], k = 13。输入:nums =

文章图片
#哈希算法#数据结构#leetcode
【数据结构-前缀哈希】力扣1124. 表现良好的最长时间段

表现良好的时间段”有两种情况,一种是当前的sum能在哈希表中匹配到sum - 1时(如果是匹配sum的话,这个子段是「劳累的天数」等于「不劳累的天数」。这一题前缀+哈希并不是空间最优,最优空间是使用贪心+栈的做法,虽然空间复杂度都是O(n),但是实际的空间使用可能高于 O(n),因为当哈希表需要扩展时,会预留更多的空间以减少哈希冲突。所谓「表现良好的时间段」,意味在这段时间内,「劳累的天数」是严格

文章图片
#哈希算法#数据结构#leetcode
【数据结构-栈】【贪心】力扣2434. 使用机器人打印字典序最小的字符串

我们可以思考,将t想象成一个栈,先进后出,然后当栈顶元素的值,也就是t的末尾的值比字符串s中的任何一个字符都要小的时候,那么我们就要将栈顶元素推入p中,也就是写出来的字符串,这样才能保证最小字典序列。,由于0代表a,1代表b…执行第一个操作四次,得到 p=“” ,s=“” ,t=“bdda”。执行第一个操作三次,得到 p=“” ,s=“” ,t=“zza”。执行第一个操作,得到 p=“ab” ,s

文章图片
#数据结构#leetcode#机器人
【数据结构-邻项消除】力扣735. 小行星碰撞

这道题的思路就是,我们遍历数组asteroids,将里面的所有元素一一与栈顶元素比对,如果遍历的元素a是负数,那么就会不断和栈中的元素进行比对,只要栈顶元素是正数且绝对值小于a,则会爆炸,也就是弹出栈,直到a遇到比自己大的反方向的行星自己爆炸或者栈顶的行星方向与自己相同,则停止while循环(因为当遇到和自己同方向的行星,说明栈中现有的行星没有反方向的),这时候如果行星没有发生爆炸,还存在,那么就

文章图片
#数据结构#leetcode#算法
【数据结构-栈】力扣155. 最小栈

由于是栈是先进后出的原则,每次push的时候,我们要把元素push到x_stack中,然后将最小栈的栈顶元素和当前元素比较,push最小的元素,所以最小栈的栈顶始终是x_stack中的最小元素。:对于题目中的所有操作,时间复杂度均为 O(1)。因为栈的插入、删除与读取操作都是 O(1),我们定义的每个操作最多调用栈操作两次。最坏情况下,我们会连续插入 n 个元素,此时两个栈占用的空间为 O(n)。

文章图片
#数据结构#leetcode
【数据结构-一维差分】力扣2848. 与车相交的点

给你一个下标从 0 开始的二维整数数组 nums 表示汽车停放在数轴上的坐标。对于任意下标 i,nums[i] = [starti, endi] ,其中 starti 是第 i 辆车的起点,endi 是第 i 辆车的终点。解释:1、2、3、5、6、7、8 共计 7 个点满足至少与一辆车相交,因此答案为 7。解释:从 1 到 7 的所有点都至少与一辆车相交,因此答案为 7。输入:nums = [[3

文章图片
#数据结构#leetcode#算法
【数据结构-单调队列】力扣2762. 不间断子数组

例子:[1, 2]包含[1],[2],[1, 2]共1+2=3个有效子数组,新增一个元素得到[1, 2, 1]后,包含[1], [2], [1], [1, 2], [2, 1], [1, 2, 1]共1+2+1=6个有效子数组。推导:长为1的窗口共包含1个不同的子数组,长为2的窗口共包含1+2=3个不同的子数组,长为n的窗口共包含1+2+…首先:对于某个以nums[i]为左端点,nums[j]为右

文章图片
#数据结构#leetcode#算法
【数据结构-堆】【hard】力扣23. 合并 K 个升序链表

这道题是关于链表的题,题目要求合并k个升序链表,实际上我们就可以有这么一个思路:我们将每个链表的元素都丢入小根堆中,然后将小根堆的元素依次组成一个新的链表。由于题目中已经升序排列好每个链表,也就是说每个链表的头节点的val是链表中最小的。:考虑优先队列中的元素不超过 k 个,那么插入和删除的时间代价为 O(logk),这里最多有 kn 个点,对于每个点都被插入删除各一次,故总的时间代价即渐进时间复

文章图片
#数据结构#leetcode#链表
    共 26 条
  • 1
  • 2
  • 3
  • 请选择