![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
星河有鱼
这个作者很懒,什么都没留下…
展开
-
LeetCode 每日一题 2021-6-29 (Excel表列名称)
168. Excel表列名称难度简单给你一个整数columnNumber,返回它在 Excel 表中相对应的列名称。例如:A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...思路:代码:string convertToTitle(int columnNumber) { string ans=""; while(columnNumber){ -..原创 2021-07-06 09:11:30 · 248 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-23 (二进制中 1 的个数)
剑指 Offer 15. 二进制中1的个数难度简单编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量).)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的示例 3中,输入表...原创 2021-07-05 12:03:12 · 163 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-22 (字符串的排列)
剑指 Offer 38. 字符串的排列难度中等输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。思路: 递归遍历全部的组合可能,将全部的结果放入 set 中,再重组 set 返回结果。代码:class Solution { vector<string> ans; set<string> res; int len=0; string cur = ...原创 2021-07-05 11:14:51 · 111 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-21 (二进制手表)
401. 二进制手表难度简单二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。例如,下面的二进制手表读取"3:25"。(图源:WikiMedia - Binary clock samui moon.jpg,许可协议:Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0))给你一个整数turnedOn,表示当前亮着的 LED ...原创 2021-07-05 11:12:06 · 182 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-19 (字符串的最大长度)
1239. 串联字符串的最大长度难度中等给定一个字符串数组arr,字符串s是将arr某一子序列字符串连接所得的字符串,如果s中的每一个字符都只出现过一次,那么它就是一个可行解。请返回所有可行解s中最长长度。思路: 采用递归的思路,找到全部的可能组合,并计算各结果中字符串的长度;每次计算当前字符串的二进制串,和当前已有字符串的二进制串进行比较:若不相交,则当前字符串加入当前结果字符串,并进行下一次递...原创 2021-07-05 10:26:01 · 206 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-16 (石子游戏)
877. 石子游戏难度中等亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子piles[i]。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回true,当李赢得比赛时返回false。思路: 采用动态规划...原创 2021-07-06 09:06:23 · 356 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-14 (猜数字大小)
374. 猜数字大小难度简单猜数字游戏的规则如下:每轮游戏,我都会从1到n随机选择一个数字。 请你猜选出的是哪个数字。 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口int guess(int num)来获取猜测结果,返回值一共有 3 种可能的情况(-1,1或0):-1:我选出的数字比你猜的数字小pick < num 1:我选出的数字比你猜的数字大pick > num 0:我选出的数字和你猜的数字...原创 2021-07-05 10:00:59 · 121 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-15 (山峰数组的封顶索引)
852. 山脉数组的峰顶索引难度简单符合下列属性的数组arr称为山脉数组:arr.length >= 3 存在i(0 < i< arr.length - 1)使得: arr[0] < arr[1] < ... arr[i-1] < arr[i] arr[i] > arr[i+1] > ... > arr[arr.length - 1] 给你由整数组成的山脉数组arr,返回任何满足arr[0] < arr[1...原创 2021-07-05 10:12:13 · 119 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-13 (第一个错误版本)
278. 第一个错误的版本难度简单338你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有n个版本[1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用bool isBadVersion(version)接口来判断版本号version是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用...原创 2021-07-05 09:56:22 · 123 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-11 ( 完全平方数)
279. 完全平方数难度中等给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于n。你需要让组成和的完全平方数的个数最少。给你一个整数n,返回和为n的完全平方数的最少数量。完全平方数是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9和16都是完全平方数,而3和11不是。...原创 2021-07-05 09:50:12 · 293 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-10 ( 零钱兑换 II)
518. 零钱兑换 II难度中等给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。...原创 2021-07-05 09:31:45 · 818 阅读 · 0 评论 -
LeetCode 2021-6-10 ( 零钱兑换)
322. 零钱兑换难度中等给定不同面额的硬币coins和一个总金额amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。思路: 将目标金额作为动态规划的长度。 动态规划的转换公式为:F(i) =[ min{ F(1), ... ,F( i-1) } ]+ 1 ; 根据数据分布修正思路后 :F(i) =[ min{ F(i-C1)...原创 2021-07-05 09:02:11 · 84 阅读 · 0 评论 -
LeetCode 2021-6-8 ( 最后一块石头的重量 )
1046. 最后一块石头的重量难度简单164有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎; 如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回0。...原创 2021-06-09 16:45:14 · 121 阅读 · 0 评论 -
LeetCode 每日一题 2021-5-8 ( 最后一块石头的重量 II)
1049. 最后一块石头的重量 II难度中等290有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为x和y,且x <= y。那么粉碎的可能结果如下:如果x == y,那么两块石头都会被完全粉碎; 如果x != y,那么重量为x的石头将会完全粉碎,而重量为y的石头新重量为y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有...原创 2021-06-09 16:45:20 · 196 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-3 (连续数组)
525. 连续数组难度中等给定一个二进制数组nums, 找到含有相同数量的0和1的最长连续子数组,并返回该子数组的长度。思路:代码原创 2021-06-09 16:18:36 · 146 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-2 (连续的子数组和)
523. 连续的子数组和难度中等给你一个整数数组nums和一个整数k,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小至少为 2,且 子数组元素总和为k的倍数。如果存在,返回true;否则,返回false。如果存在一个整数n,令整数x符合x = n * k,则称x是k的一个倍数。0始终视为k的一个倍数。si'l...原创 2021-06-09 16:11:00 · 273 阅读 · 0 评论 -
LeetCode 每日一题 2021-6-4 (相交链表)
160. 相交链表难度简单给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。si...原创 2021-06-09 16:18:50 · 205 阅读 · 0 评论 -
LeetCode 每日一题 2021-4-27 (二叉搜索树的范围和)
938. 二叉搜索树的范围和难度简单给定二叉搜索树的根结点root,返回值位于范围[low, high]之间的所有结点的值的和。示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32思路一:递归+剪枝:通过递归搜索方式遍历各节点:① 若当前节点为空,返回 0;② 若当前节点大于最大值,返回左子树的和;③ 若当前节点小于最小值,返回右子树的和;④ 返回已当前结点为根节点的树的和。代码:...原创 2021-04-27 10:40:28 · 159 阅读 · 0 评论 -
LeetCode 每日一题 2021-4-26 (在 D 天内送达包裹的能力)
1011. 在 D 天内送达包裹的能力难度中等传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第i个包裹的重量为weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在D天内将传送带上的所有包裹送达的船的最低运载能力。思路:最终目标为在给定运输次数中运完全部货物,且需要得到的船的容量为最小。可以利用二分法求得满足运输次数的最小容量问题(左边界问题):初始条件如下:① 最小容量-...原创 2021-04-26 10:28:07 · 473 阅读 · 0 评论 -
LeetCode 每日一题 2021-4-25 (递增顺序搜索树)
897. 递增顺序搜索树难度简单给你一棵二叉搜索树,请你按中序遍历将其重新排列为一棵递增顺序搜索树,使树中最左边的节点成为树的根节点,并且每个节点没有左子节点,只有一个右子节点。示例 1:输入:root = [5,3,6,2,4,null,8,1,null,null,null,7,9]输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]思路:本题需要先对二叉树进行中序遍历搜索,并按照获得的数组顺...原创 2021-04-25 09:58:09 · 446 阅读 · 0 评论 -
LeetCode 每日一题 2021-4-24 (组合总和 Ⅳ)
377. 组合总和 Ⅳ难度中等给你一个由不同整数组成的数组nums,和一个目标整数target。请你从nums中找出并返回总和为target的元素组合的个数。题目数据保证答案符合 32 位整数范围。思路一:递归方式求出全部的解决方式:但是递归方式针对部分案例会导致超时。 案例: 【1,2,3】 32 超时代码:int ans = 0;void getAns(vector<int>& nums, int target, int cu...原创 2021-04-24 10:46:45 · 170 阅读 · 0 评论 -
LeetCode 每日一题 2021-4-23 (最大整除子集)
368. 最大整除子集难度中等299给你一个由无重复正整数组成的集合nums,请你找出并返回其中最大的整除子集answer,子集中每一元素对(answer[i], answer[j])都应当满足:answer[i] % answer[j] == 0,或 answer[j] % answer[i] == 0如果存在多个有效解子集,返回其中任何一个均可。思路:考虑若子数组为从小到大排序后的,则当前数组满足上述的要求,则后一个数为该数组后续的充要条件为:后一个数可以整除数...原创 2021-04-23 20:49:01 · 122 阅读 · 0 评论 -
LeetCode 每日一题 2021-3-6 (下一个更大元素 I、II)
496. 下一个更大元素 I难度简单给你两个没有重复元素的数组nums1和nums2,其中nums1是nums2的子集。请你找出nums1中每个元素在nums2中的下一个比其大的值。nums1中数字x的下一个更大元素是指x在nums2中对应位置的右边的第一个比x大的元素。如果不存在,对应位置输出-1。思路:采用单调栈方式将 nums2 数组中计算各元素右侧第一各比当前元素大的元素。再次计算后可以很容易得到满足条件的结果。单调栈 ...原创 2021-03-06 10:16:00 · 207 阅读 · 0 评论 -
LeetCode 每日一题 2021-3-5(用栈实现队列)
232. 用栈实现队列难度简单请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现MyQueue类:void push(int x)将元素 x 推到队列的末尾 int pop()从队列的开头移除并返回元素 int peek()返回队列开头的元素 boolean empty()如果队列为空,返回true;否则,返回false说明:你只能使用标准的栈操作 —— 也就是只有push to top,p...原创 2021-03-05 11:18:12 · 110 阅读 · 0 评论 -
LeetCode 每日一题 2021-3-3(比特位计数)
338. 比特位计数难度中等给定一个非负整数num。对于0 ≤ i ≤ num范围中的每个数字i,计算其二进制数中的 1 的数目并将它们作为数组返回。进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O(n)。你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的__builtin_popcount)来执行此操作。思路一:进阶提示中给出了内置...原创 2021-03-03 09:27:48 · 131 阅读 · 0 评论 -
LeetCode 每日一题 2021-3-2(二维区域和检索 - 矩阵不可变)
304. 二维区域和检索 - 矩阵不可变难度中等199给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为(row1,col1),右下角为(row2,col2)。上图子矩阵左上角(row1, col1) =(2, 1),右下角(row2, col2) =(4, 3),该子矩形内元素的总和为 8。思路:采用303. 区域和检索 - 数组不可变的思路,利用在矩阵初始化过程中动态计算各位置中数据的统计情况。根据统计信息计算对于的元素和仅需要简单的计算即可...原创 2021-03-02 16:24:32 · 106 阅读 · 0 评论 -
LeetCode 每日一题 2021-3-1(区域和检索 - 数组不可变)
303. 区域和检索 - 数组不可变难度简单给定一个整数数组 nums,求出数组从索引i到j(i≤j)范围内元素的总和,包含i、j两点。实现NumArray类:NumArray(int[] nums)使用数组nums初始化对象 int sumRange(int i, int j)返回数组nums从索引i到j(i≤j)范围内元素的总和,包含i、j两点(也就是sum(nums[i], nums[i + 1], ... , nums[j]))思路...原创 2021-03-01 18:39:17 · 112 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-28(单调数列)
896. 单调数列难度简单如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有i <= j,A[i] <= A[j],那么数组A是单调递增的。 如果对于所有i <= j,A[i]> = A[j],那么数组A是单调递减的。当给定的数组A是单调数组时返回true,否则返回false。思路:针对单调递减数组的判断,由于没有确定是否为递增,因此需要至少两步:一:需要判断该数组是 递增 还是 递减;二:根据当前判断的单调性,确定整个数...原创 2021-02-28 11:32:38 · 108 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-25(转置矩阵)
867. 转置矩阵难度简单给你一个二维整数数组matrix,返回matrix的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。思路:根据当前矩阵的尺寸确定目标矩阵的尺寸,然后将矩阵中的对应数据进行赋值。vector<vector<int>> transpose(vector<vector<int>>& matrix) { int len_x=matrix.size(),len...原创 2021-02-25 10:37:44 · 174 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-24(翻转图像)
832. 翻转图像难度简单239收藏分享切换为英文接收动态反馈给定一个二进制矩阵A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转[1, 1, 0]的结果是[0, 1, 1]。反转图片的意思是图片中的0全部被1替换,1全部被0替换。例如,反转[0, 1, 1]的结果是[1, 0, 0]。思路:水平翻转:每行前一半的数据对应的后一半数据进行位置交换即可;反转:1->0,0->1...原创 2021-02-24 21:14:07 · 121 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-22(托普利茨矩阵)
766. 托普利茨矩阵难度简单211给你一个m x n的矩阵matrix。如果这个矩阵是托普利茨矩阵,返回true;否则,返回false。如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是托普利茨矩阵。思路:简单的利用矩阵的尺寸判断该矩阵上的各对角线是否满足各元素相同。只需要判断第一行和第一列开始的对角线即可。bool isToeplitzMatrix(vector<vector<int>>& matrix) ...原创 2021-02-24 21:10:34 · 74 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-19(数组的度)
697. 数组的度难度简单317收藏分享切换为英文接收动态反馈给定一个非空且只包含非负数的整数数组nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在nums中找到与nums拥有相同大小的度的最短连续子数组,返回其长度。思路:统计各数据出现的频率 及其 最短子数组的长度。按频数最大 和 子数组长度最小 的条件筛选目标数据。选择时代的数据结构保持相应的数据。hash 表 保存数字的 频率、长度(第一次出现位置、最后一个出现位置)int fin...原创 2021-02-24 21:06:59 · 206 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-17(重塑矩阵)
566. 重塑矩阵难度简单在MATLAB中,有一个非常有用的函数reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。思路:创建对应尺寸的矩阵,按行遍历原矩阵并填充新矩阵。vector<vector&l.原创 2021-02-24 21:02:30 · 85 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-16(数组拆分 I)
561. 数组拆分 I难度简单给定长度为2n的整数数组nums,你的任务是将这些数分成n对, 例如(a1, b1), (a2, b2), ..., (an, bn),使得从1到n的min(ai, bi)总和最大。返回该最大总和思路:求取成对数据中的较小数据的最大总和:需要将最大的数据和第二大的数据分为一组。将数组排序后,隔数抽取即可满足上述条件。int arrayPairSum(vector<int>& nums) { ...原创 2021-02-24 20:58:52 · 354 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-15(最大连续 1 的个数)
485. 最大连续 1 的个数难度简单给定一个二进制数组, 计算其中最大连续 1 的个数。思路:简单的利用判断语句确定:当前是否为连续的 1 ? 若不为连续的 1,则当前的片段是否为最长片段?int findMaxConsecutiveOnes(vector<int>& nums) { int temp=0,ans=0; for(auto& index:nums){ if(index==1) ++temp; .原创 2021-02-24 20:54:36 · 157 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-13(找到所有数组中消失的数字)
448. 找到所有数组中消失的数字难度简单给定一个范围在 1 ≤ a[i] ≤n(n= 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1,n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。思路:为了满足不使用额外空间实现,只能在其原始数组中进行处理。各元素均不大于n(数组的大小),可以将该元素对应的位置的数据进行修正,且可以取得原有数...原创 2021-02-24 20:51:15 · 103 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-12(杨辉三角 II)
119. 杨辉三角 II难度简单给定一个非负索引k,其中k≤33,返回杨辉三角的第k行。在杨辉三角中,每个数是它左上方和右上方的数的和。思路:简单的找规律:将等边三角型看成直角三角型。1:每一行比上一行多1个数据;且第一个数据和最后一个数据始终为一。2:在保证1的条件下:每行的数据从第二个到倒数第二个元素的数据为——上一行当前为值的数据 + 上一个当前位置前一个的数据vector<int> getRow(int rowIndex) { v...原创 2021-02-24 20:46:03 · 130 阅读 · 0 评论 -
LeetCode 每日一题 2021-2-11(数据流中的第 K 大元素)
703. 数据流中的第 K 大元素难度简单设计一个找到数据流中第k大元素的类(class)。注意是排序后的第k大元素,不是第k个不同的元素。请实现KthLargest类:KthLargest(int k, int[] nums)使用整数k和整数流nums初始化对象。 int add(int val)将val插入数据流nums后,返回当前数据流中第k大的元素。思路:采用最小堆方式实现,每次抛出的数据为当前最小数据;保留K个数据大小的堆,可以满...原创 2021-02-24 20:38:57 · 102 阅读 · 0 评论 -
LeetCode 每日一题 2020-2-7(非递减数列)
665. 非递减数列难度简单给你一个长度为n的整数数组,请你判断在最多改变1个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的:对于数组中所有的i(0 <= i <= n-2),总满足nums[i] <= nums[i + 1]。思路:第一次遍历,尝试弥补缺陷 (适当满足且仅调整一个数据) :若是前一个值过大,将当前值赋值给前一个值,否则将前一个值赋值给当前值。第二次遍历,当前数值不满足非递减数列,返回 false代...原创 2021-02-07 21:45:08 · 103 阅读 · 0 评论 -
LeetCode 每日一题 2020-2-4(子数组最大平均数 I)
643. 子数组最大平均数 I难度简单给定n个整数,找出平均数最大且长度为k的连续子数组,并输出该最大平均数。思路:先将统计长度为K的子数组的和;而后滑动子数组并记录当前的最大值;根据最大值返回结果。代码double findMaxAverage(vector<int>& nums, int k) { double data=0,Max; int len=nums.size(); for(int i=0;i<k;++...原创 2021-02-07 21:42:52 · 66 阅读 · 0 评论