leetCode刷题
Suppose
这个作者很懒,什么都没留下…
展开
-
LeetCode 3. 无重复字符的最长子串
对字符串进行遍历,并准备一个指针指向最开始,如果字符串中出现重复的字符,那么需要将指针往前移,找到该重复字符出现的第一个位置,从此处再次开始计算长度。给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。原创 2022-09-16 18:04:49 · 141 阅读 · 1 评论 -
LeetCode 733.图像渲染
为了完成 上色工作 ,从初始像素开始,记录初始坐标的 上下左右四个方向上 像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应 四个方向上 像素值与初始坐标相同的相连像素点,……将所有有记录的像素点的颜色值改为 newColor。你应该从像素 image[sr][sc] 开始对图像进行 上色填充。有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。最后返回 经过上色渲染后的图像。原创 2022-09-16 17:26:48 · 151 阅读 · 0 评论 -
LeetCode 695. 岛屿的最大面积
岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。深度优先,先循环网格, 当grid[x][y] === 1时,将当前单元格置为0并上下左右不断递归,计算每个岛屿的大小,然后不断更新最大岛屿。计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0。给你一个大小为 m x n 的二进制矩阵 grid。岛屿的面积是岛上值为 1 的单元格的数目。原创 2022-09-16 17:12:00 · 176 阅读 · 0 评论 -
LeetCode 119.杨辉三角形II
https://leetcode.cn/problems/pascals-triangle-ii/给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例:输入: rowIndex = 3输出: [1,3,3,1]思路1:可以生成长度为rowIndex的杨辉三角形,最后一行即为所求思路二:可以将数组设置成滚动的,每次都从数组的前一个状态中得到新的值。...原创 2022-07-11 18:28:46 · 151 阅读 · 0 评论 -
LeetCode 118. 杨辉三角形
给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例:输入: rowIndex = 3输出: [1,3,3,1]思路:使用二维数组,dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]......原创 2022-07-11 17:41:19 · 161 阅读 · 0 评论 -
LeetCode 91. 解码方式
https://leetcode.cn/problems/decode-ways一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> “1”‘B’ -> “2”…‘Z’ -> “26”要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为:“AAJF” ,将消息分组为 (1 1 10 6)“KJF” ,将消息分组为 (11 10 6)注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F原创 2022-07-11 16:54:14 · 81 阅读 · 0 评论 -
LeetCode 413.等差数列
https://leetcode.cn/problems/arithmetic-slices如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。思路一:暴力解法遍历数组的每一个至少三个的子数组,暴力找出所有的等差数组思路二:双指针法(滑动窗口)对于每一组子数组原创 2022-07-11 15:10:28 · 1420 阅读 · 0 评论 -
LeetCode 42.接雨水
https://leetcode.cn/problems/trapping-rain-water/给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。思路:动态规划对于下标 i 而言,能接到的雨水高度等于左右高度中的最小值,再减去自身柱子的高度那么如何能够得到第 i 点左右高度中的最小值呢?设两个数组,一个存储 i 点及其右边坐标中最大的高度,一个存储 i 点及其左边坐标中最大的高度。而左右高度的最小值,就是 min(left[i], right[原创 2022-07-11 00:05:43 · 214 阅读 · 0 评论 -
LeetCode 142. 环形链表II
https://leetcode.cn/problems/linked-list-cycle-ii给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改 链原创 2022-07-08 22:57:28 · 121 阅读 · 0 评论 -
LeetCode 141. 环形链表
https://leetcode.cn/problems/linked-list-cycle给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。思路一:哈希到达每一个节点后,在哈希原创 2022-07-08 22:18:44 · 142 阅读 · 0 评论 -
LeetCode 74. 搜索二维矩阵
https://leetcode.cn/problems/search-a-2d-matrix编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。思路:将矩阵展开成一维数组,再利用二分法进行查找:...原创 2022-07-05 17:03:30 · 76 阅读 · 0 评论 -
LeetCode 34. 在排序数组中查找元素的第一和最后一个位置
https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。思路:先用二分查找查找到一个索引值等于target,然后从这个索引开始向左向右寻找与它相原创 2022-07-05 15:22:55 · 130 阅读 · 0 评论 -
LeetCode 153. 寻找旋转排序数组中的最小值
https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果原创 2022-07-03 21:48:19 · 80 阅读 · 0 评论 -
LeetCode 374.猜数字大小
https://leetcode.cn/problems/guess-number-higher-or-lower猜数字游戏的规则如下:每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):-1:我选出的数字比你猜的数字小 pick < num1:我选出的数字比你猜的数原创 2022-07-02 22:54:38 · 191 阅读 · 0 评论 -
LeetCode 300. 最长递增子序列
链接:https://leetcode.cn/problems/longest-increasing-subsequence给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。......原创 2022-07-01 22:50:48 · 1480 阅读 · 0 评论 -
LeetCode 35.搜索插入位置
https://leetcode.cn/problems/search-insert-position给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。思路:如果可以找到一个索引 i 使 nums[i] = target,则返回i如果不能找到一个索引,那么应该返回索引 i 使 num[i - 1] < target < num[i]综上,需要找一个 i,使num[i - 1] .原创 2022-07-01 16:52:58 · 100 阅读 · 0 评论 -
LeetCode 621.任务调度器
https://leetcode.cn/problems/task-scheduler给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。原创 2022-06-29 19:12:46 · 194 阅读 · 0 评论 -
LeetCode 860. 柠檬水找零
https://leetcode.cn/problems/lemonade-change在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,原创 2022-06-29 17:27:38 · 75 阅读 · 0 评论 -
LeetCode 134.加油站
https://leetcode.cn/problems/gas-station在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost ,如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一 的。例如:输入: gas = [1,2,3,4,5], c原创 2022-06-29 16:00:15 · 130 阅读 · 0 评论 -
LeetCode 452.用最少数量的箭引爆气球
https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,x原创 2022-06-29 00:12:15 · 163 阅读 · 0 评论 -
LeetCode 881.救生艇
https://leetcode.cn/problems/boats-to-save-people给定数组 people 。people[i]表示第 i 个人的体重 ,船的数量不限,每艘船可以承载的最大重量为 limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。返回 承载所有人所需的最小船数 。思路:贪心算法将people数组有小到大排序,由于每艘船最多载两人,如果最小的和最大的重量大于limit,那么最大的只能自己坐一艘船,以此类推,所以可以使用双指针,分别从最小和最大开始原创 2022-06-28 22:29:45 · 262 阅读 · 0 评论 -
LeetCode 435.无重叠区间
https://leetcode.cn/problems/non-overlapping-intervals给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。例如:输入: intervals = [[1,2],[2,3],[3,4],[1,3]]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。思路:贪心算法使区间无重叠,那么首先每个数组的end进行从小到大的排序,从小到大遍历原创 2022-06-28 15:34:28 · 83 阅读 · 0 评论 -
LeetCode 455.分发饼干
https://leetcode.cn/problems/assign-cookies假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。思路:贪心算法,先对两个数组都进行由大到小的排序,如果想让尽原创 2022-06-27 23:26:53 · 69 阅读 · 0 评论 -
LeetCode 64. 最小路径和
https://leetcode.cn/problems/minimum-path-sum/给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。思路:设dp[i][j]表示到达grid[i][j]的路径的最小和,由于只能向下或向右,所以其状态与dp[i - 1][j] ,dp[i][j - 1]有关,取二者之间的最小值即可。状态方程为:dp[i][j] = Math.min(dp[i - 1][j],原创 2022-06-23 23:28:57 · 60 阅读 · 0 评论 -
LeetCode 416.分割等和子集
https://leetcode.cn/problems/partition-equal-subset-sum/给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。思路:这个问题可以总结成0-1背包问题。求的nums的总和sum,两个子集元素和相等,即总容量为sum / 2,所以转化为求 i 个值填满容量为sum / 2的背包,恰好能装满。设dp[i][j]表示前i个物品是否能装满容积为j的背包,当dp[i][j]为true时表示恰原创 2022-06-23 22:31:18 · 108 阅读 · 0 评论 -
LeetCode 343.整数拆分
动态规划原创 2022-06-23 18:13:44 · 99 阅读 · 0 评论 -
LeetCode 72.编辑距离
动态规划原创 2022-06-22 17:56:52 · 58 阅读 · 0 评论 -
LeetCode 322.零钱兑换
动态规划原创 2022-06-22 17:00:58 · 76 阅读 · 0 评论 -
LeetCode 188.买卖股票的最佳时机IV
动态规划原创 2022-06-21 23:41:41 · 807 阅读 · 0 评论 -
LeetCode 123.买卖股票的最佳时机III
leetcode刷题 动态规划原创 2022-06-21 23:12:48 · 1172 阅读 · 0 评论 -
LeetCode 120. 三角形最小路径和
LeetCode刷题 动态规划原创 2022-06-20 18:38:14 · 92 阅读 · 0 评论 -
LeetCode 279.完全平方数
LeetCode刷题 动态规划原创 2022-06-20 17:19:55 · 94 阅读 · 0 评论 -
LeetCode 63. 不同路径II
Leetcode刷题 动态规划原创 2022-06-18 22:39:29 · 161 阅读 · 0 评论 -
LeetCode 62. 不同路径
leetCode刷题 动态规划原创 2022-06-17 12:41:58 · 84 阅读 · 0 评论 -
LeetCode 69. x 的平方根
https://leetcode.cn/problems/sqrtx给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。用二分法处理在0-x之间不断二分,找到一个值的平方是xvar mySqrt = function(x) { let left = 0; let right = x; while(left原创 2022-05-25 22:27:33 · 72 阅读 · 0 评论 -
LeetCode 704. 二分查找
https://leetcode.cn/problems/binary-search给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。JS api可以搞定indexOfvar search = function(nums, target) { return nums.indexOf(target)};findIndexvar search = function(n原创 2022-05-11 23:27:37 · 88 阅读 · 0 评论 -
LeetCode刷题分类
动态规划509. 斐波那契数62. 不同路径63. 不同路径 II70. 爬楼梯279. 完全平方数120. 三角形最小路径和152. 乘积最大子数组121. 买卖股票的最佳时机122. 买卖股票的最佳时机 II123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV309. 最佳买卖股票时机含冷冻期714. 买卖股票的最佳时机含手续费322. 零钱兑换72. 编辑距离10. 正则表达式匹配312. 戳气球343. 整数拆分416. 分割等和子集19..原创 2022-05-11 00:24:48 · 157 阅读 · 0 评论 -
LeetCode 2176. 统计数组中相等且可以被整除的数对
https://leetcode-cn.com/problems/count-equal-and-divisible-pairs-in-an-array给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 k ,请你返回满足 0 <= i < j < n ,nums[i] == nums[j] 且 (i * j) 能被 k 整除的数对 (i, j) 的 数目 。思路:暴力枚举,两次循环获得最终结果var countPairs = function(nums, k)原创 2022-03-19 22:06:41 · 275 阅读 · 0 评论 -
LeetCode 1.两数之和
https://leetcode-cn.com/problems/two-sum给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。思路:暴力枚举两个for循环进行遍历,找到两个位置的值相加为target,返回两个索引。时间复杂度为O(n2)var twoSum = function(nu原创 2022-03-16 23:59:04 · 87 阅读 · 0 评论 -
LeetCode 26.删除有序数组中的重复项
https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k原创 2022-03-14 22:45:51 · 84 阅读 · 0 评论