![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
文章平均质量分 56
---SUN---
再小的帆也能远航
展开
-
【LeetCode】链表环路问题
141. 环形链表142. 环形链表 II141.如果链表中存在环,则返回 true 。 否则,返回 false 。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。输入:head = [1], pos = -1输出:false解释:链表中没有环。解法一快慢指针 我们定义两个指针,一快一满。慢指针每次只移动一步,而快指针每次移动两步。初始时,慢指针在原创 2021-03-20 17:03:08 · 190 阅读 · 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 · 116 阅读 · 0 评论 -
【LeetCode】拥有它构造二叉树不是梦(105,106,889题)
构造二叉树想必大家都在为构造二叉树而烦恼。这篇文章只用一种方法,解决知道两种遍历方式,构造二叉树。105. 从前序与中序遍历序列构造二叉树106. 从中序与后序遍历序列构造二叉树889. 根据前序和后序遍历构造二叉树这三道题目都有一个相同之处,就是要找出根节点来,然后针对这个根节点,不断地递归寻找本节点的左子树,右子树。这三题的基本思想就是用map维护一下位置,然后进行不断地递归105. 从前序与中序遍历序列构造二叉树105题是知道前序中序构建前序遍历 preorder = [3,9,2原创 2021-01-03 17:06:31 · 119 阅读 · 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 · 143 阅读 · 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 · 105 阅读 · 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 · 135 阅读 · 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 · 236 阅读 · 0 评论