- 博客(42)
- 收藏
- 关注
原创 LeetCode每日一题 - 高度检查器
题目:学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。给你一个整数数组 heights ,表示 当前学生站位 的高度情况。heights[i] 是这一行中第 i 位学生的高度(下标从 0 开始)。返回满足 heights[i] != expected[i] 的 下标数量 。示例 1:输入:heights = [1
2021-08-18 11:27:40 557
原创 LeetCode每日一题 - 矩阵对角线元素的和
题目:给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。示例 1:输入:mat =[[1,2,3],[4,5,6],[7,8,9]]输出:25解释:对角线的和为:1 + 5 + 9 + 3 + 7 = 25请注意,元素 mat[1][1] = 5 只会被计算一次。示例 2:输入:mat =[[1,1,1,1],[1,1,1,1],[1,1,1,1],[1,1,1,1]]输出:8C语言int
2021-08-16 20:24:12 360
原创 LeetCode每日一题 - 判断国际象棋棋盘中一个格子的颜色
题目:给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标。下图是国际象棋棋盘示意图。如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false 。给定坐标一定代表国际象棋棋盘上一个存在的格子。坐标第一个字符是字母,第二个字符是数字。示例 1:输入:coordinates = “a1”输出:false解释:如上图棋盘所示,“a1” 坐标的格子是黑色的,所以返回 false 。思路:找规律,计算字母和数字的奇偶性。C语言:bool
2021-08-03 16:54:46 457
原创 LeetCode每日一题 - 截断句子
题目:句子 是一个单词列表,列表中的单词之间用单个空格隔开,且不存在前导或尾随空格。每个单词仅由大小写英文字母组成(不含标点符号)。例如,“Hello World”、“HELLO” 和 “hello world hello world” 都是句子。给你一个句子 s 和一个整数 k ,请你将 s 截断 ,使截断后的句子仅含 前 k 个单词。返回 截断 s 后得到的句子。示例 1:输入:s = “Hello how are you Cont
2021-07-28 09:43:45 348
原创 LeetCode每日一题 - 棒球比赛
题目:你现在是一场采用特殊赛制棒球比赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。比赛开始时,记录是空白的。你会得到一个记录操作的字符串列表 ops,其中 ops[i] 是你需要记录的第 i 项操作,ops 遵循下述规则:整数 x - 表示本回合新获得分数 x“+” - 表示本回合新获得的得分是前两次得分的总和。题目数据保证记录此操作时前面总是存在两个有效的分数。“D” - 表示本回合新获得的得分是前一次得分的两倍。题目数据保证记录此操作时前面总是存在一个有效的分
2021-07-27 11:04:57 880
原创 LeetCode每日一题 - 卡车上的最大单元数
题目:请你将一些箱子装在 一辆卡车 上。给你一个二维数组 boxTypes ,其中 boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi] :numberOfBoxesi 是类型 i 的箱子的数量。numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。整数 truckSize 表示卡车上可以装载 箱子 的 最大数量 。只要箱子数量不超过 truckSize ,你就可以选择任意箱子装到卡车上。返回卡车可以装载 单元 的 最
2021-07-27 09:30:08 611
原创 LeetCode每日一题 - 2的幂
题目:给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。示例 1:输入:n = 1输出:true解释:20 = 1示例 2:输入:n = 16输出:true解释:24 = 16示例 3:输入:n = 3输出:falseC语言:bool isPowerOfTwo(int n){ if(n==1) return true; whi
2021-07-23 11:13:55 319
原创 LeetCode每日一题 - 数字的补数
题目:给你一个 正 整数 num ,输出它的补数。补数是对该数的二进制表示取反。示例 1:输入:num = 5输出:2解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。示例 2:输入:num = 1输出:0解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。思路:任何一个正整数num,加上它的补数,都等于2^k -1,k为其二进制位数。(即num + num补 = 2^k -1)。所以求补数可以通过(num补)
2021-07-22 10:33:45 230
原创 LeetCode每日一题 - 删除字符串中的所有相邻重复项
题目:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。C语言:ch
2021-07-20 15:19:56 365
原创 LeetCode每日一题 - 有序数组的平方
题目:给你一个按 非递减顺序 排序的整数数组 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]C语言:/** * Note: The returned array must b
2021-07-19 12:06:51 154
原创 LeetCode每日一题 - 商品折扣后的最终价格
题目:给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,其中 j 是满足 j > i 且 prices[j] <= prices[i] 的 最小下标 ,如果没有满足条件的 j ,你将没有任何折扣。请你返回一个数组,数组中第 i 个元素是折扣后你购买商品 i 最终需要支付的价格。示例 1:输入:prices = [8,4,6,2,3]输出:[4,2,
2021-07-18 17:06:32 456
原创 LeetCode每日一题 - 和为零的N个唯一整数
题目:给你一个整数 n,请你返回 任意 一个由 n 个 各不相同 的整数组成的数组,并且这 n 个数相加和为 0 。示例 1:输入:n = 5输出:[-7,-1,1,3,4]解释:这些数组也是正确的 [-5,-1,1,2,3],[-3,-1,2,-2,4]。示例 2:输入:n = 3输出:[-1,0,1]示例 3:输入:n = 1输出:[0]C语言:/** * Note: The returned array must be malloced, assume caller c
2021-07-16 17:11:14 110
原创 LeetCode每日一题 - 唯一元素的和
题目:给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。请你返回 nums 中唯一元素的 和 。示例 1:输入:nums = [1,2,3,2]输出:4解释:唯一元素为 [1,3] ,和为 4 。示例 2:输入:nums = [1,1,1,1,1]输出:0解释:没有唯一元素,和为 0 。示例 3 :输入:nums = [1,2,3,4,5]输出:15解释:唯一元素为 [1,2,3,4,5] ,和为 15 。C语言:int sumOfUnique(
2021-07-16 11:59:54 1177
原创 LeetCode每日一题 - 6 和 9 组成的最大数字
题目:给你一个仅由数字 6 和 9 组成的正整数 num。你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。请返回你可以得到的最大数字。示例 1:输入:num = 9669输出:9969解释:改变第一位数字可以得到 6669 。改变第二位数字可以得到 9969 。改变第三位数字可以得到 9699 。改变第四位数字可以得到 9666 。其中最大的数字是 9969 。示例 2:输入:num = 9996输出:9999解释:将最后一位从 6 变到 9,其结果 99
2021-07-15 17:16:22 503
原创 LeetCode每日一题 - 两个数对之间的最大乘积差
题目:两个数对 (a, b) 和 (c, d) 之间的乘积差定义为 (a * b) - (c * d) 。例如,(5, 6) 和 (2, 7) 之间的乘积差是 (5 * 6) - (2 * 7) = 16 。给你一个整数数组 nums,选出四个 不同的下标 w、x、y 和 z ,使数对 (nums[w], nums[x]) 和 (nums[y], nums[z]) 之间的乘积差取到最大值 。返回以这种方式取得的乘积差中的最大值 。示例 1:输入:nums = [5,6,2,7,4]输出:3
2021-07-14 16:00:17 410
原创 LeetCode每日一题 - 爬楼梯
题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。思路:找规律C语言:int climbStairs(int n){ int a = 1; int b = 2; if(n==1) re
2021-07-13 16:29:22 987
原创 LeetCode每日一题 - 删除有序数组中的重复项
题目:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。示例 1:输入:nums = [1,1,2]输出:2, nums = [1,2]解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。示例 2:输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]解释:函数应该返回新的长度 5 , 并且原数组
2021-07-08 09:47:10 283
原创 LeetCode每日一题 - 最长公共前缀
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。C语言:思路:遍历后面的每一个字符串和第一个字符串比较,如果字母相同则比较下一个字母,字母不同则结束比较,并返回公共前缀。char * longestCommonPrefix(char
2021-06-24 20:49:23 189
原创 LeetCode每日一题 - 数组中两元素的最大乘积
题目:给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。请你计算并返回该式的最大值。示例 1:输入:nums = [3,4,5,2]输出:12解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)(nums[2]-1) = (4-1)(5-1) = 34 = 12 。示例 2:输入:nums = [1,5,4,5]输出:16解释:选择下标 i=1 和 j=3(
2021-06-22 12:07:29 261
原创 LeetCode每日一题 - 比特位计数
题目:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]思路:先设置一个计算二进制1的数目的函数,再定义一个新的数组,调用函数输出数组、C语言:int ones(int x){ int ones = 0; while(x > 0) { x &= x-1;
2021-06-21 15:00:10 140
原创 LeetCode每日一题 - 将所有数字用字符替换
题目:给你一个下标从 0 开始的字符串 s ,它的偶数下标处为小写英文字母,奇数下标处为数字。定义一个函数 shift(c, x) ,其中 c 是一个字符且 x 是一个数字,函数返回字母表中 c 后面第 x 个字符。比方说,shift(‘a’, 5) = ‘f’ 和 shift(‘x’, 0) = ‘x’ 。对于每个 奇数 下标 i ,你需要将数字 s[i] 用 shift(s[i-1], s[i]) 替换。请你替换所有数字以后,将字符串 s 返回。题目 保证 shift(s[i-1], s[i]
2021-06-14 16:35:35 281
原创 LeetCode每日一题 - 速算机器人
题目:小扣在秋日市集发现了一款速算机器人。店家对机器人说出两个数字(记作 x 和 y),请小扣说出计算指令:“A” 运算:使 x = 2 * x + y;“B” 运算:使 y = 2 * y + x。在本次游戏中,店家说出的数字为 x = 1 和 y = 0,小扣说出的计算指令记作仅由大写字母 A、B 组成的字符串 s,字符串中字符的顺序表示计算顺序,请返回最终 x 与 y 的和为多少。示例 1:输入:s = “AB”输出:4解释:经过一次 A 运算后,x = 2, y = 0。再经过
2021-06-11 10:14:30 302 1
原创 LeetCode每日一题 - 找到最高海拔
题目:有一个自行车手打算进行一场公路骑行,这条路线总共由 n + 1 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。给你一个长度为 n 的整数数组 gain,其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差(0 <= i < n)。请你返回最高点的海拔 。示例 1:输入:gain = [-5,1,5,0,-7]输出:1解释:海拔高度依次为 [0,-5,-4,1,1,-6] 。最高海拔为 1 。示例 2:输入:gain = [-4,-3,-2,-
2021-06-10 15:53:29 289
原创 LeetCode每日一题 - 将数字变成 0 的操作次数
题目:给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。示例 1:输入:num = 14输出:6解释:步骤 1) 14 是偶数,除以 2 得到 7 。步骤 2) 7 是奇数,减 1 得到 6 。步骤 3) 6 是偶数,除以 2 得到 3 。步骤 4) 3 是奇数,减 1 得到 2 。步骤 5) 2 是偶数,除以 2 得到 1 。步骤 6) 1 是奇数,减 1 得到 0 。示例 2:输入:num = 8输
2021-06-07 15:11:53 215
原创 LeetCode每日一题 - 检查两个字符串数组是否相等
题目:给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。示例 1:输入:word1 = [“ab”, “c”], word2 = [“a”, “bc”]输出:true解释:word1 表示的字符串为 “ab” + “c” -> “abc”word2 表示的字符串为 “a” + “bc” -> “abc”两个字符串相同,返回 true示例
2021-06-03 12:15:24 305
原创 LeetCode每日一题 - 数组元素积的符号
题目:已知函数 signFunc(x) 将会根据 x 的正负返回特定值:如果 x 是正数,返回 1 。如果 x 是负数,返回 -1 。如果 x 是等于 0 ,返回 0 。给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。返回 signFunc(product) 。示例 1:输入:nums = [-1,-2,-3,-4,3,2,1]输出:1解释:数组中所有值的乘积是 144 ,且 signFunc(144) = 1示例 2:输入:nums = [
2021-06-01 19:43:29 399
原创 LeetCode每日一题 - 有多少小于当前数字的数字
题目:给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]解释:对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。对于 nums[1]=1 不存在比它小的数字。对于 nums[2
2021-06-01 10:14:54 262
原创 LeetCode每日一题 - 统计一致字符串的数目
题目:给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。请你返回 words 数组中 一致字符串 的数目。示例 1:输入:allowed = “ab”, words = [“ad”,“bd”,“aaab”,“baa”,“badab”]输出:2解释:字符串 “aaab” 和 “baa” 都是一致字符串,因为它们只包含字符 ‘a’ 和 ‘b’ 。示例 2:输入:allowed =
2021-05-31 19:36:27 473
原创 Leetcode每日一题 - 哪种连续子字符串更长
题目:给你一个二进制字符串 s 。如果字符串中由 1 组成的最长连续子字符串严格长于 由 0 组成的最长连续子字符串,返回 true ;否则,返回 false 。例如,s = “110100010” 中,由 1 组成的最长连续子字符串的长度是 2 ,由 0 组成的最长连续子字符串的长度是 3 。注意,如果字符串中不存在 0 ,此时认为由 0 组成的最长连续子字符串的长度是 0 。字符串中不存在 1 的情况也适用此规则。示例 1:输入:s = “111000”输出:false解释:由 1 组
2021-05-31 15:01:03 882
原创 Leetcode -整数的各位积和之差
题目:给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。示例 1:输入:n = 234输出:15解释:各位数之积 = 2 * 3 * 4 = 24各位数之和 = 2 + 3 + 4 = 9结果 = 24 - 9 = 15C语言:int subtractProductAndSum(int n){ int i, sum = 0,q = 1; int a[7] = {0}; for(i=0;i<7;i++) {
2021-05-27 16:14:23 215
原创 Leetcode每日一题打卡 - 汉明距离
题目:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0)思路:令 res = x^y ,再计算 res 中带有1的值。C语言:int hammingDistance(int x, int y){ int s, res = 0; s = x ^ y
2021-05-27 10:49:22 138
原创 Leetcode每日一题 - 拿硬币
桌上有 n 堆力扣币,每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆,拿走其中的一枚或者两枚,求拿完所有力扣币的最少次数。示例 1:输入:[4,2,1]输出:4解释:第一堆力扣币最少需要拿 2 次,第二堆最少需要拿 1 次,第三堆最少需要拿 1 次,总共 4 次即可拿完。示例 2:输入:[2,3,10]输出:8限制:1 <= n <= 41 <= coins[i] <= 10简单题:C语言:int minCount(int* coin
2021-05-25 20:42:16 281
原创 Leetcode每日一题 - IP 地址无效化
题目:给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。示例 1:输入:address = “1.1.1.1”输出:“1[.]1[.]1[.]1”示例 2:输入:address = “255.100.50.0”输出:“255[.]100[.]50[.]0”Python3:class Solution: def defangIPaddr(self, address: str) -
2021-05-20 21:08:31 260
原创 Leetcode每日一题 - 重新排列数组
题目:给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列,返回重排后的数组。示例 1:输入:nums = [2,5,1,3,4,7], n = 3输出:[2,3,5,4,1,7]解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7]示例 2:输入:nums = [1,2,3,4,4,3,2,
2021-05-19 16:48:32 353
原创 Leetcode每日一题 - 拥有最多糖果的孩子
题目:给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true]解释:孩子 1 有 2 个糖果,如果
2021-05-18 20:33:38 131
原创 Leetcode每日一题 - 好数对的数目
我认为是最简单的题目了!!!题目:给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始示例 2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对思路:楼主水平有
2021-05-14 15:46:31 205
原创 Leetcode每日一题 - 最富有客户的资产总量
题目:给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的资产总量 。客户的 资产总量就是他们在各家银行托管的资产数量之和。最富有客户就是资产总量最大的客户。示例 1:输入:accounts = [[1,2,3],[3,2,1]]输出:6解释:第 1 位客户的资产总量 = 1 + 2 + 3 = 6第 2 位客户的资产总量 = 3 + 2 + 1 = 6两位
2021-05-13 21:07:55 196
原创 Leetcode每日一题 - 宝石与石头
题目:给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S = “ZZ”输出: 0注意:S 和 J 最多含有50个字母。J 中的字符不重复。思路:在石头中遍历宝石的
2021-05-13 17:03:27 246
原创 Leetcode每日一题 - 解码异或后的数组
题目:未知 整数数组 arr 由 n 个非负整数组成。经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。给你编码后的数组 encoded 和原数组 arr 的第一个元素 first(arr[0])。请解码返回原数组 arr 。可以证明答案存在并且是唯一的。示例 1:输入:encoded = [1,2,3], f
2021-05-12 11:53:43 155
原创 Leetcode面试题 - 左旋转字符串
题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。限制:1 <= k < s.length <= 10000示例 1:输入: s = "abcdefg", k = 2输出: "cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出: "umghlrlose"C语言版本:char*
2021-05-10 20:50:20 170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人