![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
刷题
文章平均质量分 71
leetcode, 牛客刷题记录
消失男孩
这个作者很懒,什么都没留下…
展开
-
[LeetCode][C++]移除链表元素
203. 移除链表元素给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]提示:列表中的节点在范围 [0, 104] 内1 <= Node.val原创 2021-03-11 15:48:35 · 179 阅读 · 0 评论 -
[LeetCode][C++]三数之和等相关题目
15. 三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思路:假如使用暴力方法,时间复杂度O(n^3)。不太可取。我们将数组排序之后,采用3个指针( first, second原创 2020-08-17 17:14:29 · 232 阅读 · 0 评论 -
[LeetCode][C++]32. 最长有效括号/括号生成
32. 最长有效括号给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”思路:假设 dp[i] 为以索引 i 结尾的最长有效括号的长度,则有以下情况dp[i] 可能非0:s[i] ==’)’ 且 s[i-1] ==’(’,即 “…()” 情形,则 dp[i]=dp[i-2]+2,这里要考虑下标原创 2020-08-14 00:24:27 · 235 阅读 · 0 评论 -
[LeetCode][C++]133. 克隆图
133. 克隆图给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node {public int val;public List neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使用邻接列表表示。邻接列表 是用于表示有限图的无序列表的集合。原创 2020-08-12 22:44:19 · 189 阅读 · 0 评论 -
[LeetCode][C++]130. 被围绕的区域
130. 被围绕的区域给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解释:被围绕的区间不会存在于边界上,换句话说,任何边界上的 ‘O’ 都不会被填充为 ‘X’。 任何不在边界上,或不与边界上的 ‘O’ 相连的 ‘O’ 最终都会被填充为 ‘X’。如果原创 2020-08-11 23:34:43 · 292 阅读 · 0 评论 -
[LeetCode][C++]6. Z 字形变换
6. Z 字形变换将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s = “LEETCODEISHIRING”, numRows = 3输出: “L原创 2020-08-11 23:25:35 · 163 阅读 · 0 评论 -
[LeetCode][C++]5. 最长回文子串
5. 最长回文子串给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”思路:方法一:动态规划dp[i][j]dp[i][j]dp[i][j]表示以位置 iii 开始、 jjj 结束的子串是否为回文串,长度 len=j−i+1len=j-i+1len=j−i+1 。1.边界条件:若 len=1len=1len=1,则原创 2020-08-10 23:03:29 · 194 阅读 · 0 评论 -
[LeetCode][C++]93. 复原IP地址
93. 复原IP地址给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]思路:(1)对于IP地址,其规范有以下:1.分成4部分,每个部分在0~255.2.单个部分,若以0开头,则只能是0,不能是010,001…等位数超过1的。(2)回溯思路1.对于字原创 2020-08-10 19:23:09 · 265 阅读 · 0 评论 -
[牛客/校招编程真题][C++]建物流中转站
建物流中转站题目描述Shopee物流会有很多个中转站。在选址的过程中,会选择离用户最近的地方建一个物流中转站。假设给你一个二维平面网格,每个格子是房子则为1,或者是空地则为0。找到一个空地修建一个物流中转站,使得这个物流中转站到所有的房子的距离之和最小。 能修建,则返回最小的距离和。如果无法修建,则返回 -1。若范围限制在100*100以内的网格,如何计算出最小的距离和?当平面网格非常大的情况下,如何避免不必要的计算?输入描述:40 1 1 01 1 0 10 0 1 00 0 0 0原创 2020-08-03 22:32:00 · 424 阅读 · 0 评论 -
[LeetCode][C++]3. 无重复字符的最长子串
无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子原创 2020-08-01 23:38:44 · 111 阅读 · 0 评论 -
[LeetCode][C++]加油站
加油站在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非负数。示例 1:输入:gas = [1,2,3,4,5]cost = [3,4,5,1,2]原创 2020-07-20 23:27:00 · 217 阅读 · 0 评论 -
[LeetCode][C++] Fizz Buzz
Fizz Buzz写一个程序,输出从 1 到 n 数字的字符串表示。如果 n 是3的倍数,输出“Fizz”;如果 n 是5的倍数,输出“Buzz”;如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[“1”,“2”,“Fizz”,“4”,“Buzz”,“Fizz”,“7”,“8”,“Fizz”,“Buzz”,“11”,“Fizz”,“13”,“14”,“FizzBuzz”]思路:遍历每个数字,判断是3、5的倍数,按规原创 2020-07-20 23:07:02 · 123 阅读 · 0 评论 -
[LeetCode][C++]快乐数
快乐数编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。示例:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 = 1思路:使用unordere原创 2020-07-20 22:52:19 · 334 阅读 · 0 评论 -
[LeetCode][C++]3的幂
3的幂给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false进阶:你能不使用循环或者递归来完成本题吗?思路:先的出在类型内最大的3的幂。然后判断能不能被n整除。代码:class Solution {public: bool isPowerOfThree(int n) {原创 2020-07-20 00:48:03 · 293 阅读 · 0 评论 -
[LeetCode][C++]位1的个数
位1的个数编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:00000000000000000000000010000000输出:1解释:输入的二进制串 00000000000000000000000010000000 中,原创 2020-07-20 00:25:02 · 191 阅读 · 0 评论 -
[LeetCode][C++]颠倒二进制位
颠倒二进制位颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。示例 2:输入:1111111111111111原创 2020-07-20 00:20:11 · 449 阅读 · 0 评论 -
[LeetCode][C++]阶乘后的零
阶乘后的零给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。思路:末尾要增加0,的有因子10;因子10可以是 25,10 来的,总之大家就得出结论,25, 10都和5有关,只需要统计5个数目。另外还有25,125…这样的数字,有多个因子5,等价于 n/25, n/125。因此就有原创 2020-07-20 00:13:58 · 256 阅读 · 0 评论 -
[LeetCode][C++]分数到小数
分数到小数给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。示例 1:输入: numerator = 1, denominator = 2输出: “0.5”示例 2:输入: numerator = 2, denominator = 1输出: “2”示例 3:输入: numerator = 2, denominator = 3输出: “0.(6)”思路:首先判断除数是否是0原创 2020-07-19 20:07:03 · 227 阅读 · 0 评论 -
[LeetCode][C++]直线上最多的点数
直线上最多的点数给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。示例 1:输入: [[1,1],[2,2],[3,3]]输出: 3解释:^|| \quad \quad o| \quad o| o±------------>0 1 2 3 4示例 2:输入: [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]输出: 4解释:^|| o| \quad o \quad原创 2020-07-19 19:53:52 · 448 阅读 · 0 评论 -
[LeetCode][C++]课程表 II
课程表 II现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回一种就可以了。如果不可能完成所有课程,返回一个空数组。示例 1:输入: 2, [[1,0]]输出: [0,1]解释: 总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为原创 2020-07-17 23:06:39 · 239 阅读 · 0 评论 -
[LeetCode][C++]课程表
课程表你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。示例 2:输入: 2, [[1,0],[0,1]]输出: false转载 2020-07-17 22:59:50 · 540 阅读 · 0 评论 -
[LeetCode][C++]岛屿数量
岛屿数量给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[[‘1’,‘1’,‘1’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘1’,‘0’],[‘1’,‘1’,‘0’,‘0’,‘0’],[‘0’,‘0’,‘0’,‘0’,‘0’]]输出: 1示例 2:输入:[[‘1’,‘1’,‘0’,‘0’,‘0’],原创 2020-07-17 22:30:28 · 696 阅读 · 0 评论 -
[LeetCode][C++]单词接龙
单词接龙给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:beginWord = “hit”,endWor原创 2020-07-17 22:22:12 · 825 阅读 · 0 评论 -
[LeetCode][C++]每日温度
每日温度请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。思路:我们使用1个最小栈来记录需原创 2020-07-16 01:31:00 · 760 阅读 · 0 评论 -
[LeetCode][C++]两个数组的交集 II
两个数组的交集 II给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果 nums1 的大小比 nums2 小很多,哪种方法更原创 2020-07-16 00:44:37 · 183 阅读 · 0 评论 -
[LeetCode][C++]递增的三元子序列
递增的三元子序列给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。示例 1:输入: [1,2,3,4,5]输出: true示例 2:输入: [5,4,3,2,1]输出: fal原创 2020-07-16 00:23:41 · 246 阅读 · 0 评论 -
[LeetCode][C++]完全平方数
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.思路:对于任意正整数,其拆分的完全平凡数为1,2,3,4。这似乎是一个定理。Lagrange 四平方定理: 任何一个正整数都可以表示成不超过四个整数的平方之和。状态转移方程是dp[i]=min(dp[i原创 2020-07-15 23:19:31 · 599 阅读 · 0 评论 -
[LeetCode][C++]至少有K个重复字符的最长子串
至少有K个重复字符的最长子串找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。示例 1:输入:s = “aaabb”, k = 3输出:3最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。示例 2:输入:s = “ababbc”, k = 2输出:5最长子串为 “ababb” ,其中 ‘a’ 重复了 2 次, ‘b’ 重复了 3 次。思路:首先统计字符串中每个字符出现的次数,使用数组count[26]原创 2020-07-15 22:12:59 · 958 阅读 · 0 评论 -
[LeetCode][C++]计算右侧小于当前元素的个数
计算右侧小于当前元素的个数给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。示例:输入:[5,2,6,1]输出:[2,1,1,0]解释:5 的右侧有 2 个更小的元素 (2 和 1)2 的右侧仅有 1 个更小的元素 (1)6 的右侧有 1 个更小的元素 (1)1 的右侧有 0 个更小的元素思路:(思路以及代码都是参考链接1的)使用二叉排序树,把问题转换原创 2020-07-15 12:34:21 · 401 阅读 · 0 评论 -
[LeetCode][C++] 寻找重复数
寻找重复数给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。思路:(思路以及代码都是参考链接的)二分原创 2020-07-15 12:29:12 · 744 阅读 · 0 评论 -
[LeetCode][C++] 寻找峰值
寻找峰值峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入: nums = [1,2,1,3,5,6,4]输出: 1 或 5解释: 你的函数可以返回原创 2020-07-15 12:17:56 · 827 阅读 · 0 评论 -
[LeetCode][C++]最大数
最大数给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。思路:可以创建一个大顶堆,对每个两个数的组合进行排序,大的排前面,自定义比较函数。对大顶堆进行遍历,逐元素拼接到字符串上。注意:若数组为空,则返回空字符串。数组由一连串0,则返回“0”,而非“000…”。不允许将数组元素按位拆开,每个原创 2020-07-12 01:17:51 · 574 阅读 · 0 评论 -
[LeetCode][C++]天际线问题
天际线问题城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。现在,假设您获得了城市风光照片(图A)上显示的所有建筑物的位置和高度,请编写一个程序以输出由这些建筑物形成的天际线(图B)。每个建筑物的几何信息用三元组 [Li,Ri,Hi] 表示,其中 Li 和 Ri 分别是第 i 座建筑物左右边缘的 x 坐标,Hi 是其高度。可以保证 0 ≤ Li, Ri ≤ INT_MAX, 0 < Hi ≤ INT_MAX 和 Ri - Li > 0。您可以假设所有建筑物都是在绝对平坦且高度原创 2020-07-12 01:05:59 · 332 阅读 · 4 评论 -
[LeetCode][C++] 二叉树的序列化与反序列化
二叉树的序列化与反序列化序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树:序列化为 “[1,2,3,null,null,4,5]”提示: 这与 LeetCode 目前使用原创 2020-07-12 00:52:50 · 268 阅读 · 0 评论 -
[LeetCode][C++]二叉搜索树中第K小的元素
二叉搜索树中第K小的元素给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1输出: 1示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3输出: 3进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化 kthSmalle原创 2020-07-11 01:10:54 · 293 阅读 · 0 评论 -
[LeetCode][C++] 常数时间插入、删除和获取随机元素
常数时间插入、删除和获取随机元素设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中移除该项。getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。示例 :// 初始化一个空的集合。RandomizedSet randomSet = new RandomizedSet();// 向集合中插入 1 。返回 true 表示 1 被成原创 2020-07-11 01:04:27 · 357 阅读 · 0 评论 -
[LeetCode][C++]四数相加 II
四数相加 II给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。例如:输入:A = [ 1, 2]B = [-2,-1]C = [-1, 2]D = [ 0, 2]输出:2解释:两原创 2020-07-11 00:56:39 · 239 阅读 · 0 评论 -
[LeetCode][Code]Excel表列序号
Excel表列序号给定一个Excel表格中的列名称,返回其相应的列序号。例如,A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...示例 1:输入: “A”输出: 1示例 2:输入: “AB”输出: 28示例 3:输入: “ZY”输出: 701致谢:特别感谢 @ts 添加此问题并创建所有测试用例。思路:这道题在专题“哈希与映射”当中,但是我没想到怎么个哈希法。于是还是用了土办法。原创 2020-07-11 00:45:59 · 104 阅读 · 0 评论 -
[LeetCode][C++] 奇偶链表
奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6-&g原创 2020-07-09 02:09:08 · 379 阅读 · 0 评论 -
[LeetCode][C++]删除链表中的节点
删除链表中的节点请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], node = 1输出: [4,5,9]解释: 给定你链原创 2020-07-09 01:53:42 · 166 阅读 · 0 评论