LeetCode-120 三角形最小路径和
三角形最小路径和题目描述给定一个三角形 triangle ,找出自顶向下的最小路径和。
每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。
数据样例示例 1:
12345678输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]输出:11解释:如下面简图所示: 2 3 4 6 5 74 1 8 3自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。
示例 2:
12输入:triangle = [[-10]]输出:-10
提示:
$1 \leq triangle.length \leq 200$
$triangle[0].length == 1$
$triangle[i].length == triangle[i - 1].length + 1$
$-10 ^ 4 \leq triangle[i][ ...
LeetCode-200 岛屿数量
岛屿数量题目描述给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
数据样例示例 1:
1234567输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0","0","0","0","0"]]输出:1
示例 2:
1234567输入:grid = [ [" ...
hexo博客安装Butterfly主题
Butterfly 主题前置教程:hexo搭建个人博客
安装 ButterflyButterfly
通过 git 安装 Butterfly - 推荐下载主题到博客主题页面,在 博客根目录 执行下述命令
12cd themesgit clone "https://github.com/jerryc127/hexo-theme-butterfly.git"
安装后,主题配置文件路径: /themes/hexo-theme-butterfly/_config.yml
通过 npm 安装 Butterfly1npm i hexo-theme-butterfly
安装后,主题配置文件路径:/node_modules/hexo-theme-butterfly/_config.yml
修改博客配置文件修改配置文件,使主题生效,配置文件 _config.yml 中:
默认主题为 landscape,修改为 butterfly
1234# Extensions## Plugins: https://hexo.io/plugins/## Themes: https://h ...
hexo搭建个人博客
嘿休休,准备更新博客的搭建教程,希望对大家搭建属于自己的博客有所帮助 🎉本文:hexo 博客的搭建,未来会更新主题配置,hexo 博客部署等等
本地搭建系统信息各个系统搭建都类似,这里以 ubuntu 为例
安装依赖更新已经安装的软件包
12sudo apt updatesudo apt upgrade
安装软件包
1sudo apt install curl git
安装 npm, nodejs卸载 npm, nodejs不要使用 下述命令安装 npm, nodejs
1sudo apt install npm nodejs
ubuntu 默认软件源仓库中 Node.js 版本仍然为 10,而 hexo 最少需要 12 版本以上才能安装成功。
如果不小心安装了过去的版本,卸载 npm, nodejs 的方法:
12345678910111213# 通过 apt 卸载sudo apt-get remove --purge npmsudo apt-get remove --purge nodejssudo apt-get remove --purge nodejs-l ...
LeetCode-122 买卖股票的最佳时机 II
买卖股票的最佳时机 II题目描述给你一个整数数组 prices,其中 prices[i] 表示某支股票第 i 天的价格。
在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。
返回 你能获得的 最大 利润 。
数据样例示例 1:
12345输入:prices = [7,1,5,3,6,4]输出:7解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3 。 总利润为 4 + 3 = 7 。
示例 2:
1234输入:prices = [1,2,3,4,5]输出:4解释:在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。 总利润为 4 。
示例 3:
123输入:p ...
LeetCode-128 最长连续序列
最长连续序列题目描述给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
数据样例示例 1:
123输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
示例 2:
12输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9
提示:
$0 \leq nums.length \leq 10 ^ 5$
$-10 ^ 9 \leq nums[i] \leq 10 ^ 9$
哈希表 - $O(N)$哈希表对于给定数组中的每一个数 $x$,我们依次来看:$x + 1, x + 2, …$ 是否存在。
假设我们找到最大的 $y$ 使得 $x, x + 1, …, x + y$ 都在数组中。那么 以 $x$ 开头的连续的元素最多就有 $y$ 个
因此:可以 依次枚举数组中的元素 作为 $x$,依次枚举 $x + 1, x + 2, …$ 找到最大的 $y$ 即可
每次判断一个数是否在数组中, ...
LeetCode-300 最长递增子序列
此问题第二种贪心解法可能不容易理解,可以结合图片和代码一起,会好理解很多!有问题可以评论哈!🎉
最长递增子序列题目描述给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
数据样例示例 1:
123输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。
示例 2:
12输入:nums = [0,1,0,3,2,3]输出:4
示例 3:
12输入:nums = [7,7,7,7,7,7,7]输出:1
提示:
$1 \leq nums.length \leq 2500$
$-10 ^ 4 \leq nums[i] \leq 10 ^ 4$
进阶:你能将算法的时间复杂度降低到 $O(nlog(n))$ 吗?
动态规划 - $O(N ^ 2)$动态规划状态表示:$f[i]$ 表示以 $i$ 结尾的最长严格单调递增子序列的长度。 ...
LeetCode-42 接雨水
本篇文章比较长,可以点击右侧齿轮按钮,打开侧边栏,会显示出目录方便大家查看。目录下滑会自动展开。🎉
接雨水题目描述给定 $n$ 个非负整数表示每个宽度为 $1$ 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
数据样例示例 1
123输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。
示例 2
12输入:height = [4,2,0,3,2,5]输出:9
提示:
$n == height.length$
$1 \leq n \leq 2 * 10 ^ 4$
$0 \leq height[i] \leq 10 ^ 5$
木桶原理
木桶原理扩展:对于基础木桶原理而言,我们知道木桶可以装入的水量取决于当前木桶所有木板中最短的那个
那么对其进行扩展,如上图中所示,我们可以知道:对于上述红色框中可以看作是一个木桶,那么 对于木桶中的每个位置,其可以装入的水量取决于 两侧 ...
LeetCode-31 下一个排列
下一个排列题目描述整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。
例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]
整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。
例如,arr = [1,2,3] 的下一个排列是 [1,3,2]
类似地,arr = [2,3,1] 的下一个排列是 [3,1,2]
而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。
给你一个整数数组 nums ,找出 nums 的下一个排列。
必须 原地 修改,只允许使用额外常数空间。
数据样例示例 1
12输入:nums = [1,2,3]输出:[1,3,2]
示例 2
12输入:nums = [3,2,1] ...
LeetCode-22 括号生成
括号生成题目描述数字 $n$ 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
数据样例示例 1:
12输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]
示例 2:
12输入:n = 1输出:["()"]
提示:
$1 \leq n \leq 8$
深度优先搜索 DFS - $O(4 ^ N)$题目的 数据范围很小,因此可以考虑暴力搜索
DFS 搜索过程:
可以将问题看成:将括号放入长度为 $2 * n$ 个空位中。可以依次看每个空位。
每个空位有两种选择:(, )
为了便于大家理解,DFS 搜索空间树 如下图所示:
那么我们知道,不是所有最终搜索得到的序列都是满足条件的,如图中所示:
标注红色序列为合法序列
标注黑色序列为不合法序列
因此需要将不合法的序列去掉,图中的 紫色部分 是为了去掉所有不合法的括号序列:
由于左括号和右括号数量相同, ...