
LeetCode/NowCoder C++刷题
LeetCode / NowCoder C++刷题记录。
cchangcs
Make something different!
毕业于武汉大学软件工程专业,现就职于某厂。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode C++刷题142-145题题解
142、环形链表II题目给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以使用 O(1) 空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引...原创 2020-10-17 23:35:45 · 319 阅读 · 0 评论 -
剑指offer C++刷题总结(3)
目录变态跳台阶题目:题解:完整代码:矩阵覆盖题目:题解:完整代码:二进制中1的个数题目:题解:完整代码:数值的整数次方题目:题解:完整代码:变态跳台阶题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题解:动态规划完整代码:class Solution {public: int jumpFloorII(int number) {.原创 2020-10-17 21:18:33 · 307 阅读 · 0 评论 -
LeetCode C++刷题138-141题题解
138、复制带随机指针的链表题目给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。要求返回这个链表的深拷贝。我们用一个由n个节点组成的链表来表示输入/输出中的链表。每个节点用一个[val, random_index]表示:val:一个表示Node.val的整数。random_index:随机指针指向的节点索引(范围从0到n-1);如果不指向任何节点,则为null。示例 1:输入:head = [[7,...原创 2020-10-17 23:28:29 · 325 阅读 · 0 评论 -
剑指offer C++刷题总结(4)
调整数组顺序使奇数位于偶数前面题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题解:双指针完整代码:class Solution {public: void reOrderArray(vector<int> &array) { int i = 0; for(int j = 0; j <原创 2020-10-17 21:32:53 · 224 阅读 · 0 评论 -
剑指offer C++刷题总结(2)
二维数组中的查找题目:题解:完整代码:二维数组中的查找题目:题解:完整代码:二维数组中的查找题目:题解:完整代码:二维数组中的查找题目:题解:完整代码:...原创 2020-10-17 21:09:22 · 273 阅读 · 0 评论 -
LeetCode C++刷题133-137题题解
目录133、克隆图题目题解代码134、加油站题目题解代码135、分发糖果题目题解代码136、只出现一次的数字题目题解代码137、只出现一次的数字II题目题解代码133、克隆图题目给你无向连通图中一个节点的引用,请你返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; ...原创 2020-09-20 18:23:13 · 385 阅读 · 0 评论 -
LeetCode C++刷题129-132题题解
129、求根到叶子节点数字之和题目给定一个二叉树,它的每个结点都存放一个0-9的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明:叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 代表数字 12.从根到叶子节点路径 1->3 代表数字 13....原创 2020-09-20 18:17:53 · 339 阅读 · 0 评论 -
LeetCode C++刷题125-128题题解
125、验证回文串题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-palindrome著作权归领扣网络所有。商业转载原创 2020-09-20 18:12:49 · 368 阅读 · 0 评论 -
LeetCode C++刷题121-124题题解
目录121、买卖股票的最佳时机题目题解代码122、买卖股票的最佳时机II题目题解代码123、买卖股票的最佳时机III题目题解代码124、二叉树中的最大路径和题目题解代码121、买卖股票的最佳时机题目给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: ..原创 2020-09-20 18:07:20 · 349 阅读 · 0 评论 -
剑指offer C++刷题总结(1)
二维数组中的查找题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。题解:双指针完整代码:class Solution {public: bool Find(int target, vector<vector<int> > array) { int m = array.size();原创 2020-09-18 21:02:01 · 569 阅读 · 0 评论 -
LeetCode C++刷题116-120题题解
目录116 填充每个节点的下一个右侧节点指针题目题解完整代码117 填充每个节点的下一个右侧节点II题目题解完整代码118 杨辉三角题目题解完整代码119 杨辉三角II题目题解完整代码120 三角形中的最小路径和题目题解完整代码116 填充每个节点的下一个右侧节点指针题目给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val;..原创 2020-09-05 12:03:54 · 370 阅读 · 0 评论 -
LeetCode C++刷题111-115题题解
111 二叉树的最小深度题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-t...原创 2020-09-05 11:52:49 · 326 阅读 · 0 评论 -
LeetCode C++刷题106-110题题解
106 从中序与后续遍历构建二叉树题目根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-...原创 2020-09-05 11:40:25 · 272 阅读 · 0 评论 -
LeetCode C++刷题101-105题题解
101 对称二叉树题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3进阶:你可以运用递归和迭代两种方法解决这个问题吗?来源:力扣(LeetCode)链接:https://...原创 2020-09-05 11:34:23 · 300 阅读 · 0 评论 -
LeetCode C++刷题97-100题题解
97、交错字符串题目:给定三个字符串s1, s2, s3, 验证s3是否是由s1和s2 交错组成的。示例 1:输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出:true示例2:输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出:false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/interlea...原创 2020-08-22 23:11:23 · 457 阅读 · 0 评论 -
LeetCode C++刷题93-96题题解
93、复原IP地址题目:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。例如:"0.1.2.201" 和 "192.168.1.1" 是 有效的 IP 地址,但是 "0.011.255.245"、"192.168.1.312" 和 "192.168@1.1" 是 无效的 IP 地址。示例 1:输入:s = "25525511135".原创 2020-08-22 23:04:23 · 315 阅读 · 0 评论 -
LeetCode C++刷题89-92题题解
89、格雷编码题目:格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。示例 1:输入:2输出:[0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的n,其格雷编码序列并不唯一。例如,[0,2,3,1]也是一个有效的格雷编码序列。00 - 010 - 211 -...原创 2020-08-22 23:00:00 · 381 阅读 · 0 评论 -
LeetCode C++刷题85-88题题解
85、最大矩形题目:给定一个仅包含0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例:输入:[ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1","0","0","1","0"]]输出: 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximal-rectangle著作权归领扣...原创 2020-08-22 22:55:53 · 262 阅读 · 0 评论 -
LeetCode C++刷题81-84题题解
81、搜索旋转排序数组II题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,0,1,2,2,5,6]可能变为[2,5,6,0,0,1,2])。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回true,否则返回false。示例1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例2:输入: nums = [2,5,6,0,0,1,2], target = 3输出: fals...原创 2020-08-15 20:13:36 · 286 阅读 · 0 评论 -
LeetCode C++刷题 77-80题题解
77、组合题目:给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/combinations著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题解:回溯代码:...原创 2020-08-15 20:08:48 · 320 阅读 · 0 评论 -
LeetCode C++刷题 73-76题题解
73、矩阵置零题目:给定一个m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0]...原创 2020-08-08 21:39:35 · 315 阅读 · 0 评论 -
LeetCode C++刷题 69-72题题解
69、x的平方根题目:实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sqrtx著作权归领扣网络所有。...原创 2020-08-08 21:35:48 · 308 阅读 · 0 评论 -
LeetCode C++刷题 65-68题题解
65、有效数字题目:验证给定的字符串是否可以解释为十进制数字。例如:"0"=>true" 0.1 "=>true"abc"=>false"1 a"=>false"2e10"=>true" -90e3"=>true" 1e"=>false"e3"=>false" 6e-1"=>true" 99e2.5"=>false"53.5e93"=>true" --...原创 2020-08-08 21:30:48 · 354 阅读 · 0 评论 -
LeetCode C++刷题 61-64题题解
61、旋转链表题目:给定一个链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。示例1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例2:输入: 0-...原创 2020-08-08 21:22:25 · 482 阅读 · 0 评论 -
LeetCode C++刷题 57-60题题解
57、插入区间题目:给出一个无重叠的 ,按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。示例1:输入:intervals = [[1,3],[6,9]], newInterval = [2,5]输出:[[1,5],[6,9]]示例2:输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]输出:[[1,...原创 2020-08-08 21:11:57 · 284 阅读 · 0 评论 -
LeetCode C++刷题 53-56题题解
53、最大子序和题目:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray著作权归领...原创 2020-08-01 18:32:57 · 288 阅读 · 0 评论 -
LeetCode C++刷题 49-52题题解
49、字母异位分词题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/gr...原创 2020-08-01 18:26:40 · 301 阅读 · 0 评论 -
LeetCode C++刷题 45-48题题解
45、跳跃游戏II题目:给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳1步,然后跳3步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置。来源:力扣(LeetCode)链接:https://leet...原创 2020-07-26 16:31:19 · 264 阅读 · 0 评论 -
LeetCode C++刷题 41-44题题解
41、缺失的第一个正数题目:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例1:输入: [1,2,0]输出: 3示例2:输入: [3,4,-1,1]输出: 2示例3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-missing-positive...原创 2020-07-26 16:27:30 · 351 阅读 · 0 评论 -
LeetCode C++刷题 37-40题题解
37、解数独题目:编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。空白格用'.'表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字1-9和字符'.'。你可以假设给定的数独只有唯一解。给定数独永远是9x9形式的。来源:力扣(LeetCode)链接:https:...原创 2020-07-26 16:21:42 · 252 阅读 · 0 评论 -
LeetCode C++刷题 33-36题题解
33、搜索旋转数组题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例2:输入: nums = [4...原创 2020-07-26 16:17:34 · 300 阅读 · 0 评论 -
LeetCode C++刷题 29-32题题解
29、两数相除题目:给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数dividend除以除数divisor得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例1:输入: dividend = 10, divisor = 3输出: 3解释: 10/3 = truncate(3....原创 2020-07-18 21:22:16 · 477 阅读 · 0 评论 -
LeetCode C++刷题 25-28题题解
25、K个一组翻转链表题目:给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5说明:你的算法只能...原创 2020-07-18 21:13:37 · 279 阅读 · 0 评论 -
LeetCode C++刷题 21-24题题解
21、合并两个有序链表题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。..原创 2020-07-18 19:30:56 · 249 阅读 · 0 评论 -
LeetCode C++刷题 17-20题题解
17、电话号码的字母组合题目:给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems..原创 2020-07-18 19:23:44 · 418 阅读 · 0 评论 -
LeetCode C++刷题 13-16题题解
13、罗马数字转整数题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为...原创 2020-07-11 19:23:48 · 330 阅读 · 0 评论 -
LeetCode C++刷题 9-12题题解
9、回文数题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/pro.原创 2020-07-11 19:17:27 · 285 阅读 · 0 评论 -
LeetCode C++刷题 5-8题题解
5、最长回文子串题目:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"题解:动态规划代码:class Solution {public: string longestPalindrome(string s) { int n = s.size(); ...原创 2020-07-11 19:04:09 · 352 阅读 · 0 评论 -
LeetCode C++刷题 1-4题题解
1、两数之和题目:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems...原创 2020-06-29 12:37:12 · 394 阅读 · 0 评论