- 博客(144)
- 问答 (1)
- 收藏
- 关注
原创 [Leetcode]环形链表II
[Leetcode]环形链表IILeetcode-环形链表II题目描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos
2020-10-15 10:39:24 169
原创 [Leetcode]环形链表
[Leetcode]环形链表Leetcode-环形链表题目描述给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问
2020-10-15 09:38:21 180
原创 [Leetcode]单词搜索-回溯
[Leetcode]单词搜索Leetcode-单词搜索题目描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE"
2020-10-14 22:58:44 222
原创 [Leetcode]子集
[Leetcode]子集Leetcode-子集题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]实现代码方法一:迭代class Solution: def subsets(self, nums: List[int]) ->
2020-10-14 11:27:15 277
原创 [Leetcode]组合-递归回溯+剪枝
[Leetcode]组合Leetcode-组合题目描述给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]解题思路参考如果解决一个问题有多个步骤,每个步骤有多种方法,题目又要我们找出所有的方法,可以使用回溯算法回溯算法是在一棵树上的 深度优先遍历组合问题相对于排列问题而言,不计较一个组合内元素的顺序性,
2020-10-14 10:32:40 397
原创 [Leetcode]颜色分类
[Leetcode]颜色分类Leetcode-颜色分类题目描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、
2020-10-12 10:43:31 89
原创 [Leetcode]搜索二维矩阵
[Leetcode]搜索二维矩阵Leetcode-搜索二维矩阵题目描述编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例 2:输入:matrix = [ [1, 3,
2020-10-12 09:26:28 121
原创 [Leetcode]矩阵置零
[Leetcode]矩阵置零Leetcode-矩阵置零题目描述给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出: [ [0,0,0,0], [0,4,
2020-10-11 23:42:11 181
原创 [Leetcode]二进制求和
[Leetcode]二进制求和Leetcode-二进制求和题目描述给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。1 <= a.length, b.length <= 10^4字符串如果不是 “0” ,就都不含前导零
2020-10-10 11:24:18 260 1
原创 [Leetcode]爬楼梯
[Leetcode]爬楼梯Leetcode-爬楼梯题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶解题思路斐波那契数列,开始3位是1,1,2
2020-10-09 14:42:48 94
原创 [Leetcode]x的平方根
[Leetcode]x的平方根Leetcode-x的平方根题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。解题思路袖珍计算器算法「袖珍计算器算法」是一种用指数函数 exp\expexp 和对数函数 ln\lnln 代替平
2020-10-09 10:22:44 294
原创 [Leetcode]加一
[Leetcode]加一Leetcode-加一题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。解题思路加一需要考虑两种情况0~8加一,直接加一9加一,
2020-10-09 09:58:08 138
原创 [Leetcode]最小路径和-动态规划
[Leetcode]最小路径和-动态规划Leetcode最小路径和-动态规划题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路典型的动态规划状态定义:设 dp 为大小 m×n 矩阵,其中 dp[i][j]的值代表直到走到 (i,j) 的最小路径和。
2020-10-08 21:40:12 171
原创 [Leetcode]不同路径-Python动态规划
Leetcode]不同路径Leetcode-不同路径题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -&
2020-09-24 16:10:30 341
原创 [Leetcode]旋转链表
[Leetcode]旋转链表Leetcode-旋转链表题目描述给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->N
2020-09-23 22:40:07 98
原创 [Leetcode]螺旋矩阵II
[Leetcode]螺旋矩阵IILeetcode-螺旋矩阵II题目描述给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]解题思路参考螺旋矩阵,在此基础上,变成赋值实现代码class Solution: def generateMatrix(self, n: int) -> List[List[int]]:
2020-09-23 21:40:35 207
原创 [Leetcode]最后一个单词的长度
[Leetcode]最后一个单词的长度Leetcode-最后一个单词的长度题目描述给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: “Hello World”输出: 5解题思路从后往前遍历,去掉末尾空格实现代码class Solution {public: i
2020-09-23 20:49:14 93
原创 [Leetcode]合并区间
[Leetcode]合并区间Leetcode-合并区间题目描述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。注意:输
2020-09-23 10:21:36 138
原创 [Leetcode]跳跃游戏
[Leetcode]跳跃游戏Leetcode-跳跃游戏题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是
2020-09-17 16:36:43 453
原创 [Leetcode]螺旋矩阵Python
[Leetcode]螺旋矩阵Leetcode-螺旋矩阵题目描述给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出: [1,2,3,4,8,12,11,10,9,5,
2020-09-16 17:06:53 335
原创 [Leetcode]最大子序和
[Leetcode]最大子序和Leetcode-最大子序和题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。实现代码class Solution: def maxSubArray(self, nums: List[
2020-09-16 16:12:43 65
原创 [计算机网络]传输层
[计算机网络]传输层文章目录[计算机网络]传输层UDP和TCP的特点UDP首部格式TCP首部格式TCP的三次握手TCP的四次挥手TCP可靠传输TCP滑动窗口TCP流量控制TCP拥塞控制1.慢开始与拥塞避免2.快重传与快恢复 网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道。UDP和TCP的特点
2020-09-16 11:27:41 145
原创 [Leetcode]N皇后-Python递归回溯
[Leetcode]N皇后Leetcode-N皇后题目描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入:4输出:[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q."
2020-09-15 23:47:43 308
原创 [Leetcode]N皇后II-Python递归回溯
[Leetcode]N皇后IILeetcode-N皇后II题目描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", ".
2020-09-15 23:42:28 242 1
原创 [Leetcode]Pow(x, n)-Python递归+快速幂
[Leetcode]Pow(x, n)Leetcode-Pow(x, n)题目描述实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32 位有符号整数,其数值范围是
2020-09-14 17:35:22 915 1
原创 [Leetcode]字母异位词分组
[Leetcode]字母异位词分组Leetcode-字母异位词分组题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。解题思路当且仅当它们的排序字符串相等时,两个字符串是字母异位词。维护一个映射
2020-09-14 16:55:32 171
原创 [Leetcode]旋转图像
[Leetcode]旋转图像Leetcode-旋转图像题目描述给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matrix =[ [
2020-09-14 15:53:37 134
原创 [Leetcode]全排列II-Python递归回溯
[Leetcode]全排列IILeetcode-全排列II题目描述给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]解题思路递归回溯在全排列基础上,加了 可包含重复数字的序列 的要求实现代码class Solution: def permuteUnique(self, nums: List[int]) -> List[List[int]]:
2020-09-13 18:52:03 137
原创 [Leetcode]全排列-Python递归回溯
[Leetcode]全排列Leetcode-全排列题目描述给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题思路递归回溯实现代码class Solution: def permute(self, nums: List[int]) -> List[List[int]]: r
2020-09-13 18:41:39 329
原创 [Leetcode]字符串相乘
[Leetcode]字符串相乘Leetcode-字符串相乘题目描述给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2 的长度小于110。num1 和 num2 只包含数字 0-9。num1 和 num2 均不以零
2020-09-13 17:22:12 108
原创 [Leetcode]字符串加法
[Leetcode]字符串加法Leetcode-字符串加法题目描述给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。提示:num1 和num2 的长度都小于 5100num1 和num2 都只包含数字 0-9num1 和num2 都不包含任何前导零你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式解题思路模拟两数相加的过程实现代码class Solution: def addStrings(self, num1: st
2020-09-13 17:21:11 168
原创 [Leetcode]组合总和II-Python递归
[Leetcode]组合总和II-Python递归Leetcode-组合总和II题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[ [1, 7],
2020-09-11 19:25:15 121
原创 [Leetcode]组合总和-Python递归
[Leetcode]组合总和Leetcode-组合总和题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]示例 2:
2020-09-11 18:25:42 191
原创 [Leetcode]外观数列-Python+递归
[Leetcode]外观数列Leetcode-外观数列题目描述给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一个字符串。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1描述前一项,这个数是 1 即 “一个 1 ”,记作 11描述前一项,这个数是 11 即 “两个 1
2020-09-11 16:55:19 222
原创 [Leetcode]有效的数独-Python3
[Leetcode]有效的数独Leetcode-有效的数独题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[ ["5","3",".",".","7",".",".",".","."], ["6",
2020-09-10 18:18:08 112
原创 [Leetcode]搜索插入位置-二分
[Leetcode]搜索插入位置Leetcode-搜索插入位置题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0解题思路二分查找,找到则返回下标,没找到,lef
2020-09-10 16:33:50 121
原创 [Leetcode]在排序数组中查找元素的第一个和最后一个位置-二分查找
[Leetcode]在排序数组中查找元素的第一个和最后一个位置Leetcode-在排序数组中查找元素的第一个和最后一个位置题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8
2020-09-10 16:23:27 107
原创 [Leetcode]括号生成-递归回溯
[Leetcode]括号生成-递归回溯Leetcode-括号生成-递归回溯题目描述数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]解题思路递归回溯画图以后,可以分析出的结论:当前左右括号都有大于 0 个可以使用的时候,才产生
2020-09-09 15:37:13 137
原创 [Leetcode]搜索旋转排序数组
[Leetcode]搜索旋转排序数组Leetcode-搜索旋转排序数组题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示
2020-09-09 10:53:29 122
原创 [Leetcode]下一个排列
[Leetcode]下一个排列Leetcode-下一个排列题目描述实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1解题思路首先我们从右边找到第一组两个连续的数字 a[i]a[i]a[i] 和 a[i−1]a[i
2020-09-07 18:03:33 122
空空如也
为什么没有templates folder
2020-02-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人