5 SunAlwaysOnline

尚未进行身份认证

我要认证

开始工作的第2年!

等级
TA的排名 1k+

带你一步一步认识跳跃链表

一、链表单链表是一种很常见的数据结构,其进行查找时,需要从头开始遍历,直到查找到指定的值,因此查找的时间复杂度为O(n)。双链表在单链表的基础上,为每个结点增加前驱指针(pre)。那么在查找的时候,可以从两头开始遍历。因此双链表的查询效率高于单链表,不过其实在使用率上,单链表的使用率远远高于双链表。具体原因可以先移步我的另外一篇文章谈谈单链表和双链表...

2020-10-24 15:04:16

【leetcode.101】对称二叉树

一、题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的:进阶:你可以运用递归和迭代两种方法解决这个问题吗?二、思路所谓对称二叉树,即如下图所示:那么,对于任意一对结点p、q,都有这样的性质:p.left.val=q.right.val,p.right.val=q.left.val如果使用递归,我们大可以写出一个判断两个互为镜像位...

2020-10-15 20:04:56

【leetcode.160】相交链表,很有意思的一道题

一、题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表

2020-10-13 17:58:20

【Mysql】图解左、右、内与全连接

一、左连接二、右连接三、内连接四、外连接

2020-10-10 11:27:35

【leetcode.876】链表的中间结点

一、题目描述给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.n..

2020-10-07 22:01:36

【leetcode.191】位1的个数

本文转载自https://leetcode-cn.com/problems/number-of-1-bits/solution/wei-1de-ge-shu-by-leetcode/一、题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011中,共有三位为 ..

2020-10-02 17:14:54

HashMap夺命连环问

1、说说HashMap的结构在JDK7时,采用数组+链表结构在JDK8时,采用数组+链表+红黑树的结构,在一定条件下,链表会转化为红黑树。以上图来源于:https://blog.csdn.net/goosson/article/details/810297292、数组和链表的用处是什么数组用来随机查找,能够根据hash值快速定位到Node的位置。链表是用来解决hash冲突的,多个元素定位到同一个Node时,用链表将它们顺序串起来。3、为什么要转红黑树单链表的查询时间复

2020-09-30 17:08:33

【leetcode.3】无重复字符的最长子串

一、题目描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke"是一个子序列...

2020-09-30 11:41:34

这样写代码,直接被主管撵出去

一、简化if、else减少if、else判断的分支。当条件简单时,可以直接return一个表达式。优化前: //判断该数是否是正数 public boolean isPositive(int num) { if (num > 0) { return true; } else { return false; } }优化后: //判断该数是否是正数 p

2020-09-29 18:03:37

【leetcode.547】朋友圈(形象生动讲解并查集)

本文转载自Union-Find 算法详解今天讲讲 Union-Find 算法,也就是常说的并查集算法,主要是解决图论中「动态连通性」问题的。名词很高端,其实特别好理解,等会解释,另外这个算法的应用都非常有趣。说起这个 Union-Find,应该算是我的「启蒙算法」了,因为《算法4》的开头就介绍了这款算法,可是把我秀翻了,感觉好精妙啊!后来刷了 LeetCode,并查集相关的算法题目都非常有意思,而且《算法4》给的解法竟然还可以进一步优化,只要加一个微小的修改就可以把时间复杂度降到 O(1)。废话

2020-09-28 14:51:56

【leetcode.200】岛屿数量

一、题目描述给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0','0']]输出:1示例2:输入:[['1','1','0','...

2020-09-27 19:44:50

【leetcode.235】二叉搜索树的最近公共祖先

一、题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root =[6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出...

2020-09-27 13:52:39

【leetcode.106】从中序与后序遍历序列构造二叉树

一、题目描述根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:二、思路思路来源于图解构造二叉树之中序+后序,画得图是真心棒前提解决此问题的关键在于要很熟悉树的各种遍历次序代表的什么,最好能够将图画出来。本题解带你先进行中序遍历和后续遍历二叉树,然后再根据遍历结果将二叉树进行还原。首先,来.

2020-09-25 16:18:23

【leetcode.232】用栈实现队列

一、题目描述使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false...

2020-09-24 21:29:30

【leetcode.347】前 K 个高频元素

一、题目描述给定一个非空的整数数组,返回其中出现频率前k高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) ,n是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任...

2020-09-24 20:47:18

【leetcode.226】翻转二叉树

一、题目描述翻转一棵二叉树。示例:二、题目背景Homebrew的作者Howell去面试谷歌惨遭拒绝,因为他不会翻转二叉树,即使谷歌公司90%的工程师都在使用他写的软件。之后LeetCode把这道题纳入了题库,并将难度标记为简单题...我要是会了这道题,那我可以进谷歌啊?当然,把这件事当做一个小故事看看算了。企业拒绝一个人才的原因有很多,我在知乎上看到一些很有意思的回答。如何评价 Homebrew 作者因为不会在白板上翻转二叉树而被谷歌面试拒绝?三、思路在这里放

2020-09-24 16:34:43

【leetcode.108】将有序数组转换为二叉搜索树

一、题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:二、思路二叉搜索树,即对于其中任何一个结点node,其左子树上的节点值都小于等于node值,其右子树上的结点都大于等于node值,那么其中序遍历正好就是一个升序数组。题目要求这棵树是一个平衡树,因此树中任意一个节点左右两个子树的高度差不可以超过1。所以我们可以将数组最中间元素或紧靠中间左右两边的元素(即nums[.

2020-09-24 14:02:35

【leetcode.617】合并二叉树

一、题目描述给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:注意:合并必须从两个树的根节点开始。二、思路使用深度优先策略,遍历两颗二叉树的同一个位置,会出现以下情况两个节点都为null,则合并后的节点也为null两个节点都不为null,则创建一个新的节点,其值为...

2020-09-23 17:38:48

【leetcode.559】N叉树的最大深度

一、题目描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个3叉树:我们应返回其最大深度,3。说明:树的深度不会超过1000。 树的节点总不会超过5000。二、思路采用深度优先搜索,递归获取子节点的最大深度,接着更新maxRootDepth即可。该方案的时间复杂度为O(N),N代表节点总数,空间复杂度为O(1)。 public int maxDepth(Node root) { ...

2020-09-23 15:06:15

【leetcode.198】打家劫舍

一、题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。...

2020-09-23 13:50:34

查看更多

勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到王者
    签到王者
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享精英
    分享精英
    成功上传11个资源即可获取