自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 收藏
  • 关注

原创 416. 分割等和子集

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100数组的大小不会超过 200 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/partition-equal-subset-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。bool canPartition(int* nums, int numsSize){ int sum = .

2021-04-13 16:04:58 235

原创 413. 等差数列划分

如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。 例如,以下数列为等差数列: 1, 3, 5, 7, 97, 7, 7, 7 3, -1, -5, -9 以下数列不是等差数列。 1, 1, 2, 5, 7 数组 A 包含 N个数,且索引从0开始。数组 A 的一个子数组划分为数组 (P, Q),P 与 Q 是整数且满足 0<=P<Q<N 。如果满足以下条件,则称子数组(P, Q)为等差数组: 元素 A[P], A[p + 1], …, A[Q - 1].

2021-04-05 17:12:51 224

原创 403. 青蛙过河

一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。青蛙可以跳上石子,但是不可以跳入水中。 给你石子的位置列表 stones(用单元格序号 升序 表示),请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。 开始时,青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 1 跳至单元格 2 )。 如果青蛙上一步跳跃了 k个单位,那么它接下来的跳跃距离只能选择为 k - 1、k 或 k + 1 个单位。 另请注.

2021-04-04 23:47:59 210

原创 392. 判断子序列

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。进阶: 如果有大量输入的 S,称作 S1, S2, … , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T的子序列。在这种情况下,你会怎样改变代码?bool isSubsequence(char * s, char * t){ int s_len =.

2021-04-02 16:28:55 71

原创 377. 组合总和 Ⅳ

给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 提示:1 <= nums.length <= 2001 <= nums[i] <= 1000nums 中的所有元素 互不相同1 <=target <= 1000 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/com.

2021-04-01 19:45:00 72

原创 376. 摆动序列

如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5]和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一些(也可以不删除)元素.

2021-03-31 10:47:27 89

原创 375. 猜数字大小 II

我们正在玩一个猜数游戏,游戏规则如下: 我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了。 然而,当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x的现金。直到你猜到我选的数字,你才算赢得了这个游戏。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出.

2021-03-30 17:03:50 270

原创 368. 最大整除子集

给出一个由无重复的正整数组成的集合,找出其中最大的整除子集,子集中任意一对 (Si,Sj) 都要满足:Si % Sj = 0 或 Sj %Si = 0。 如果有多个目标子集,返回其中任何一个均可。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-divisible-subset著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。int cmp(int* px,int* py){ return (*px).

2021-03-29 15:25:44 133

原创 343. 整数拆分

给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。int integerBreak(int n){ int ret1 = 0, ret2 = 0; for(int i = 2; i <= n; i++) { int result = 1; int temp = 0; for(int j = i; j > 0; j--) { .

2021-03-26 15:21:46 71

原创 322. 零钱兑换

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/coin-change著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。#define INTMAX 2147483647int coinChange(int* coins, i.

2021-03-25 17:42:44 73

原创 312. 戳气球

有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i个气球,你可以获得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。 这里的 i - 1 和 i + 1代表和 i 相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界,那么就当它是一个数字为 1 的气球。求所能获得硬币的最大数量。 来源:力扣(LeetCode)链接:https://leetcode-cn.co.

2021-03-24 14:40:32 61

原创 300. 最长递增子序列

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组[0,3,1,6,2,2,7] 的子序列。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-increasing-subsequence著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。int lengthOfLIS(int* nu.

2021-03-24 11:06:27 78

原创 279. 完全平方数

给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。 完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11不是。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/perfect-squares著作权归领扣网络所.

2021-03-23 18:33:27 86

原创 221. 最大正方形

在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。int maximalSquare(char** matrix, int matrixSize, int* matrixColSize){ int row = matrixSize; int line = matrixColSize[0]; if(row == 1 && line == 1) { return matrix[0][0] == '.

2021-03-21 15:48:02 59

原创 213. 打家劫舍 II

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,能够偷窃到的最高金额。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/house-robber-ii著作权归领扣网络所有。商业.

2021-03-21 11:24:36 80

原创 174. 地下城游戏

一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值为正整数,则表示骑士将增加健康点.

2021-03-19 16:11:50 75

原创 198. 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/house-robber著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。int ro.

2021-03-19 15:50:25 67

原创 152. 乘积最大子数组

给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。#define MAX(a, b) ((a) > (b) ? (a) : (b))#define MIN(a, b) ((a) < (b) ? (a) : (b))int maxProduct(int* nums, int numsSize){ int dpMax[numsSize]; int dpMin[numsSize]; dpM.

2021-03-17 16:16:36 64

原创 140. 单词拆分 II

给定一个非空字符串 s 和一个包含非空单词列表的字典wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。 说明:分隔时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/word-break-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。char **ret = NULL;int retSize = .

2021-03-16 16:19:55 93

原创 139. 单词拆分

给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明:拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/word-break著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。bool wordBreak(char * s, char ** wordDict, int wordDi.

2021-03-14 16:23:03 72

原创 132. 分割回文串 II

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。 返回符合要求的 最少分割次数 。#define MIN(a,b) ((a) < (b) ? (a) : (b))int minCut(char * s){ int len = strlen(s); int dp[len][len]; for(int i = 0; i < len; i++) { dp[i][i] = 1; } for(int i.

2021-03-13 15:55:19 47

原创 131. 分割回文串

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串是正着读和反着读都一样的字符串。char ***ret = NULL;int retSize = 0;int *retColSize = NULL;char **str = NULL;int **dp = NULL;int** isPalindrome(char* s, int start, int end){ int len = end - start + 1; .

2021-03-12 22:04:14 71

原创 125. 验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。bool isPalindrome(char * s){ if(s == NULL) { return true; } bool flag = true; bool out = false; int len = strlen(s); char *str = (char*)malloc(sizeof(ch.

2021-03-11 12:41:32 76

原创 123. 买卖股票的最佳时机 III

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。#define MAX(a, b) ((a) &g.

2021-03-10 15:31:59 62

原创 121. 买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock著作权归领扣网络所有。商业转载请联系官.

2021-03-09 14:29:52 169

原创 120. 三角形最小路径和

给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标与上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标i 或 i + 1 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/triangle著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。int minimu.

2021-03-09 00:02:55 52

原创 91. 解码方法

一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> 1‘B’ -> 2…‘Z’ -> 26要解码已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“111” 可以将 “1” 中的每个 “1” 映射为 “A” ,从而得到 “AAA” ,或者可以将 “11” 和 “1”(分别为 “K” 和 “A” )映射为 “KA” 。注意,"06"不能映射为 “F” ,因为 “6” 和 “06” 不同。 给你一个只含数字的 非空 字符串 nu.

2021-03-07 20:50:14 143

原创 85. 最大矩形

给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。int maximalRectangle(char** matrix, int matrixSize, int* matrixColSize){ int row = matrixSize; if(row == 0) { return 0; } int line = matrixColSize[0]; int dp[ro.

2021-03-07 16:40:24 70

原创 72. 编辑距离

给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/edit-distance著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。#define MIN(a,b) ((a) < (b) ? (a) : (b))int minDistan.

2021-03-05 16:53:11 80

原创 70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n是一个正整数。//回溯算法,超出时间限制int num = 0;void backtrack(int n){ if(n == 0) { num++; return; } if(n - 1 >= 0) { backtrack(n-1); } if(n-.

2021-03-04 16:38:51 113 1

原创 64. 最小路径和

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。int minPathSum(int** grid, int gridSize, int* gridColSize){ int row = gridSize; int line = gridColSize[0]; if(row == 0 || line == 0) { return 0; }.

2021-03-04 15:57:16 142 1

原创 63. 不同路径 II

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。int uniquePathsWithOb.

2021-03-04 15:13:51 57 1

原创 62. 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径?来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/unique-paths著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。//回溯算法,超出时间限制int num = 0;void backtrack(.

2021-03-03 20:08:30 56 1

原创 980. 不同路径 III

在二维网格 grid 上,有 4 种类型的方格:1 表示起始方格。且只有一个起始方格。2 表示结束方格,且只有一个结束方格。0 表示我们可以走过的空方格。-1 表示我们无法跨越的障碍。返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目。 每一个无障碍方格都要通过一次,但是一条路径中不能重复通过同一个方格。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths-iii著作权归领扣网络所有。商业.

2021-02-16 23:13:40 118

原创 967. 连续差相同的数字

返回所有长度为 n 且满足其每两个连续位上的数字之间的差的绝对值为 k 的 非负整数 。 请注意,除了 数字 0本身之外,答案中的每个数字都 不能 有前导零。例如,01 有一个前导零,所以是无效的;但 0 是有效的。 你可以按 任何顺序 返回答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/numbers-with-same-consecutive-differences著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。.

2021-02-16 21:44:02 120

原创 842. 将数组拆分成斐波那契序列

给定一个数字字符串 S,比如 S = “123456579”,我们可以将它分成斐波那契式的序列 [123, 456, 579]。形式上,斐波那契式序列是一个非负整数列表 F,且满足:0 <= F[i] <= 2^31 - 1,(也就是说,每个整数都符合 32 位有符号整数类型);F.length >= 3;对于所有的0 <= i < F.length - 2,都有 F[i] + F[i+1] = F[i+2] 成立。另外,请注意,将字符串拆分成小块时,每个块的数字一.

2021-02-15 22:47:06 92

原创 797. 所有可能的路径

给一个有 n 个结点的有向无环图,找到所有从 0 到 n-1 的路径并输出(不要求按顺序)二维数组的第 i 个数组中的单元都表示有向图中 i 号结点所能到达的下一些结点(译者注:有向图是有方向的,即规定了 a→b 你就不能从b→a )空就是没有下一个结点了。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/all-paths-from-source-to-target著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。int.

2021-02-15 14:03:04 143

原创 784. 字母大小写全排列

给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。char **ret = NULL;char *str = NULL;char *S_temp = NULL;int retSize = 0;int *recored = NULL;int len = 0;int num = 0;void isletter(char *str, int *num) //计算字符串个数{ int len = strlen(str).

2021-02-15 12:39:23 131

原创 526. 优美的排列

假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N)满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件: 第 i 位的数字能被 i 整除 i 能被第 i 位上的数字整除现在给定一个整数 N,请问可以构造多少个优美的排列? 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/beautiful-arrangement著作权归领扣网络所有。商业转载请联.

2021-02-14 20:59:46 76

原创 306. 累加数

累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。给定一个只包含数字 ‘0’-‘9’ 的字符串,编写一个算法来判断给定输入是否是累加数。说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/additive-number著作权归领扣网络.

2021-02-14 18:43:24 238

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除