LeetCode题目总结
LeetCode题目总结
小镇攻城狮
吃饭的家伙要拿稳咯
展开
-
【优先队列】合并多个有序链表
原题连接【23. 合并K个升序链表】困难【786. 第 K 个最小的素数分数】困难思路优先队列# 抓住关键字:每一个链表都是有序的假设有如下3个链表1 -> 4 -> 51 -> 3 -> 42 -> 6比较每一个链表的头部元素,找到其中最小的节点,放入最终的结果中。然后依次重复上述的步骤,直到所有的链表都为null第一轮4 -> 51 -> 3 -> 42 -> 6res = [1]第二轮4 ->原创 2021-11-29 17:44:55 · 730 阅读 · 0 评论 -
【链表】lc141.判断链表是否有环
原题链接【141. 环形链表】简单【142. 环形链表 II】中等思路快慢双指针参考代码(Java)141public boolean hasCycle(ListNode head) { ListNode fast = head; ListNode slow = head; while(fast!=null && fast.next!=null){ fast = fast.next.next; slow = s原创 2021-10-26 12:20:58 · 110 阅读 · 0 评论 -
【二叉树】637. 二叉树的层平均值
原题链接题目描述给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。思路可以使用层序遍历,通过一个队列存储节点的值。使用一个for循环,遍历每一层。参考代码(Java)public class LC_637 { List<Double> res = new ArrayList<>(); public List<Double> averageOfLevels(TreeNode root) { bfs(root);原创 2021-07-01 11:06:31 · 1823 阅读 · 0 评论 -
【二叉树】671. 二叉树中第二小的节点
原题链接题目描述给定一个非空特殊的二叉树,每个节点都是正数,并且每个节点的子节点数量只能为 2 或 0。如果一个节点有两个子节点的话,那么该节点的值等于两个子节点中较小的一个。思路分析题干包含的信息:根节点就是最小值在递归方法中寻找比根节点大的,最小的节点即可参考代码1(Java)这种方式相当于穷举,遍历所有节点,然后找出第二小的节点。虽然也可以通过样例,但是更推荐第二种解法,更加好地使用了题干的信息。class Solution { int firstMin =原创 2021-06-28 16:16:50 · 129 阅读 · 0 评论 -
【二叉树】501. 二叉搜索树中的众数
原题链接题目描述给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。如果众数超过1个,不需考虑输出顺序思路看到二叉搜索树(BST),第一个反应就是要使用中序遍历。中序遍历后,得到一个非递减的集合,然后统计其中的众数即可。要注意第一个节点的处理方式集合只能转换成引用类型的数组,包括字符串数组、包装类数组,不能转换成基本类型数组,但是可以转换成基本类型的二维数组。参考代码(Java)public class LC_501 { public原创 2021-06-28 11:24:42 · 140 阅读 · 0 评论 -
【二叉树】257. 二叉树的所有路径
原题链接题目描述给定一个二叉树,返回所有从根节点到叶子节点的路径。思路这是一道难度为简单的题,直接DFS就能解出来。唯一要注意的就是递归的方法中,参数要传String类型,而不能是StringBuilder类型。因为String类型有变化时,都会新建一个变量;而StringBuilder会在原来的变量的基础上修改,导致统计路径时,路径节点有重复的参考代码(Java)public class LC_257 { List<String> res = new ArrayL原创 2021-06-28 10:09:06 · 129 阅读 · 0 评论 -
【LC周赛241】1865. 找出和为指定值的下标对
原题链接题目描述实现 FindSumPairs 类:FindSumPairs(int[] nums1, int[] nums2) 使用整数数组 nums1 和 nums2 初始化 FindSumPairs 对象。void add(int index, int val) 将 val 加到 nums2[index] 上,即,执行 nums2[index] += val 。int count(int tot) 返回满足 nums1[i] + nums2[j] == tot 的下标对 (i, j) 数目原创 2021-05-17 19:16:19 · 8839 阅读 · 0 评论 -
【LC周赛241】1864. 构成交替字符串需要的最小交换次数
原题链接题目描述给你一个二进制字符串 s ,现需要将其转化为一个 交替字符串 。请你计算并返回转化所需的 最小 字符交换次数,如果无法完成转化,返回 -1。交替字符串 是指:相邻字符之间不存在相等情况的字符串。例如,字符串 “010” 和 “1010” 属于交替字符串,但 “0100” 不是。任意两个字符都可以进行交换,不必相邻 。示例输入:s = “111000”输出:1解释:交换位置 1 和 4:“111000” -> “101010” ,字符串变为交替字符串。思路最终的字符串原创 2021-05-17 19:08:54 · 8970 阅读 · 0 评论 -
LeetCode题目索引
字符串:14.最长公共前缀原创 2021-01-30 07:59:12 · 132 阅读 · 0 评论