LeetCode-15 三数之和
LeetCode-15 三数之和题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 数据样例示例 1: 12输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]] 示例 2: 12输入:nums = []输出:[] 示例 3: 12输入:nums = [0]输出:[] 提示: $0 \leq nums.length \leq 3000$ $-10 ^ 5 \leq nums[i] \leq 10 ^ 5$ 双指针 - $O(N ^ 2)$两数之和首先,我们可以回顾一下如何利用双指针算法求解两数之和: 两数之和:序列寻找 $a + b = 0$ 将序列进行排序为递增有序序列 指针 $i$ 从序列 左侧 开始向右侧移动 指针 $j$ 从序列 右侧 开始向左侧移动 双指针算法: 当前如果 $nums[i] + nums[j] \geq 0$,则指针 $j$ 向左侧 ...
LeetCode-79 单词搜索
LeetCode-79 单词搜索题目描述给定一个 $m * n$ 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true 否则,返回 false 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 数据样例示例 1: 12输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"输出:true 示例 2: 12输入:board = [["A","B","C","E"],["S" ...
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 ...
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$ 木桶原理 木桶原理扩展:对于基础木桶原理而言,我们知道木桶可以装入的水量取决于当前木桶所有木板中最短的那个 那么对其进行扩展,如上图中所示,我们可以知道:对于上述红色框中可以看作是一个木桶,那么 对于木桶中的每个位置,其可以装入的水量取决于 两侧 ...