LeetCode刷题
等风来随风飘
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题笔记第144题:二叉树的前序遍历
给你二叉树的根节点root ,返回它节点值的前序遍历。原创 2024-04-12 16:21:43 · 156 阅读 · 0 评论 -
LeetCode刷题笔记第2974题:最小数字游戏
按照题目所述,如果是一个升序的数组,想要得到题目所需结果,将每两位数字位置互换即可。所以先使用快速排序将无序数组变为升序数组。遍历数组,将每两位位置互换。时间复杂度是:O(nlogn)。(快速排序的时间复杂度是O(nlogn),遍历是O(n))空间复杂度是:O(1)。(没有使用额外的空间)原创 2024-07-12 12:22:52 · 178 阅读 · 0 评论 -
LeetCode刷题笔记第3011题:判断一个数组是否可以变为有序
使用冒泡排序进行排序,在判断大小条件时加入判断二进制下数位为1的数目是否相同,相同则可以进行互换。最后遍历数组,相邻两两之间是否具有升序关系,是则返回true,否则返回false。因为没有使用额外的空间,因此空间复杂度为。,判断是否升序的时间复杂度是。,因此上述代码的时间复杂度为。因为冒泡排序的时间复杂度是。原创 2024-07-13 10:44:21 · 405 阅读 · 0 评论 -
LeetCode刷题笔记第2769题:找到最大的可达成数字
由于只进行了一次算术计算,且没有使用额外存储空间,因此时间复杂度和空间复杂度均为O(1)。由上述两点来看,num与x之间的关系为:x = num + t + t。原创 2024-05-21 09:09:02 · 180 阅读 · 0 评论 -
LeetCode刷题笔记第1859题:将句子排序
通过空格切分句子为单词列表,根据最后每个单词的最后一个数字在新的列表中存入相对应的位置,返回按照新列表中的顺序拼接的句子。因为创建了一个新的列表,空间复杂度O(n)因为要遍历整个列表,时间复杂度O(n)原创 2024-05-17 11:08:15 · 251 阅读 · 0 评论 -
LeetCode刷题笔记第1800题:最大升序子数组和
遍历数组的同时记录当前最大升序子数组和,最终返回最大升序子数组和。因为要存储当前最大升序子数组和,空间复杂度为O(1)因为要遍历整个数组,时间复杂度为O(n)原创 2024-05-15 15:59:32 · 205 阅读 · 0 评论 -
LeetCode刷题笔记第1078题:Bigram分词
给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 “first second third” 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。对于每种这样的情况,将第三个词 “third” 添加到答案中,并返回答案。原创 2024-05-14 10:52:12 · 183 阅读 · 0 评论 -
LeetCode刷题笔记第1480题:一维数组的动态和
给你一个数组 nums。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i])。请返回 nums 的动态和。原创 2024-05-10 12:06:35 · 347 阅读 · 0 评论 -
LeetCode刷题笔记第258题:各位相加
给定一个非负整数num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。原创 2024-05-08 17:33:46 · 188 阅读 · 0 评论 -
LeetCode刷题笔记第217题:存在重复元素
给你一个整数数组nums。如果任一值在数组中出现至少两次,返回 true;如果数组中每个元素互不相同,返回 false。原创 2024-05-08 16:55:48 · 270 阅读 · 0 评论 -
LeetCode刷题笔记第190题:颠倒二进制位
颠倒输入的二进制数。原创 2024-05-04 10:40:20 · 230 阅读 · 0 评论 -
LeetCode刷题笔记第168题:Excel表列名称
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。例如:A -> 1B -> 2C -> 3Z -> 26AA -> 27AB -> 28。原创 2024-05-02 12:11:01 · 113 阅读 · 0 评论 -
LeetCode刷题笔记第145题:二叉树的后序遍历
给定一棵二叉树的根节点 root ,返回其节点值的后序遍历。原创 2024-05-01 12:12:14 · 284 阅读 · 1 评论 -
LeetCode刷题笔记第104题:二叉树的最大深度
给定一个二叉树,获得二叉树的最大深度。原创 2024-04-23 12:08:12 · 177 阅读 · 0 评论 -
LeetCode刷题笔记第746题:使用最小花费爬楼梯
花费每个楼梯的代价就能向上爬一个或两个楼梯,求最终登顶需要的最小代价。原创 2024-04-09 12:17:07 · 295 阅读 · 0 评论 -
LeetCode刷题笔记第80题:删除有序数组中的重复项 II
删除升序数组中超过两次的元素后的数组长度。原创 2023-12-02 23:37:47 · 211 阅读 · 0 评论 -
LeetCode刷题笔记第240题:搜索二维矩阵II
题:搜索二维矩阵中是否包含有目标值。二维矩阵从左到右,从上到下为数值升序排列。原创 2023-02-04 22:09:45 · 110 阅读 · 0 评论 -
LeetCode刷题笔记第912题:排序数组
将一个整数数组进行升序排列。原创 2023-01-30 23:08:14 · 677 阅读 · 0 评论 -
LeetCode刷题笔记第169题:多数元素
要找到数组中超过数组一半长度的元素。原创 2023-01-16 23:13:53 · 357 阅读 · 0 评论 -
LeetCode刷题笔记第136题:只出现一次的数字
找到数组中只出现一次的数字。原创 2022-11-22 20:24:56 · 111 阅读 · 0 评论 -
LeetCode刷题笔记第198题:打家劫舍
LeetCode刷题笔记第198题:打家劫舍想法:不能劫相邻的房间,并得到最大的打劫金额。设置两个变量first和second,first代表打劫前n-1个房间的最大金额,second代表打劫n个房间的打劫金额。当只有一个房间时最大金额即为这一家的金额,当房间为两个或两个以上时,从头开始遍历房间,判断当前位置所能打劫到的最大金额,循环结束则返回打劫的最大金额。使用了动态规划的思想:边界:dp[0]=nums[0]dp[0]=nums[0]dp[0]=nums[0]只有一个房间,打劫最大金额为此房原创 2022-03-02 21:35:05 · 284 阅读 · 0 评论 -
LeetCode刷题笔记第16题:最接近的三数之和
LeetCode刷题笔记第16题:最接近的三数之和想法:要求数组中最接近目标值的三数之和。将列表按从小到大重新排序以列表循环遍历(first)设置两个指针,second从first后一个元素开始想右移动,third从列表最后一个元素开始向左移动因为列表从小到大重新排序了,当三数和大于目标值则third向左移动一位,当三数和小于目标值则second向右移动,当三数和与目标值相等则返回三数之和如列表遍历结束都没有与目标值相等的情况出现则返回最接近的三数之和时间复杂度:O(n2)O(n^2)O(原创 2022-02-27 23:03:55 · 204 阅读 · 0 评论 -
LeetCode刷题笔记第171题: Excel 表列序号
LeetCode刷题笔记第171题: Excel 表列序号想法:给你一个字符串 columnTitle,表示 Excel 表格中的列名称。返回 该列名称对应的列序号。此题单个字符的对应值与ASCII码差64,并且字符没Z进一位,因此为26进制。从给定字符串的尾部遍历至头部,相当于数字的个位数到最高位数,获得每个位置上的字符得到其数值并乘以进制求和即为所求。时间复杂度O(n)空间复杂度O(1)class Solution: def titleToNumber(self, columnTitl原创 2022-02-21 22:52:16 · 265 阅读 · 0 评论 -
LeetCode刷题笔记第78题:子集
LeetCode刷题笔记第78题:子集想法:列表中元素不重复,要返回列表中元素的所有子集。空集是所有集合的子集,先创建一个空列表作为空集的子集列表ans,循环遍历列表中的元素,将当前元素与子集列表中的元素进行加法运算,获得新的子集并添加入子集列表中,直至循环结束即可获得所有子集。时间复杂度O(n∗2n)O(n*2^n)O(n∗2n)空间复杂度O(n)class Solution: def subsets(self, nums: List[int]) -> List[List[int]原创 2022-02-20 23:40:10 · 98 阅读 · 0 评论 -
LeetCode刷题笔记第11题:盛最多水的容器
LeetCode刷题笔记第11题:盛最多水的容器想法:要求得能盛最多水的容器,也就是两个垂线间的最大面积。设置左右两个指针,左指针从0开始,右指针从最后开始,以最短的垂线计算面积,并移动垂线较短的指针位置,左指针向右移动,又指针向左移动,直至两个指针重合则指针遍历结束。指针的遍历过程中不断计算当前的面积,不断更新最大面积,当遍历结束时可以得到盛最多水的容器容量。class Solution: def maxArea(self, height: List[int]) -> int:原创 2022-02-20 22:45:39 · 339 阅读 · 0 评论 -
LeetCode刷题笔记第155题:最小栈
LeetCode刷题笔记第155题:最小栈想法:需要实现栈中的入栈、出栈、获取顶部元素和栈中最小元素,使用辅助栈完成功能。入栈操作直接在原基础上尾部添加出栈操作删除栈顶的元素获取顶部元素操作直接获取数组中的最后一个元素栈中最小的元素会随栈中元素的不同动态变化,在元素入栈时就在辅助栈中记录当前栈的最小元素,随着元素的入栈出栈对辅助栈做相应的最小元素判断及入栈出栈变化,因此当前辅助栈中的栈顶元素(数组中的最后一个元素)即为当前栈的最小元素class MinStack: def __ini原创 2022-02-19 23:04:11 · 174 阅读 · 0 评论 -
LeetCode刷题笔记第121题:买卖股票的时机
LeetCode刷题笔记第121题:买卖股票的最佳时机想法:想要获得买卖股票的最大利润,需要找到两个日期上的差值最大。遍历股票价格的数组,将数组中的第一个元素设置为最小值,如果第二个元素大于第一个元素(也是当前最小值),则取其差值与默认最大利润(最大利润初始值为0)中较大的值作为新的最大利润,如果第二个元素小于第一个元素,则将第二个元素值设置为最小值,循环遍历至数组结束。class Solution: def maxProfit(self, prices: List[int]) -> i原创 2022-02-18 21:22:02 · 122 阅读 · 0 评论 -
LeetCode刷题笔记第509题:斐波那契数
LeetCode刷题笔记第509题:斐波那契数想法一:递归斐波那契数除了第一个和第二个数为1,其余所有数均为其前两个数之和,通过递归获得相对输入的斐波那契数。时间复杂度:O(2^n),空间复杂度:O(n)。class Solution: def fib(self, n: int) -> int: if n == 0: return 0 elif n == 1 or n == 2: return 1原创 2022-02-08 15:04:12 · 6337 阅读 · 0 评论 -
LeetCode刷题笔记第119题:杨辉三角 II
LeetCode刷题笔记第119题:杨辉三角 II想法:要得到杨辉三角指定行数上的所有数值。先构建一个数值全为1的三角矩阵(三角的两边全为1无需计算),中间位置的数值由相对位置的上方两个数值相加,根据此规律计算相对位置处的数值,构建完成的矩阵最后一行即为所求。class Solution: def getRow(self, rowIndex: int) -> List[int]: # 构建一个数值全为1的三角矩阵 res = [[1 for j in ra原创 2021-12-20 22:20:06 · 78 阅读 · 0 评论 -
LeetCode刷题笔记第125题:验证回文串
LeetCode刷题笔记第125题:验证回文串想法:要验证是否为回文串判断其正反序时是否一致即可。首先将字符串中的字母和数字提取出来,并将所有字符小写,再判断正反序时是否一致,可以用字符翻转来判断,也可以用双指针判断。方法一:字符翻转class Solution: def isPalindrome(self, s: str) -> bool: # 将字符串中的数字和字母提取出并全部小写 s = "".join(ch.lower() for ch in s原创 2021-12-17 22:19:17 · 96 阅读 · 0 评论 -
LeetCode刷题笔记第8题:字符串转换整数 (atoi)
LeetCode刷题笔记第8题:字符串转换整数 (atoi)^:匹配字符串开头[+-]:代表一个+字符或-字符?:匹配一个字符可有可无\d:一个数字+:匹配一个或多个字符\D:一个非数字字符*:匹配0个或多个字符想法:想要得到字符串中的有符号数值,通过正则表达式完成。class Solution: def myAtoi(self, s: str) -> int: # findall(pattern, string, flags=0),(返回string中所有原创 2021-12-16 21:20:06 · 83 阅读 · 0 评论 -
LeetCode刷题笔记第6题:Z字形变换
LeetCode刷题笔记第6题:Z字形变换想法:要完成字符串根据给定的行数从上往下,从左到右完成Z字形排列。当只有一行时直接返回原字符串,当行数大于1时,先以行数构建一个行数数值个空字符串的列表,表示将排列之后的每行字符存入对应位置的列表的位置中。因为在排列的时候,元素的列数在遇到Z字拐角处递增和递减交替进行,用flag来控制列数的递增和递减。详细注释见代码。class Solution: def convert(self, s: str, numRows: int) -> str:原创 2021-12-15 21:59:14 · 4185 阅读 · 0 评论 -
LeetCode刷题笔记第64题:最小路径和
LeetCode刷题笔记第64题:最小路径和想法:动态规划的思想,要找到最终的最小路径和,则需要找到上一位置的最小路径和,将每个位置的最小路径和存入数组中,可以直接获得所在位置的最小路径和。代码及注释如下。class Solution: def minPathSum(self, grid: List[List[int]]) -> int: # 当网格grid不存在时返回0 if not grid or not grid[0]: re原创 2021-10-12 13:25:25 · 77 阅读 · 0 评论 -
LeetCode刷题笔记第62题:不同路径
LeetCode刷题笔记第62题:不同路径想法:要获得总路径数,则需要先找到前一步的路径数,根据题意,将路径看作是二维数组,机器人走到目标的路径数为走到行上的的前一个位置,或列上的前一个位置,依据动态规划完成任务。代码及注释如下。class Solution: def uniquePaths(self, m: int, n: int) -> int: # 构建m行n列数组,第一行和第一列元素数值为1,其余为0 f = [[1] * n] + [[1] +原创 2021-10-12 13:10:46 · 65 阅读 · 0 评论 -
LeetCode刷题剑指 Offer 10- II. 青蛙跳台阶问题
LeetCode刷题剑指 Offer 10- II. 青蛙跳台阶问题动态规划的思想,青蛙每次可以跳一个或两个台阶,要想得到最终青蛙跳n阶台阶的方法数,需要找到青蛙跳n-1个台阶的方法数和跳n-2个台阶的方法数。想法一:通过台阶数进行循环,以初始条件n为0和1时,方法数为1,逐步累加得到最终的结果。class Solution: def numWays(self, n: int) -> int: # 初始条件是跳上第0阶和第1阶跳法为1 a,b = 1,1原创 2021-10-12 12:15:08 · 81 阅读 · 0 评论 -
LeetCode刷题笔记第450题:删除二叉搜索树中的节点
LeetCode刷题笔记第450题:删除二叉搜索树中的节点想法:删除二叉搜索树中的节点共有三种情况:该节点为叶子节点,直接删除该节点仅有一个叶子节点,删除该节点返回其叶子节点该节点同时有左右叶子节点,找到左右叶子节点中的最小值节点并用其替换该节点代码及注释如下。# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):#原创 2021-10-11 16:48:32 · 69 阅读 · 0 评论 -
LeetCode刷题笔记第98题:验证二叉搜索树
LeetCode刷题笔记第98题:验证二叉搜索树想法一:要满足题中二叉树的要求,需要判断根节点是否大于于左节点并小于右节点。递归判断二叉树中的每个节点,当满足要求时最终返回True,当某个节点的值不满足时则返回False。代码及注释如下。# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = va原创 2021-10-11 16:26:25 · 80 阅读 · 0 评论 -
LeetCode刷题笔记第118题:杨辉三角
LeetCode刷题笔记第118题:杨辉三角想法:要构建杨辉三角有几个要素:每行元素个数与行数数值相同每行第一个元素和最后一个元素为1除第一个元素和最后一个元素之外,中间的所有元素均为上一行相邻对应的两个元素之和从第一行开始构建,以后每一行都需要依赖上一行的元素数值,将每一行的结果存入相同的列表中得到最终的结果。代码及注释如下。class Solution: def generate(self, numRows: int) -> List[List[int]]:原创 2021-10-11 12:32:01 · 93 阅读 · 0 评论 -
LeetCode刷题笔记第112题:路径总和
LeetCode刷题笔记第112题:路径总和想法:要找到树中是否存在一条路径和为目标值,使用递归的方法。判断是否存在路径和是否等于目标值,从根节点开始,而根节点之下的子树判断是否存在目标值与根节点数值的差的路径,直到递归到叶子结点。具体代码及注释如下。# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.v原创 2021-10-08 19:00:42 · 60 阅读 · 0 评论 -
LeetCode刷题笔记第5题:最长回文子串
LeetCode刷题笔记第5题:最长回文子串想法:求解一个字符串中的最长回文子串使用动态规划的方法。动态规划方法是将每个符合回文串的存储下来,并最终判断回文串的长度来获得最长回文串,具体解析如下代码。class Solution: def longestPalindrome(self, s: str) -> str: n = len(s) # 长度小于2的字符串中最多只有一个字符,返回自身 if n < 2:原创 2021-10-06 21:14:02 · 129 阅读 · 0 评论