![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
Sonihr
现于南京理工大学自动化学院攻读控制理论与控制工程硕士研究生。
展开
-
<LeetCode>146. LRU缓存机制 Java实现
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的...原创 2018-11-03 11:45:33 · 680 阅读 · 0 评论 -
<LeetCode>808. 分汤
有 A 和 B 两种类型的汤。一开始每种类型的汤有 N 毫升。有四种分配操作:提供 100ml 的汤A 和 0ml 的汤B。提供 75ml 的汤A 和 25ml 的汤B。提供 50ml 的汤A 和 50ml 的汤B。提供 25ml 的汤A 和 75ml 的汤B。当我们把汤分配给某人之后,汤就没有了。每个回合,我们将从四种概率同为0.25的操作中进行分配选择。如果汤的剩余量不足以完成某次操作,我们将...原创 2018-06-20 22:10:34 · 1012 阅读 · 1 评论 -
<LeetCode>187. 重复的DNA序列
所有 DNA 由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来查找 DNA 分子中所有出现超多一次的10个字母长的序列(子串)。示例:输入: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"输出: ["AAAAACCCCC", "CCCCCAAAAA...原创 2018-06-12 22:33:23 · 1214 阅读 · 0 评论 -
<LeetCode>783. 二叉搜索树结点最小距离
给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值。示例:输入: root = [4,2,6,1,3,null,null]输出: 1解释:注意,root是树结点对象(TreeNode object),而不是数组。给定的树 [4,2,6,1,3,null,null] 可表示为下图: 4 / \ 2 6 ...原创 2018-05-16 22:18:40 · 1626 阅读 · 0 评论 -
<LeetCode>598. 范围求和 II
给定一个初始元素全部为 0,大小为 m*n 的矩阵 M 以及在 M 上的一系列更新操作。操作用二维数组表示,其中的每个操作用一个含有两个正整数 a 和 b 的数组表示,含义是将所有符合 0 <= i < a 以及 0 <= j < b 的元素 M[i][j] 的值都增加 1。在执行给定的一系列操作后,你需要返回矩阵中含有最大整数的元素个数。示例 1:输入: m = 3, ...原创 2018-06-03 22:48:22 · 500 阅读 · 0 评论 -
<LeetCode>56. 合并区间
给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。/** * Def...原创 2018-05-16 12:17:10 · 353 阅读 · 0 评论 -
<LeetCode>221. 最大正方形
在一个由0和1组成的二维矩阵内,寻找只包含1的最大正方形,并返回其面积。例如,给出如下矩阵:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0返回 4.致谢:特别感谢 @Freezen 添加该问题并提供所有测试用例。解题思路——https://blog.csdn.net/nk_test/article/details/48901853这个博客讲的很到位了。总的思路就是...原创 2018-04-29 15:47:25 · 652 阅读 · 0 评论 -
2018大华软件竞赛——模拟赛——第四题
4 某股票操盘手账户里有N支股票,股价互不等,分别为v1,v2...vn;每支股票的持有股数为m1,m2...mn。现在操盘手要回笼资金需要卖出股票,假设卖出价格即为当前股价,请问能回笼多少种不同的资金量。比如:两支股票,股价分别为10、11,数量为1、2,则能回笼0、10、11、22、21、32,总共6种资金量 输入的第一行指定用例数量T; 用例的第一行输入股票种类n; 用例的第...原创 2018-04-29 14:11:00 · 223 阅读 · 0 评论 -
<LeetCode>504. 七进制数
给定一个整数,将其转化为7进制,并以字符串形式输出。示例 1:输入: 100输出: "202"示例 2:输入: -7输出: "-10"注意: 输入范围是 [-1e7, 1e7] 。class Solution {public: string convertToBase7(int num) { string res = ""; if(num == 0...原创 2018-04-29 13:38:13 · 464 阅读 · 0 评论 -
<LeetCode>583. 两个字符串的删除操作
给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。示例 1:输入: "sea", "eat"输出: 2解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"说明:给定单词的长度不超过500。给定单词中的字符只含有小写字母。实际上就是求字符串的最长子序列。(注意,子串和子序列的区别原创 2018-05-14 11:27:55 · 1124 阅读 · 0 评论 -
<LeetCode>226. 翻转二叉树
翻转一棵二叉树。 4 / \ 2 7 / \ / \1 3 6 9转换为: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您无法在白板上写出翻转二叉树这道题,这太糟糕了。/**...原创 2018-04-28 22:36:53 · 246 阅读 · 0 评论 -
<LeetCode>223. 矩形面积
在二维平面上计算出两个由直线构成的矩形叠加覆盖后的面积。每个矩形由其左下顶点和右上顶点坐标表示,如图所示。假设面积不会超出int的范围。致谢:特别感谢 @mithmatt 添加本题,提供示例图片以及创建所有测试用例。这程序写的太他妈好了,保存一下。class Solution {public: int computeArea(int A, int B, int C, int D, int...原创 2018-04-28 11:42:08 · 482 阅读 · 0 评论 -
<LeetCode>491. 递增子序列
给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。示例:输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]]说明:给定数组的长度不会超过15。数组中的整数范围是 [-100,100]。解题思路——1. 我之前一直对递归中套循...原创 2018-04-28 11:15:04 · 660 阅读 · 0 评论 -
<LeetCode>542. 01 矩阵
给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1: 输入:0 0 00 1 00 0 0输出:0 0 00 1 00 0 0示例 2: 输入:0 0 00 1 01 1 1输出:0 0 00 1 01 2 1注意:给定矩阵的元素个数不超过 10000。给定矩阵中至少有一个元素是 0。矩阵中的元素只在四个方向上相邻:...原创 2018-04-26 16:07:34 · 748 阅读 · 0 评论 -
<LeetCode>49. 字母异位词分组
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], [&qu原创 2018-06-30 13:35:48 · 391 阅读 · 0 评论 -
<LeetCode>96. 不同的二叉搜索树
给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / ...原创 2018-06-30 14:25:14 · 403 阅读 · 0 评论 -
<LeetCode>17. 电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上原创 2018-09-09 10:54:07 · 1175 阅读 · 0 评论 -
<LeetCode>216. 组合总和 III
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。 解集不能包含重复的组合。 示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]看成是77题和39题...原创 2018-09-09 09:37:00 · 198 阅读 · 0 评论 -
<LeetCode>77. 组合
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],] 解题思路:1234四个数中,任取两个数组合起来。可以这么想,1234顺序选取。首先在4个数中选2个,可以分解为先选取一个,再从三个数...原创 2018-09-09 09:21:47 · 115 阅读 · 0 评论 -
<LeetCode>475. 供暖器
冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。现在,给出位于一条水平线上的房屋和供暖器的位置,找到可以覆盖所有房屋的最小加热半径。所以,你的输入将会是房屋和供暖器的位置。你将输出供暖器的最小加热半径。说明:给出的房屋和供暖器的数目是非负数且不会超过 25000。 给出的房屋和供暖器的位置均是非负数且不会超过10^9。 只要房屋位于供暖器的半径内(包括在...原创 2018-07-20 16:28:41 · 1048 阅读 · 0 评论 -
<LeetCode>283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。给出一种双指针的解决思路。class Solution {public: void moveZeroes(vector<in...原创 2018-07-20 14:22:37 · 97 阅读 · 0 评论 -
<LeetCode>24. 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。/** * Definition for singly-linked list. * struct ListNode { * ...原创 2018-07-12 16:36:59 · 261 阅读 · 0 评论 -
<LeetCode>160. 相交链表
编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表:A: a1 → a2 ↘ c1 → c2 → c3 ↗ B: b1 → b2 → b3在节点 c1 开始相交。 注意:如果两个链表没有交点,返回 null.在返回...原创 2018-07-11 19:36:26 · 165 阅读 · 0 评论 -
<LeetCode>201. 数字范围按位与
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1: 输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0实际上,本题相当于是从高位(左边)向低位(右边)找到第一个不相同的数。比如m=10111101,n=11001010,从m到n,从高到低第一个不相同的数是下标为6...原创 2018-07-04 12:53:30 · 1993 阅读 · 0 评论 -
<LeetCode>670. 最大交换
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例 1 :输入: 2736输出: 7236解释: 交换数字2和数字7。示例 2 :输入: 9973输出: 9973解释: 不需要交换。注意:给定数字的范围是 [0, 108]class Solution {public: int maximumSwap(int num) { //首先...原创 2018-07-04 12:20:17 · 1019 阅读 · 0 评论 -
<LeetCode>112. 路径总和&&257. 二叉树的所有路径
112.给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2018-07-10 11:09:30 · 188 阅读 · 0 评论 -
<LeetCode>89. 格雷编码,两种解法
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入:2输出:[0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的n,其格雷编码序列并不唯一。例如,[0,2,3,1]也是一个有效的格雷编码序列。00 ...原创 2018-07-03 12:07:04 · 3804 阅读 · 2 评论 -
<LeetCode>722. 删除注释
给一个 C++ 程序,删除程序中的注释。这个程序source是一个数组,其中source[i]表示第i行源码。 这表示每行源码由\n分隔。在 C++ 中有两种注释风格,行内注释和块注释。字符串// 表示行注释,表示//和其右侧的其余字符应该被忽略。字符串/* 表示一个块注释,它表示直到*/的下一个(非重叠)出现的所有字符都应该被忽略。(阅读顺序为从左到右)非重叠是指,字符串/*/并没有结束块注释,...原创 2018-06-19 13:44:23 · 940 阅读 · 0 评论 -
<LeetCode>241. 为运算表达式设计优先级
给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: "2-1-1"输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2示例 2:输入: "2*3-4*5"输出: [-34, -14, -10, -10, 10]解释: (2*(3-...原创 2018-06-19 13:36:30 · 1660 阅读 · 0 评论 -
2018大华软件竞赛——模拟赛——第一题
1 node_buffer定义了一个用于存储int型数据的缓冲器,请实现其声明的所有成员方法,并满足如下要求: 1.除非调用pop_front,否则push_back成功的数据节点不可移除; 2.不可添加给定之外的数据成员和成员方法; 输入的第一行指定用例数量T; 用例的第一行输入指定队列的最大节点数K; 用例的第二行输入指定插入的节点数量M; 用例的第三行输入指...原创 2018-04-25 20:30:30 · 551 阅读 · 0 评论 -
2018大华软件竞赛——模拟赛——第三题
3 有一种特殊的正整数(int类型),将数分为两侧,每侧至少有一位数,两侧的每个数字相加相等,请写出判断的方法用来检测是否这种数。 比如:1236,可以拆分为123和6。 输入的第一行指定用例数量T; 用例的第二行输入正整数; 输出是否为特殊的正整数 bool is_magicnum(int number) intput: 2 1232145 45...原创 2018-04-25 19:11:00 · 1109 阅读 · 0 评论 -
<LeetCode>62. 不同路径
码,码不停题。机器人位于一个 m x n 网格的左上角, 在下图中标记为“Start” (开始)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角,在下图中标记为“Finish”(结束)。问有多少条不同的路径?例如,上图是一个3 x 7网格。有多少可能的路径?注意: m 和 n 的值均不超过 100。class Solution {public: int uniquePat...原创 2018-04-06 22:39:03 · 623 阅读 · 0 评论 -
<LeetCode>349和350. 两个数组的交集 (I和II)
给定两个数组,写一个函数来计算它们的交集。例子: 给定 num1= [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].提示:每个在结果中的元素必定是唯一的。我们可以不考虑输出结果的顺序。class Solution {public: vector<int> intersection(vector<int>& nums1, vecto...原创 2018-04-22 13:12:49 · 268 阅读 · 0 评论 -
<LeetCode>540. 有序数组中的单一元素
给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。示例 1:输入: [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: [3,3,7,7,10,11,11]输出: 10注意: 您的方案应该在 O(log n)时间复杂度和 O(1)空间复杂度中运行。解题思路——1. 首先观察题目,这是有序数组,而且难点是对时间复杂度和空间复杂度有要求。2....原创 2018-04-22 12:45:39 · 662 阅读 · 0 评论 -
<LeetCode>111. 二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶节点的最短路径的节点数量。解题思路:这题我想了很久。。大概还是对递归不太熟悉吧。下面讲解一下递归的思路——1.如果根节点是NULL,说明没有深度。2.如果节点的左右儿子都不存在,说明只有自己,节点深度为1.3.如果节点没有左儿子,但是有右儿子怎么办?那说明最小深度只能在右儿子处获得。这里需要理原创 2018-04-17 11:33:48 · 250 阅读 · 0 评论 -
<LeetCode>104. 二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶节点的最长路径上的节点数。案例:给出二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回最大深度为 3 。/** * Definition for a binary tree node. * str原创 2018-04-16 22:58:29 · 752 阅读 · 0 评论 -
<LeetCode>695. 岛屿的最大面积
本题主要复习的是图的DFS。首先如何用递归去完成DFS呢?思路是这样的,首先找到目标点,然后从目标点发散开来。怎么发散?那就要有一个方向。没错,那我们需要实现方向,怎么实现?数组增减1咯,在后面的样例中我们用一个数组来表示方向。然后当我们到达新的方向之后怎么办?继续DFS,没错。怎么实现?那就是递归咯。等等,每次到达新的地方都要DFS么?当然不是,如果那个值是你要找的,那你就继续扩原创 2018-04-16 22:44:08 · 3866 阅读 · 1 评论 -
<LeetCode>121. 买卖股票的最佳时机
假设你有一个数组,其中第 i 个元素是一支给定股票第 i 天的价格。如果您只能完成最多一笔交易(即买入和卖出一股股票),则设计一个算法来找到最大的利润。示例 1:输入: [7, 1, 5, 3, 6, 4]输出: 5最大利润 = 6-1 = 5(不是 7-1 = 6, 因为卖出价格需要大于买入价格) 示例 2:输入: [7, 6, 4, 3, 1]输出: 0在原创 2018-04-15 10:34:54 · 4451 阅读 · 0 评论 -
<LeetCode>263. 丑数
编写程序判断给定的数是否为丑数。丑数就是只包含质因子 2, 3, 5 的正整数。例如, 6, 8 是丑数,而 14 不是,因为它包含了另外一个质因子 7。注意:1 也可以被当做丑数。输入不会超过32位整数的范围。解题思路:也过于easy了吧。。。依次判断能否被2/3/5整除,能的话就一直除直到除不尽,最后如果是1,说明是2,3,5的公倍数,如果不是,那么就说明不是丑数。真是丑题。。太简单了。cla...原创 2018-04-15 09:27:40 · 205 阅读 · 0 评论 -
<LeetCode>406. 根据身高重建队列
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]解题思路—...原创 2018-04-15 09:20:42 · 3710 阅读 · 0 评论