LeetCode
文章平均质量分 56
---SUN---
再小的帆也能远航
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【LeetCode】链表环路问题
141. 环形链表 142. 环形链表 II 141.如果链表中存在环,则返回 true 。 否则,返回 false 。 注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 输入:head = [1], pos = -1 输出:false 解释:链表中没有环。 解法一快慢指针 我们定义两个指针,一快一满。慢指针每次只移动一步,而快指针每次移动两步。初始时,慢指针在原创 2021-03-20 17:03:08 · 291 阅读 · 0 评论 -
【LeetCode】无重复字符的最长子串
无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 思路: 标签:滑动窗口 暴力解法时间复杂度较高,会达到 O(n^2),故而采取滑动窗口的方法降低时间复杂度。 定义一个 map 数据结构存储 (k, v),其转载 2021-03-19 10:38:23 · 200 阅读 · 0 评论 -
【LeetCode】拥有它构造二叉树不是梦(105,106,889题)
构造二叉树 想必大家都在为构造二叉树而烦恼。 这篇文章只用一种方法,解决知道两种遍历方式,构造二叉树。 105. 从前序与中序遍历序列构造二叉树 106. 从中序与后序遍历序列构造二叉树 889. 根据前序和后序遍历构造二叉树 这三道题目都有一个相同之处,就是要找出根节点来,然后针对这个根节点,不断地递归寻找本节点的左子树,右子树。 这三题的基本思想就是用map维护一下位置,然后进行不断地递归 105. 从前序与中序遍历序列构造二叉树 105题是知道前序中序构建 前序遍历 preorder = [3,9,2原创 2021-01-03 17:06:31 · 181 阅读 · 1 评论 -
【LeetCode】114. 二叉树展开为链表
114. 二叉树展开为链表 给 flatten 函数输入一个节点 root,那么以 root 为根的二叉树就会被拉平为一条链表。 我们再梳理一下,如何按题目要求把一棵树拉平成一条链表?很简单,以下流程: 1、将 root 的左子树和右子树拉平。 2、将 root 的右子树接到左子树下方,然后将整个左子树作为右子树。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AmlEfDpj-1609146257230)(https://i.loli.net/2020/12/28/ym7U原创 2020-12-28 17:04:49 · 200 阅读 · 0 评论 -
【LeetCode】347. 前 K 个高频元素
347. 前 K 个高频元素 先用hashMap保存频率 再用根据频率用堆排序 (最大频率堆) 获得前面的k个元素即可 class Solution { public int[] topKFrequent(int[] nums, int k) { HashMap<Integer, Integer> hashMap = new HashMap<>(); for (int num : nums) { hashMap.put(原创 2020-12-27 16:28:38 · 166 阅读 · 0 评论 -
【LeetCode】378. 有序矩阵中第K小的元素
378. 有序矩阵中第K小的元素 普通解法: class Solution { public int kthSmallest(int[][] matrix, int k) { ArrayList<Integer> list = new ArrayList<>(); for (int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].lengt原创 2020-12-27 15:07:42 · 209 阅读 · 0 评论 -
【LeetCode】寻找旋转排序数组中的最小值 II
154. 寻找旋转排序数组中的最小值 II 基础方法是我们排序一下(Arrays.sort),然后输出nums[0]即可; class Solution { public int findMin(int[] nums) { Arrays.sort(nums); return nums[0]; } } 二分解法: 判断mid处的值与r(右端点的值),旋转后还有一定的升序性。 假如nums[mid]>nums[r],说明最小值在mid的右边(或者自己)原创 2020-12-25 11:09:49 · 341 阅读 · 0 评论
分享