3 virgilshi

尚未进行身份认证

和舒适区说白白(ง'-')ง

等级
TA的排名 2w+

[LeetCode] 101. 对称二叉树

101. 对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?解题思路: 此题是《剑指offer》书上的题,虽然LeetCode标记的是esay,但是此题考查

2020-05-31 16:18:57

[LeetCode] 124. 二叉树中的最大路径和(深度优先遍历)

124. 二叉树中的最大路径和给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。解题思路: 本题题意是求解树中最大路径序列和(这里路径的定义是从一个节点到达另一个节点,不一定经过根节点),那么一条路径的形成是由节点、向左子树延展的路径、向右子树延展的路径组成,(这里延展的路径与我们常规理解的路径定义相同但不一定取整个直达叶子节点的全路径),那么想要题面定义的路径最长,只需左子树延展的路径和右子树延展路径均

2020-05-18 09:22:24

[LeetCode] 140. 单词拆分 II(DFS+记忆数组)

给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。解题思路:——————————本题打算详细记录一下解题的思考过程,后面写博客也力求这样写,一开始可能写的语言比较繁琐,后续力求精简,因为有时候会发现,解题思路比解题思路更能启发人,每一个简洁的解题思路背后都是对问题深度思考后的抽象,而这种抽象能力和思考问题的方式、

2020-05-16 21:22:18

[LeetCode] 384. 打乱数组(洗牌算法)

384. 打乱数组打乱一个没有重复元素的数组。示例:// 以数字集合 1, 2 和 3 初始化数组。int[] nums = {1,2,3};Solution solution = new Solution(nums);// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。solution.shuffle();// 重设数组到它的初始状态[1,2,3]。solution.reset();// 随机返回数组[1,2,3]打乱后的结果。solut

2020-05-15 15:12:29

[LeetCode] 560. 和为K的子数组(和值数组,哈希)

560. 和为K的子数组给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。解题思路: 本题一开始以为是用滑动窗口解题,但是在写代码的时候发现,整数数组的值有正有负,和值也不是单调的,因此窗口的收缩方向不好判断,于是换了种思路。此题的背景是求和,而且是求序列的连续子集和,那么为了降低时间复杂度,往往我们会将0到当前索引位置的和值求出来放在一个和值数组中,然后求某段子数组的和值,比如[i,j],只需计算SUM[i,j]=sum[j]-sum[i]+num[i],但是算法的时

2020-05-15 09:34:20

[LeetCode] 215. 数组中的第K个最大元素(快速排序、堆排序)

215. 数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。解题思路: 此题属于TOP Kth 类型图,这类型题有通用的解法,即快速排序、堆排序。堆排序// 此题常规的解法有两种,即快排、堆排序// C++中关于堆可以用数据结构priority_queue// 因此本题选择堆排序解题// Time: O(nlogk), Space:O(k)class Solution {public:

2020-05-14 19:40:09

[LeetCode] LeetCode中与有向图相关的题目总结

文章目录相关题743. 网络延迟时间相关题LeetCode中有向图相关的题的题号为:743,685,684,399,332,310,210743. 网络延迟时间有 N 个网络节点,标记为 1 到 N。给定一个列表 times,表示信号经过有向边的传递时间。 times[i] = (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的时间。现在,我们从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1。

2020-05-13 18:53:48

[LeetCode] 179. 最大数

179. 最大数给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。解题思路: 我们可以先研究一下排序规则,假设给定不是一组数而是两个数,我们想让这两个数组成的数最大,那么很自然的就想到用str(a)+str(b)与str(b)+str(a)的关系来决定是使用ab排序还是使用ba排序,那么对于一组数,我们也

2020-05-13 16:28:01

[LeetCode] 329. 矩阵中的最长递增路径

329. 矩阵中的最长递增路径给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。解题思路: 虽然此题标记的难度是难,但是设计好了图遍历的函数形式,解此题不太难,之前做题,尤其是做与路径统计的极值问题时,会发现设计一个号的函数形式,具体的说,是函数的形参和返回值的物理涵义,会非常有利于打开解题的思路。题目要求的是醉成递增路径,那么我们先分析一下,所有的路径一定是以图中某个点为起点,然后向四周延展,那么

2020-05-12 11:24:41

[LeetCode] 50. Pow(x, n) (快速幂)

50. Pow(x, n)实现 pow(x, n) ,即计算 x 的 n 次幂函数解题思路: 快速幂应该是算法题中非常常规的一道题,如果我们用迭代相乘求幂,时间复杂度为O(n),如果这样解就不叫快速求幂了。快速幂解法的时间复杂度为O(log(n)),采用递归相乘的解法,利用的公式是,当n为奇数时,x2n+1=xn∗xn∗xx^{2n+1}=x^n*x^n*xx2n+1=xn∗xn∗x,当n为偶数时,x2n=xn∗xnx^{2n}=x^n*x^nx2n=xn∗xn,xnx^nxn计算出来后,可以直接计算

2020-05-11 17:36:33

[LeetCode] 93. 复原IP地址

93. 复原IP地址给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]解题思路: 此题依然是考察回溯算法,回溯算法的解法我在上一题中已经阐述了基本的解题思路和解法规范,这里不再赘述,可以直接看这题中归纳的回溯算法的基本思路。这题在考虑回溯算法的同时也要考虑相

2020-05-10 09:33:37

[LeetCode] 17. 电话号码的字母组合(回溯算法)

17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。解题思路: 看到组合排列之类的题,基本上想到的是用深度优先遍历中回溯算法解题,这个应该形成条件反射,然后视题目对算法时间的要求再考虑是否需要做剪枝操作。回溯算法的特征是,维护一条可伸缩的路径,比如我代码中使用的string out,然后在递归深入的时候push元素,在递归退出即回溯的时候,pop元素,回溯算法基本是按照这种方式解题的,然后剪

2020-05-10 08:18:26

[工具]格式化程序代码 - Astyle

通常,我们写代码把程序调通、功能实现,作为一个学生来说,已经足够了,但是如何在代码风格上能够美观一点,那就非常好了。代码风格即可以在写代码的时候手工调整,也可以设置一定的样式,使用工具调整,下面我们介绍一下如何利用工具进行程序代码格式化.参考文献[1] Astyle编程语言格式化工具的中文说明[2] Astyle格式化代码-最好的选项[3] Astyle Download for Lin...

2020-05-10 08:03:32

[LeetCode] 总结 - 盛水容器题

相关题:42. 接雨水[]

2020-05-06 21:09:12

[LeetCode] 407. 接雨水 II

407. 接雨水 II给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。示例:给出如下 3x6 的高度图:[ [1,4,3,1,3,2], [3,2,1,3,2,4], [2,3,3,2,3,1]]返回 4 。如上图所示,这是下雨前的高度图[[1,4,3,1,3,2],[3,2,1,3,2,4],...

2020-05-06 21:00:23

[LeetCode] - 42. 接雨水(单调栈)

42. 接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。解题思路: 此题给出2种解法。单调栈这题是典型的单调栈解法,我们维护一个单调递减栈,当发现height[i]大于栈顶元素时,说明有可能形成水坑,这个水坑的高度等于左右柱子中较低的柱子与水坑底部的高度差。class Solution {public: int tr...

2020-05-06 15:24:30

[LeetCode]11. 盛最多水的容器

11. 盛最多水的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。解题思路: 本题要求的是找两个柱子,使两个柱子盛的水最多,最简单的方法是采取暴...

2020-05-06 12:29:12

[LeetCode]98. 验证二叉搜索树

98. 验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ ...

2020-05-05 14:20:08

[工具]有道云笔记

声明:这里使用的方法,仅是为更合理和舒服的使用有道云,如果希望更完美的服务,还是需要付费的.有道云笔记是一款非常好的Markdown笔记客户端,但是有道云贴图片需要开通VIP,但是如果我们不需要多客户端共享笔记,或者说,只是希望在本地浏览Markdown笔记,那么此时贴图片链接可以用下面方法进行;有道云还有个缺点是,右下角经常弹出广告,我们也可以用下面列出的方法将广告进行屏蔽。有道云笔记插入图...

2020-05-05 10:50:10

[存储]《存储技术基础2020》课程笔记

《存储技术基础2020》课程笔记这是清华大学《存储技术基础2020》视频的课程笔记.[存储] P4 Main Memory 主存[存储] P5 Main Memory(NVM)

2020-05-03 21:24:49

查看更多

勋章 我的勋章
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。