博客食用指南
重拾博客,本着分享的精神,给大家分享一些自己所知道的那些浅薄的知识🎉。希望能给大家带来一些帮助,以及一些乐趣。整理完博客的基本功能了(doga,未来会不断的完善和加入新的好玩的东西~
如果本博客无法直接访问:点击访问
文章相关打开和关闭目录右下角齿轮设置中打开侧边栏即可查看目录
阅读模式右下角齿轮设置中打开阅读模式
暗黑模式右下角齿轮设置中切换暗黑模式
评论相关头像设置前往 https://cn.gravatar.com/,通过邮箱注册并设定头像,评论时邮箱填写注册的邮箱即可
图片上传评论支持图片上传,上传图片后稍等片刻就会显示出图片的链接。
KaTex 公式评论支持 KaTex 公式,输入 $$ 即可输入公式
私信右下角可以打开聊天窗口,欢迎私信呀
私信可以发送文件
LeetCode-8 字符串转换整数(atoi)
LeetCode-8 字符串转换整数(atoi)题目描述请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。
函数 myAtoi(string s) 的算法如下:
读入字符串并丢弃无用的前导空格
检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。如果没有读入数字,则整数为 $0$ 。必要时更改符号(从步骤 $2$ 开始)。
如果整数数超过 $32$ 位有符号整数范围 $[−2 ^ {31}, 2 ^ {31} − 1]$, 需要截断这个整数,使其保持在这个范围内。具体来说,小于 $−2 ^ {31}$ 的整数应该被固定为 $−2 ^ {31}$ ,大于 $2 ^ {31} ...
LeetCode-1386 安排电影院座位
LeetCode-1386 安排电影院座位题目描述
如上图所示,电影院的观影厅中有 $n$ 行座位,行编号从 $1$到 $n$ ,且每一行内总共有 $10$ 个座位,列编号从 $1$ 到 $10$ 。
给你数组 reservedSeats ,包含所有已经被预约了的座位。比如说,researvedSeats[i]=[3,8] ,它表示第 $3$ 行第 $8$ 个座位被预约了。
请你返回 最多能安排多少个 $4$ 人家庭 。$4$ 人家庭要占据 同一行内连续 的 $4$ 个座位。隔着过道的座位(比方说 $[3,3]$ 和 $[3,4]$)不是连续的座位,但是如果你可以将 $4$ 人家庭拆成过道两边各坐 $2$ 人,这样子是允许的。
示例 1:
123输入:n = 3, reservedSeats = [[1,2],[1,3],[1,8],[2,6],[3,1],[3,10]]输出:4解释:上图所示是最优的安排方案,总共可以安排 4 个家庭。蓝色的叉表示被预约的座位,橙色的连续座位表示一个 4 人家庭。
示例 2:
12输入:n = 2, reservedSeats = [[2, ...
LeetCode-155 最小栈
LeetCode-155 最小栈题目描述设计一个支持 push, pop, top 操作,并能在常数时间内检索到最小元素的栈。
实现 MinStack 类:
MinStack() 初始化堆栈对象。
void push(int val) 将元素 val 推入堆栈。
void pop() 删除堆栈顶部的元素。
int top() 获取堆栈顶部的元素。
int getMin() 获取堆栈中的最小元素。
示例 1
12345678910111213141516输入:["MinStack","push","push","push","getMin","pop","top","getMin"][[],[-2],[0],[-3],[],[],[],[]]输出:[null,null,null,null,-3,null,0,-2]解释:MinStack minStack = new MinStack();minStack.push(-2) ...
LeetCode-1302 层数最深叶子节点的和
LeetCode-1302 层数最深叶子节点的和题目描述给你一棵二叉树的根节点 root ,请你返回 层数最深的叶子节点的和
示例 1:
12输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]输出:15
示例 2:
12输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]输出:19
提示:
树中节点数目在范围 $[1, 10 ^ 4]$ 之间。
$1 \leq Node.val \leq 100$
深度优先搜索 DFS - $O(N)$DFS只需要遍历一遍树,找到所有叶子节点,此时判断:
当前叶子节点深度 小于 当前最深深度,则跳过
当前叶子节点深度 等于 当前最深深度,则 最深深度节点权值和加上当前节点权值
当前叶子节点深度 大于 当前最深深度,则 更新最深深度,以及更新最深深度节点权值和为当前节点的权值
由于 非叶子节点深度一定低于叶子节点,因此对于所有节点都可以进行上述判断,代码可以写的更短一些
题目中第一个实例的更新过程如下图所示:
当前节点深 ...
LeetCode-142 环形链表 II
LeetCode-142 环形链表 II题目描述给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。
不允许修改 链表。
数据样例示例 1:
123输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
123输入:head = [1,2], pos = 0输出:返回索引为 0 的链表节点解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:
123输入:head = [1], pos = -1输出:返回 null解释:链表中没有环。
提示:
链表中节点的数目范围在范围 $[0, 10 ^ 4]$ 内
$-10 ^ 5 \ ...
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 = [ [" ...