自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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 230

原创 LeetCode 每日一题 2021-6-16 (石子游戏)

877. 石子游戏难度中等亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子piles[i]。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回true,当李赢得比赛时返回false。思路: 采用动态规划...

2021-07-06 09:06:23 351

原创 LeetCode 每日一题 2021-6-23 (二进制中 1 的个数)

剑指 Offer 15. 二进制中1的个数难度简单编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量).)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的示例 3中,输入表...

2021-07-05 12:03:12 159

原创 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 105

原创 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 176

原创 LeetCode 每日一题 2021-6-19 (字符串的最大长度)

1239. 串联字符串的最大长度难度中等给定一个字符串数组arr,字符串s是将arr某一子序列字符串连接所得的字符串,如果s中的每一个字符都只出现过一次,那么它就是一个可行解。请返回所有可行解s中最长长度。思路: 采用递归的思路,找到全部的可能组合,并计算各结果中字符串的长度;每次计算当前字符串的二进制串,和当前已有字符串的二进制串进行比较:若不相交,则当前字符串加入当前结果字符串,并进行下一次递...

2021-07-05 10:26:01 188

原创 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 114

原创 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 113

原创 LeetCode 每日一题 2021-6-13 (第一个错误版本)

278. 第一个错误的版本难度简单338你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有n个版本[1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用bool isBadVersion(version)接口来判断版本号version是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用...

2021-07-05 09:56:22 104

原创 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 275

原创 LeetCode 每日一题 2021-6-10 ( 零钱兑换 II)

518. 零钱兑换 II难度中等给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。...

2021-07-05 09:31:45 813

原创 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 77

原创 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 183

原创 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 113

原创 LeetCode 每日一题 2021-6-4 (相交链表)

160. 相交链表难度简单给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。si...

2021-06-09 16:18:50 188

原创 LeetCode 每日一题 2021-6-3 (连续数组)

525. 连续数组难度中等给定一个二进制数组nums, 找到含有相同数量的0和1的最长连续子数组,并返回该子数组的长度。思路:代码

2021-06-09 16:18:36 139

原创 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 261

原创 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 154

原创 LeetCode 每日一题 2021-4-26 (在 D 天内送达包裹的能力)

1011. 在 D 天内送达包裹的能力难度中等传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第i个包裹的重量为weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在D天内将传送带上的所有包裹送达的船的最低运载能力。思路:最终目标为在给定运输次数中运完全部货物,且需要得到的船的容量为最小。可以利用二分法求得满足运输次数的最小容量问题(左边界问题):初始条件如下:① 最小容量-...

2021-04-26 10:28:07 458

原创 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 431

原创 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 153

原创 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 120

原创 C++ Primer Plus 随记(第九章)内存模型和名称空间

1、单独编译头文件:同一个文件只能将同一个头文件包含一次。#ifndef ***_H_ #define ***_H_ ... #endif // 防止上述问题2、存储持续性、作用域和链接性自动存储持续性:函数定义中声明的变量。 执行时创建,执行结束时释放 无链接性(仅可在当前函数/代码块中访问)静态存储持续性: static 关...

2021-03-07 22:18:17 148 1

原创 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 200

原创 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 108

原创 C++ Primer Plus 随记(第八章)函数探幽

1、内联函数:编译器将使用相应的代码替换函数调用。 --优点:运行速度稍快 --缺点:代码膨胀内联函数:一、在函数声明前加上关键字inline;二、在函数定义前加上关键字inline。无法作为内联函数的原因:一、内联函数不能递归;二、函数体过大。内联与宏: C语言使用预处理器语句 #define 提供宏--内联代码的原始实现(实际上使用 文本替换来实现)。 #define SQUARE(X) ((X)*(X)); 使用c语言的宏执行可以考虑利用C++内联函数进行替...

2021-03-03 21:40:47 199 1

原创 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 118

原创 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 104

原创 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 109

原创 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 107

原创 Effective C++ 随记 第八章(定制 new 和 delete )第九章(杂谈)

条款49:了解 new_handler的行为1:让更多的内存可被使用——开始执行时分配一大块内存,当new_handler被调用时将内存释还给程序使用。2:安装另一个new_handler——当前的new_handler无法取得更大的内存,且知道哪一个有能力取得更大的内存,安装新的new_handler。3:卸除new_handler——将null传递给set_new_handler。没有安装new_handler时,new会在内存分配失败时抛出异常。4:抛出bad_alloc(此类)的异常

2021-02-25 16:52:59 98

原创 Effective C++ 随记 第七章(模板与泛型编程)

条款41:了解隐式接口和编译期多态请记住:1):条款42:了解 typename 的双重意义请记住:1):条款43:学习处理模板化基类内的名称请记住:1):条款44:将与参数无关的代码抽离 template请记住:1):条款45:运用成员啊还能输模板接受所有兼容类型请记住:1):条款46:需要转换类型时请为模板定义非成员函数请记住:1):条款47:请使用 trait class 表现类型信息...

2021-02-25 16:49:02 102

原创 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 166

原创 Effective C++ 随记 第六章(继承于面向对象设计)

条款32:确定你的 public 继承塑造出 is-a 关系请记住:1):”public 继承“意味着 is-a。适用于 base class 身上的每一件事一定也适用于 derived class。因为每一个derived class 对象也是一个 base class 对象。条款33:避免遮掩继承而来的名称、由于 名称 的作用域原因,没有重载的同名成员会使得 base class 对象内的名称被遮掩。virtual void mf1() //转交函数 { base...

2021-02-24 21:20:50 127

原创 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 114

原创 LeetCode 每日一题 2021-2-22(托普利茨矩阵)

766. 托普利茨矩阵难度简单211给你一个m x n的矩阵matrix。如果这个矩阵是托普利茨矩阵,返回true;否则,返回false。如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是托普利茨矩阵。思路:简单的利用矩阵的尺寸判断该矩阵上的各对角线是否满足各元素相同。只需要判断第一行和第一列开始的对角线即可。bool isToeplitzMatrix(vector<vector<int>>& matrix) ...

2021-02-24 21:10:34 72

原创 LeetCode 每日一题 2021-2-19(数组的度)

697. 数组的度难度简单317收藏分享切换为英文接收动态反馈给定一个非空且只包含非负数的整数数组nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在nums中找到与nums拥有相同大小的度的最短连续子数组,返回其长度。思路:统计各数据出现的频率 及其 最短子数组的长度。按频数最大 和 子数组长度最小 的条件筛选目标数据。选择时代的数据结构保持相应的数据。hash 表 保存数字的 频率、长度(第一次出现位置、最后一个出现位置)int fin...

2021-02-24 21:06:59 204

原创 LeetCode 每日一题 2021-2-17(重塑矩阵)

566. 重塑矩阵难度简单在MATLAB中,有一个非常有用的函数reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。思路:创建对应尺寸的矩阵,按行遍历原矩阵并填充新矩阵。vector<vector&l.

2021-02-24 21:02:30 84

原创 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 343

原创 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 150

空空如也

空空如也

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

TA关注的人

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