力扣刷题
文章平均质量分 67
对力扣题目的一些解题记录
小灰不停前进
每一天都应该是值得被尊重的
展开
-
2744. 最大字符串配对数目
Problem: 2744. 最大字符串配对数目文章目录思路解题方法复杂度Code思路要求返回数组中的反转字符数目;数组中每个元素都是固定的2个长度的小写字符串,且不相同;由不相同可知如果是aa,bb这种类型的必定不会有反转字符串;解题方法从后向前遍历暴力对比解题复杂度时间复杂度O(n2)O(n^2)O(n2)空间复杂度 O(n)O(n)O(n)Codeclass Solution {public: int maximumNumberOfString原创 2024-01-17 17:44:51 · 463 阅读 · 0 评论 -
2645. 构造有效字符串的最少插入数
对于处理字符串中的拼凑效果需要对于元素进行情况梳理和简要分析就可以暴力解题。原创 2024-01-11 00:57:06 · 428 阅读 · 0 评论 -
2645. 构造有效字符串的最少插入数
Problem: 2645. 构造有效字符串的最少插入数文章目录思路解题方法复杂度Code思路决定开头的差距;决定中间的补足决定末尾的差距;解题方法开头的位置对于a不做处理,b则做出加一的处理,c则是加二的处理方法;中间的位置对于当前位置是a,如果下一个位置是b,不做处理,如果是c则是加一,a则是加2;同理可得b对于a+1,b+2,c对于b+1,c+2.综合上面两点,将加一和加二的情况进行分类处理;末尾c不处理,b+1,a+2复杂度时间复杂度: O(n)O(n原创 2024-01-11 00:52:20 · 365 阅读 · 0 评论 -
力扣2696. 删除子串后的字符串最小长度
栈的在成对匹配中的使用原创 2024-01-10 20:05:14 · 1043 阅读 · 0 评论 -
383. 赎金信C++
时间复杂度:空间复杂度:原创 2024-01-07 10:22:21 · 906 阅读 · 0 评论 -
Leetcode2807. 在链表中插入最大公约数
这段代码是一个计算两个整数最大公约数的函数,使用了欧几里得算法。原创 2024-01-06 17:37:33 · 469 阅读 · 0 评论 -
力扣227. 基本计算器 II-C语言实现-中等难度题
题目传送门文本给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。示例 1:输入:s = “3+2*2”输出:7示例 2:输入:s = " 3/2 "输出:1示例 3:输入:s = " 3+5 / 2 "输出:5提示:1 <= s.length <= 3 * 105s 由整数和算符 ('+', '-', '*', '/') 组成,中间由一些空格隔开s 表示一个 有效表达式表达式中的所有整数都是非负整数,且在范围 [0,原创 2021-03-11 23:00:37 · 348 阅读 · 0 评论 -
力扣224.基本计算器-C语言实现-困难题
题目传送门文本实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。示例 1:输入:s = “1 + 1”输出:2示例 2:输入:s = " 2-1 + 2 "输出:3示例 3:输入:s = “(1+(4+5+2)-3)+(6+8)”输出:23提示:1 <= s.length <= 3 * 105s 由数字、'+'、'-'、'('、')'、和 ' ' 组成s 表示一个有效的表达式来源:力扣(LeetCode)模板int calcula原创 2021-03-10 23:34:41 · 246 阅读 · 0 评论 -
力扣1047. 删除字符串中的所有相邻重复项-C语言实现-简单题
题目传送门文本给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。原创 2021-03-09 08:19:01 · 1232 阅读 · 0 评论 -
力扣132. 分割回文串 II-C语言实现-困难题
题目(真心不会)传送门文本给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。示例 1:输入:s = “aab”输出:1解释:只需一次分割就可将 s 分割成 [“aa”,“b”] 这样两个回文子串。示例 2:输入:s = “a”输出:0示例 3:输入:s = “ab”输出:1提示:1 <= s.length <= 2000s 仅由小写英文字母组成来源:力扣(LeetCode)模板int mi转载 2021-03-08 17:42:05 · 290 阅读 · 0 评论 -
力扣131. 分割回文串-C语言实现-中等难度
题目传送门文本给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: “aab”输出:[[“aa”,“b”],[“a”,“a”,“b”]]来源:力扣(LeetCode)模板/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Not原创 2021-03-07 22:07:35 · 436 阅读 · 0 评论 -
力扣503. 下一个更大元素 II-C语言实现-中等难度题
题目传送门文本给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个 1 的下一个最大的数需要循环搜索,结果也是 2。注意: 输入数组的长度不会超过 1000原创 2021-03-06 15:47:54 · 166 阅读 · 0 评论 -
力扣896. 单调数列-C语言实现-简单题
题目传送门文本如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。示例 1:输入:[1,2,2,3]输出:true示例 2:输入:[6,5,4,4]输出:true示例 3:输入:[1,3,2]输出:false示例原创 2021-02-28 08:33:28 · 318 阅读 · 0 评论 -
力扣1178. 猜字谜-C语言实现-困难题
题目传送门文本外国友人仿照中国字谜设计了一个英文版猜字谜小游戏,请你来猜猜看吧。字谜的迷面 puzzle 按字符串形式给出,如果一个单词 word 符合下面两个条件,那么它就可以算作谜底:单词 word 中包含谜面 puzzle 的第一个字母。单词 word 中的每一个字母都可以在谜面 puzzle 中找到。例如,如果字谜的谜面是 "abcdefg",那么可以作为谜底的单词有 "faced", "cabbage", 和 "baggage";而 "beefed"(不含字母 "a")以及 "b原创 2021-02-26 12:20:29 · 217 阅读 · 0 评论 -
力扣867. 转置矩阵-C语言实现-简单题
题目传送门文本给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:matrix = [[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]提示:m == matrix.lengthn == matrix[i原创 2021-02-25 18:17:32 · 220 阅读 · 0 评论 -
力扣832. 翻转图像-C语言实现-简单题
题目传送门文本给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入: [[1,1,0],[1,0,1],[0,0,0]]输出: [[1,0,0],[0,1,0],[1,1,1]]解释: 首先翻转每一行: [原创 2021-02-24 08:11:17 · 441 阅读 · 0 评论 -
力扣125. 验证回文串-C语言实现-简单题
题目传送门文本给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false来源:力扣(LeetCode)模板bool isPalindrome(char * s){}解题分析题目中对于回文是只验证对于数字和字母的回文判断。所以需要对于符原创 2021-02-23 11:52:27 · 398 阅读 · 1 评论 -
力扣1052. 爱生气的书店老板-C语言实现-中等难度
题目传送门文本今天,书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X 分钟不生气,但却只能使用一次。请你返回这一天营业下来原创 2021-02-23 06:30:31 · 134 阅读 · 0 评论 -
力扣766. 托普利茨矩阵-C语言实现-简单题
题目传送门文本给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。示例 1:输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]输出:true解释:在上述矩阵中, 其对角线为:“[9]”, “[5, 5]”, “[1, 1, 1]”, “[2, 2, 2]”, “[3, 3]”, “[4]”。各条原创 2021-02-22 09:37:01 · 413 阅读 · 0 评论 -
力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度
题目传送门文本给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。如果不存在满足条件的子数组,则返回 0 。示例 1:输入:nums = [8,2,4,7], limit = 4输出:2解释:所有子数组如下:[8] 最大绝对差 |8-8| = 0 <= 4.[8,2] 最大绝对差 |8-2| = 6 > 4.[8,2,4] 最大绝对差 |8-2| = 6 &g原创 2021-02-21 19:53:19 · 132 阅读 · 1 评论 -
力扣1009. 十进制整数的反码-C语言实现-简单题
题目传送门文本每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 “101”,11 可以用二进制 “1011” 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。二进制的反码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 “101” 的二进制反码为 “010”。给你一个十进制数 N,请你返回其二进制表示的反码所对应的十进制整数。示例 1:输入:5输出:2解释:5 的二进制表示为 “101”,其二进制反码为 “010”,也就是十进原创 2021-02-19 11:16:39 · 123 阅读 · 0 评论 -
力扣1004. 最大连续1的个数 III-C语言实现-中等难度题
题目传送门文本给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。返回仅包含 1 的最长(连续)子数组的长度。示例 1:输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释:[1,1,1,0,0,1,1,1,1,1,1]粗体数字从 0 翻转到 1,最长的子数组长度为 6。示例 2:输入:A = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3输出:10解释:原创 2021-02-19 09:49:32 · 322 阅读 · 0 评论 -
力扣995. K 连续位的最小翻转次数-C语言实现-困难题
题目传送门文本在仅包含 0 和 1 的数组 A 中,一次 K 位翻转包括选择一个长度为 K 的(连续)子数组,同时将子数组中的每个 0 更改为 1,而每个 1 更改为 0。返回所需的 K 位翻转的最小次数,以便数组没有值为 0 的元素。如果不可能,返回 -1。示例 1:输入:A = [0,1,0], K = 1输出:2解释:先翻转 A[0],然后翻转 A[2]。示例 2:输入:A = [1,1,0], K = 2输出:-1解释:无论我们怎样翻转大小为 2 的子数组,我们都不原创 2021-02-18 15:35:37 · 129 阅读 · 0 评论 -
力扣75.颜色分类-C语言实现-中等难度题
题目传送门给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:nums = [1]输出:[1]提示:原创 2021-02-17 12:14:01 · 321 阅读 · 0 评论 -
力扣1736. 替换隐藏数字得到的最晚时间-C语言实现-简单题
题目传送门给你一个字符串 time ,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用 ? 表示)。有效的时间为 00:00 到 23:59 之间的所有时间,包括 00:00 和 23:59 。替换 time 中隐藏的数字,返回你可以得到的最晚有效时间。示例 1:输入:time = “2?:?0”输出:“23:50”解释:以数字 ‘2’ 开头的最晚一小时是 23 ,以 ‘0’ 结尾的最晚一分钟是 50 。示例 2:输入:time = “0?:3?”输出:“09:39原创 2021-02-17 11:04:39 · 410 阅读 · 0 评论 -
力扣566. 重塑矩阵-C语言实现-简单题
题目传送门在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:nums =[[1,2],[3,4]]r = 1, c = 4输出:[[1,2,3,4]]原创 2021-02-17 09:26:54 · 582 阅读 · 1 评论 -
力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题
题目传送门如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 。例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是。给你一个表示十进制整数的字符串 n ,返回和为 n 的 十-二进制数 的最少数目。示例 1:输入:n = “32”输出:3解释:10 + 11 + 11 = 32示例 2:输入:n = “82734”输出:8示例 3:输入:n = “27346209830709182346”原创 2021-02-16 21:24:16 · 208 阅读 · 0 评论 -
力扣561. 数组拆分 I-C语言实现-简单题
题目传送门给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该 最大总和 。示例 1:输入:nums = [1,4,3,2]输出:4解释:所有可能的分法(忽略元素顺序)为:(1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3(1, 3), (2, 4) -> mi原创 2021-02-16 14:51:13 · 454 阅读 · 0 评论 -
力扣485. 最大连续1的个数-C语言实现-简单题
题目【题目传送门】给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。来源:力扣(LeetCode)解题简单题我重拳出击:>分析题目给出了二进制数组,不是0就是1题目中有连续要求所以对于对于1则是叠加次数,遇上0则是要求需要进行重置当前的计数,二最后返回是要求最大的原创 2021-02-15 10:57:14 · 461 阅读 · 0 评论 -
力扣448. 找到所有数组中消失的数字
题目[传送门]给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]来源:力扣(LeetCode)解题模板/** * Note: The returned array m原创 2021-02-13 13:08:03 · 121 阅读 · 0 评论 -
力扣119.杨辉三角II-C语言实现
题目给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pascals-triangle-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题模板:/** * Note: The returned array must be malloced, assu原创 2021-02-12 18:02:50 · 480 阅读 · 0 评论 -
力扣703. 数据流中的第 K 大元素-C语言实现-简单题
题目传送门设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。请实现 KthLargest 类:KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。示例:输入:[“KthLargest”, “add”, “add”, “add”, “add”, “add”][[3,原创 2021-02-11 23:50:26 · 149 阅读 · 0 评论 -
力扣567.字符串的排列—C语言实现
题目来源:力扣(LeetCode)????传送门给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = “ab” s2 = “eidbaooo”输出: True解释: s2 包含 s1 的排列之一 (“ba”).示例2:输入: s1= “ab” s2 = “eidboaoo”输出: False注意:输入的字符串只包含小写字母两个字符串的长度都在 [1, 10,000]原创 2021-02-10 14:02:46 · 421 阅读 · 0 评论 -
力扣992.K个不同整数的子数组-C语言实现
题目原题链接给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。(例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。)返回 A 中好子数组的数目。示例 1:输入:A = [1,2,1,2,3], K = 2输出:7解释:恰好由 2 个不同整数组成的子数组:[1,2], [2,1], [1,2], [2,3], [1,2,1], [2,1,2], [1,2,1,2].示例 2:输入:A =原创 2021-02-09 15:37:56 · 108 阅读 · 0 评论 -
力扣978.最长湍流子数组-C语言
题目最长湍流子数组当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组:若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k] < A[k+1];或 若 i <= k < j,当 k 为偶数时,A[k] > A[k+1] ,且当 k 为奇数时, A[k] < A[k+1]。也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。返原创 2021-02-08 11:24:16 · 111 阅读 · 0 评论 -
力扣655.非递减数列
题目非递减数列链接给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。示例 1:输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示例 2:输入: nums = [4,2,1]输出: false解释:原创 2021-02-07 16:12:23 · 105 阅读 · 0 评论 -
力扣1423. 可获得的最大点数-C语言
题目题目链接几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。你的点数就是你拿到手中的所有卡牌的点数之和。给你一个整数数组 cardPoints 和整数 k,请你返回可以获得的最大点数。示例 1:输入:cardPoints = [1,2,3,4,5,6,1], k = 3输出:12解释:第一次行动,不管拿哪张牌,你的点数总是 1 。但是,先拿最右边的卡牌将会最大化你的原创 2021-02-06 11:55:36 · 124 阅读 · 0 评论 -
力扣1208.尽可能使字符串相等
题目给你两个长度相同的字符串,s 和 t。将 s 中的第 i 个字符变到 t 中的第 i 个字符需要 |s[i] - t[i]| 的开销(开销可能为 0),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 maxCost。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。如果你可以将 s 的子字符串转化为它在 t 中对应的子字符串,则返回可以转化的最大长度。如果 s 中没有子字符串可以转化成 t 中对应的子字符串,则返回 0。示例 1:原创 2021-02-05 13:08:33 · 132 阅读 · 0 评论 -
力扣643.子数组最大平均数I-C语言实现
题目给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例:输入:[1,12,-5,-6,50,3], k = 4输出:12.75解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75提示:1 <= k <= n <= 30,000。所给数据范围 [-10,000,10,000]。来源:力扣(LeetCode)链接:子数组最大平均数I著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。分析力扣在编原创 2021-02-05 08:51:50 · 432 阅读 · 0 评论