力扣
无
wowon~
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode--509. 斐波那契数(递归,记忆化搜索)
斐波那契数,通常用F(n) 表示,形成的序列称为 斐波那契数列 。该数列由0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1)= 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。示例 1:输入:2输出:1解释:F(2) = F(1) + F(0) = 1 + 0 = 1示例 2:输入:3输出:2解释:F(3) = F(2) + F(1) = 1 + 1 = 2示例 ...原创 2021-11-12 23:22:28 · 514 阅读 · 0 评论 -
LeetCode--70. 爬楼梯(滚动数组优化)
假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶class Solution {public: ...原创 2021-11-13 11:05:29 · 974 阅读 · 0 评论 -
LeetCode--1137. 第 N 个泰波那契数
泰波那契序列Tn定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数n,请返回第 n 个泰波那契数Tn 的值。示例 1:输入:n = 4输出:4解释:T_3 = 0 + 1 + 1 = 2T_4 = 1 + 1 + 2 = 4示例 2:输入:n = 25输出:1389537提示:0 <= n <= 37答案保证是一个 32 位整数,即an...原创 2021-11-12 23:42:38 · 464 阅读 · 0 评论 -
LeetCode--55. 跳跃游戏
给定一个非负整数数组nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。示例1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达...原创 2021-11-15 20:37:54 · 3035 阅读 · 0 评论 -
LeetCode--213. 打家劫舍 II(数组,动态规划)
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。示例1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因..原创 2021-11-13 23:22:02 · 146 阅读 · 0 评论 -
LeetCode--746. 使用最小花费爬楼梯
数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 1 的元素作为初始阶梯。示例1:输入:cost = [10, 15, 20]输出:15解释:最低花费是从 cost[1] 开始,然后走两步即可到阶梯顶,一共花费 15 。示例 2:输入:co...原创 2021-11-13 11:44:18 · 129 阅读 · 0 评论 -
LeetCode--740. 删除并获得点数(哈希表,动态规划)
给你一个整数数组nums,你可以对它进行一些操作。每次操作中,选择任意一个nums[i],删除它并获得nums[i]的点数。之后,你必须删除 所有 等于nums[i] - 1 和 nums[i] + 1的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。示例 1:输入:nums = [3,4,2]输出:6解释:删除 4 获得 4 个点数,因此 3 也被删除。之后,删除 2 获得 2 个点数。总共获得 6 个点数。示例2:输入:nums =...原创 2021-11-15 12:52:32 · 794 阅读 · 0 评论 -
LeetCode--198. 打家劫舍(数组,动规)
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。示例 2:...原创 2021-11-13 22:36:16 · 138 阅读 · 0 评论 -
LeetCode--35. 搜索插入位置(二分查找)
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4示例 4:输入: nums = [1,3,5,6..原创 2021-11-17 00:08:47 · 135 阅读 · 0 评论 -
LeetCode--278. 第一个错误的版本(二分查找,交互)
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用bool isBadVersion(version)接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。示例 1:输入:n ...原创 2021-11-16 23:53:58 · 122 阅读 · 0 评论 -
LeetCode--704. 二分查找
给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以假设...原创 2021-11-15 20:53:06 · 1012 阅读 · 0 评论 -
LeetCode--45. 跳跃游戏 II(贪心,动态规划)
给你一个非负整数数组nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。示例 2:输入: nums = [2,3,0,1,4]输出: 2...原创 2021-11-15 14:05:48 · 2869 阅读 · 0 评论 -
LeetCode--122. 买卖股票的时机 II
给定一个数组 prices ,其中prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: prices = [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4...原创 2021-11-22 23:46:19 · 145 阅读 · 0 评论 -
LeetCode--53. 最大子序和
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000提示...原创 2021-11-18 13:45:59 · 930 阅读 · 0 评论 -
LeetCode--1014. 观光组合(数组,动规)
给你一个正整数数组 values,其中 values[i]表示第 i 个观光景点的评分,并且两个景点i 和j之间的 距离 为j - i。一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,也就是景点的评分之和 减去 它们两者之间的距离。返回一对观光景点能取得的最高分。示例 1:输入:values = [8,1,5,2,6]输出:11解释:i = 0, j = 2, values[i] + values[j] +...原创 2021-11-22 21:57:44 · 2882 阅读 · 0 评论 -
LeetCode--121. 买卖股票的时机(数组,动态规划)
给定一个数组 prices ,它的第i 个元素prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2021-11-22 22:33:57 · 205 阅读 · 0 评论 -
LeetCode--309. 买卖股票时机含冷冻期(数组,动规)
给定一个整数数组,其中第i个元素代表了第i天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]在做过这个题目LeetCode--122. 买卖股票的时机 II_wit...原创 2021-11-23 00:20:21 · 115 阅读 · 0 评论 -
LeetCode--977. 有序数组的平方(双指针)
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums = [-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]示例 2:输入:nums = [-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= nums.length <= 104-104 ..原创 2021-11-19 12:59:29 · 122 阅读 · 0 评论 -
LeetCode--1567. 乘积为正数的最长子数组长度(贪心,动归)
给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。请你返回乘积为正数的最长子数组长度。示例 1:输入:nums = [1,-2,-3,4]输出:4解释:数组本身乘积就是正数,值为 24 。示例 2:输入:nums = [0,1,-2,-3,-4]输出:3解释:最长乘积为正数的子数组为 [1,-2,-3] ,乘积为 6 。注意,我们不能把 0 也包括到子数组中,因为这样乘积为 0 ,不是正..原创 2021-11-21 17:09:27 · 202 阅读 · 0 评论 -
LeetCode--152. 乘积最大子数组
给你一个整数数组 nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释:结果不能为 2, 因为 [-2,-1] 不是子数组。思路很直观,也很直观的错了~????忽略掉了一个坑:乘法的正负。就比如1 2 3 -2 -4 那么选取全部才是最大的为48,而下面的代码算出的结果会是8。..原创 2021-11-18 15:32:41 · 299 阅读 · 0 评论 -
LeetCode--918. 环形子数组的最大和(数组,动归)
给定一个由整数数组 A表示的环形数组 C,求 C的非空子数组的最大可能和。在此处,环形数组意味着数组的末端将会与开头相连呈环状。(形式上,当0 <= i < A.length时C[i] = A[i],且当i >= 0时C[i+A.length] = C[i])此外,子数组最多只能包含固定缓冲区 A中的每个元素一次。(形式上,对于子数组C[i], C[i+1], ..., C[j],不存在i <= k1, k2 <= j其中k1 % A.leng...原创 2021-11-18 14:41:18 · 184 阅读 · 0 评论 -
LeetCode--392. 判断子序列(双指针,动态规划)
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶:如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?致谢:特别感谢 @pbrother添加此问题并且创建所有测试用例。示例 1:输入:..原创 2021-12-02 14:23:14 · 165 阅读 · 0 评论 -
LeetCode--413. 等差数列划分
如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。示例 1:输入:nums = [1,2,3,4]输出:3解释:nums 中有三个子等差数组:[1, 2, 3]、[2, 3, 4] 和 [1,2,3,4] 自身。示例 2:输入:num.原创 2021-12-02 14:49:24 · 845 阅读 · 0 评论 -
LeetCode--279. 完全平方数
给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。示例1:输入:n = 12输出:3解释:12 = 4 + 4 + 4示例 2:输入:n = 13输出:2解释:13 =...原创 2021-12-02 15:15:56 · 147 阅读 · 0 评论 -
LeetCode--377. 组合总和 Ⅳ(完全背包)
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。题目数据保证答案符合 32 位整数范围。示例 1:输入:nums = [1,2,3], target = 4输出:7解释:所有可能的组合为:(1, 1, 1, 1)(1, 1, 2)(1, 2, 1)(1, 3)(2, 1, 1)(2, 2)(3, 1)请注意,顺序不同的序列被视作不同的组合。示例 2:输入:nums.原创 2021-12-02 19:15:57 · 205 阅读 · 0 评论 -
LeetCode--62. 不同路径
一个机器人位于一个 m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3. ..原创 2021-12-02 15:52:33 · 399 阅读 · 0 评论 -
LeetCode--714. 买卖股票的时机含手续费(贪心)
给定一个整数数组prices,其中第i个元素代表了第i天的股票价格 ;整数fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。示例 1:输入:prices = [1, 3, 2, 8, 4, 9], fee = 2输出:8解释:能够达到的最大利润: 在此处买...原创 2021-11-23 00:54:43 · 160 阅读 · 0 评论 -
LeetCode--518. 零钱兑换 II(完全背包求方案数)
给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。示例 1:输入:amount = 5, coins = [1, 2, 5]输出:4解释:有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+15=1+1+1+1+1示例 2:输入:amount = 3, c..原创 2021-12-02 15:45:22 · 182 阅读 · 0 评论 -
LeetCode--322. 零钱兑换(完全背包)
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回-1 。你可以认为每种硬币的数量是无限的。示例1:输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], amount = 3输出:-1示例 3:输入:coins = [1], amou...原创 2021-12-02 15:32:36 · 198 阅读 · 0 评论 -
LeetCode--343. 整数拆分(动态规划)
给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 ×3 ×4 = 36。说明: 你可以假设n不小于 2 且不大于 58。首先dp【i】表示整数i将其拆分为至少两个正整数的和可以获得的最大乘积。那么dp【0】=dp【1】=0;//0不是正整数,1不可拆分...原创 2021-12-02 18:51:36 · 212 阅读 · 0 评论
分享