logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【数据结构-堆】【hard】力扣23. 合并 K 个升序链表

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

文章图片
#数据结构#leetcode#链表
【单调栈】力扣1130. 叶值的最小代价生成树

在所有这样的二叉树中,返回每个非叶节点的值的最小可能总和。解释:有两种可能的树,第一种的非叶节点的总和为 36 ,第二种非叶节点的总和为 32。最高效的O(n)做法,从凌晨12点做到凌晨三点半,还是没想通,以后补题解。数组 arr 中的值与树的中序遍历中每个叶节点的值一一对应。每个非叶节点的值等于其左子树和右子树中叶节点的最大值的乘积。如果一个节点有 0 个子节点,那么该节点为叶节点。每个节点都有

文章图片
#leetcode#算法#职场和发展
【动态规划-分组背包】力扣1155. 掷骰子等于目标和的方法数

当我们已经确定了某个骰子i的时候,在他之前的前i-1个骰子,已经记录到了可能产生的目标和中,所以我们在计算第i个骰子可能产生的目标和的时候,是依赖于之前骰子产生的目标和。首先我们先遍历每个骰子,也就是遍历i,然后接着倒序循环从target到0的目标和,并且在每次第二层循环的时候,令dp[j] = 0,最后循环骰子可能的点数x。中,dp[j]代表的是可能产生的目标和,这取决于这次骰子的点数x,dp[

文章图片
#动态规划#leetcode#算法
【数据结构-二维前缀异或和】【分区算法优化】力扣1738. 找出第 K 大的异或坐标值

计算二维前缀和的时间复杂度为 O(mn),快速选择找出第 k 大的元素的期望时间复杂度为 O(mn),最坏情况下时间复杂度为 O((mn) ^2 ),因此总时间复杂度为 O(mn)。计算二维前缀和的时间复杂度为 O(mn),排序的时间复杂度为 O(mnlog(mn)),因此总时间复杂度为 O(mnlog(mn))。最后,将枢轴元素与分区位置 i+1 处的元素交换,从而确保左边的所有元素都大于或等于

文章图片
#算法#数据结构#leetcode
【数据结构-栈】力扣844. 比较含退格的字符串

使用了栈的方法,我们定义了两个新字符串res1和res2来记录s和t进行计算后的最终结果,最后看res1和res2是否相等。当s或t字符串中的字符不为#的时候,就将他推入到我们构造的新字符串中,如果字符为#,我们还要判断他是否为空,如果不为空的话,那么就将重构字符串的最后一个字符弹出。输入:s = “ab#c”, t = “ad#c”输入:s = “ab##”, t = “c#d#”解释:s 会变

文章图片
#数据结构#leetcode#算法
【数据结构-二维前缀和】【列维护优化】力扣3212. 统计 X 和 Y 频数相等的子矩阵数量

我觉得列优化的核心思路是,由于在计算前缀和中,之前的列字符数都会被用到,也就是说在遍历不同行的时候,列的字符数是在前一行的列的字符数加上目前行的字符数得来的。所以在每一行遍历的时候,置s1和s2为0,然后逐渐累加,可以看作这个前缀和矩阵,随着列的遍历,一条条竖下来的元素铺成一个前缀和矩阵,最后进行统计X和Y相等的频数。输入: grid = [[“X”,“Y”,“.”],[“Y”,“.”,“.”]]

文章图片
#数据结构#leetcode#矩阵
【数据结构-队列】力扣641. 设计循环双端队列

需要注意的是,在题解中,rear指向的是插入的位置,而front指向的是队列头元素的位置,所以在插入队头元素的时候要先移动front再插入,而插入队尾元素的时候先插入再移动rear。如果操作成功返回 true ,否则返回 false。boolean isEmpty() :若双端队列为空,则返回 true ,否则返回 false。boolean isFull() :若双端队列满了,则返回 true

文章图片
#数据结构#leetcode#java
【数据结构-前缀异或和】1442. 形成两个异或相等数组的三元组数目

首先第一个哈希表cnt是用来在遍历k,计算k+1的前缀异或和的时候,是否有对应的 i 的前缀异或和一样。那么在遍历 k 的时候,就可以根据当前的前缀异或和来查找之前相同前缀异或和的个数cnt[s ^ val]。解释:满足题意的三元组分别是 (0,1,2), (0,2,2), (2,3,4) 以及 (2,4,4)输入:arr = [7,11,12,9,5,2,7,17,22]输入:arr = [2,

文章图片
#数据结构#算法
【数据结构-哈希前缀】力扣2845. 统计趣味子数组的数目

但是由于使用数组vector的索引访问速度比 unordered_map更快,因为它是连续内存块,而 unordered_map 需要计算哈希值并进行冲突处理,所以使用数组的效率会更高。在范围 [l, r] 内,设 cnt 为满足 nums[i] % modulo == k 的索引 i 的数量。输入:nums = [3,1,9,6], modulo = 3, k = 0。输入:nums = [3,

文章图片
#数据结构#哈希算法#leetcode
【数据结构-栈】力扣682. 棒球比赛

比赛开始时,记录是空白的。“+” - 记录加 9 + 5 = 14 ,记录现在是 [5, -2, -4, 9, 5, 14]“+” - 记录加 -4 + 9 = 5 ,记录现在是 [5, -2, -4, 9, 5]输入:ops = [“5”,“-2”,“4”,“C”,“D”,“9”,“+”,“+”]“D” - 记录加 2 * -2 = -4 ,记录现在是 [5, -2, -4]“9” - 记录加

文章图片
#数据结构#leetcode#算法
    共 14 条
  • 1
  • 2
  • 请选择