LeetCode-Medium
文章平均质量分 83
fengkeyleaf
经常二次元,偶尔敲代码
展开
-
334. Increasing Triplet Subsequence(递增的三元子序列)
比如输入案例[1,0,2,0,-1,3],最后最小值为-1,次小值为2,最大值为3,但(-1,2,3)并不满足题意,因为-1和2的下标不满足,但在更新最小值为-1之前,我们找到了一个比-1大的最小值0,从而找到了下标m,也能找到满足的题意得三元组。当i>j时形成的三元组满足题意,当且仅当存在下标m...原创 2022-07-22 03:27:20 · 158 阅读 · 0 评论 -
96. Unique Binary Search Trees(不同的二叉搜索树)三种解法(C++ & 注释)
145. Binary Tree Postorder Traversal(二叉树的后序遍历)1. 题目描述2. 暴力破解(Brute Force)2.1 解题思路2.2 实例代码3. 动态规划(Dynamic Programming)3.1 解题思路3.2 实例代码3. 卡特兰数(Catalan Number)3.1 解题思路3.2 实例代码4. 参考资料1. 题目描述给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?示例:题目链接:中文题目;英文题目2. 暴力破解(Brute原创 2020-08-17 16:45:51 · 439 阅读 · 0 评论 -
94. Binary Tree Inorder Traversal(二叉树的中序遍历)两种解法(C++ & 注释)
94. Binary Tree Inorder Traversal(二叉树的中序遍历)1. 题目描述2. 递归(Recursion)2.1 解题思路2.2 实例代码3. 迭代(Iteration)3.1 解题思路3.2 实例代码1. 题目描述给定一个二叉树,返回它的中序 遍历。示例:进阶: 递归算法很简单,你可以通过迭代算法完成吗?题目链接:中文题目;英文题目2. 递归(Recursion)2.1 解题思路2.2 实例代码3. 迭代(Iteration)3.1 解题思路3.2 实例代码原创 2020-08-12 14:28:50 · 347 阅读 · 0 评论 -
144. Binary Tree Preorder Traversal(二叉树的前序遍历)两种解法(C++ & 注释)
144. Binary Tree Preorder Traversal(二叉树的前序遍历)1. 题目描述2. 递归(Recursion)2.1 解题思路2.2 实例代码3. 迭代(Iteration)3.1 解题思路3.2 实例代码1. 题目描述给定一个二叉树,返回它的 前序 遍历。示例:题目链接:中文题目;英文题目2. 递归(Recursion)2.1 解题思路2.2 实例代码3. 迭代(Iteration)3.1 解题思路3.2 实例代码...原创 2020-08-12 11:10:23 · 215 阅读 · 0 评论 -
93. Restore IP Addresses(复原IP地址)两种解法(C++ & 注释)
93. Restore IP Addresses(复原IP地址)1. 题目描述2. 广度优先搜索(Breadth-First Search)2.1 解题思路2.2 实例代码3. 深度优先搜索(Depth-First Search)3.1 解题思路3.2 实例代码4. 参考资料1. 题目描述给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: “25525511135”原创 2020-08-11 16:27:03 · 594 阅读 · 0 评论 -
92. Reverse Linked List II(反转链表 II)两种解法(C++ & 注释)
92. Reverse Linked List II(反转链表 II)1. 题目描述2. 递归(Recursion)2.1 解题思路2.2 实例代码3. 迭代(Iteration)3.1 解题思路3.2 实例代码1. 题目描述反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明: 1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5-&g原创 2020-08-10 23:50:54 · 449 阅读 · 0 评论 -
91. Decode Ways(解码方法)两种解法(C++ & 注释)
91. Decode Ways(解码方法)1. 题目描述2. 暴力破解(Brute Force, Time Limit Exceeded)2.1 解题思路2.2 实例代码3. 动态规划(Dynamic Programming)3.1 解题思路3.2 实例代码4. 参考资料1. 题目描述一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”原创 2020-08-10 00:26:38 · 819 阅读 · 0 评论 -
90. Subsets II(子集 II)三种解法(C++ & 注释)
90. Subsets II(子集 II)1. 题目描述2. 递归 & 迭代 & 位操作2.1 解题思路2.2 实例代码4. 参考资料1. 题目描述给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]题目链接:中文题目;英文题目2. 递归 & 迭代 & 位操作2.1 解题思路2.2原创 2020-08-06 11:59:46 · 347 阅读 · 0 评论 -
89. Gray Code(格雷编码)三种解法(C++ & 注释)
89. Gray Code(格雷编码)1. 题目描述2. 回溯(Backtracking)2.1 解题思路2.2 实例代码3. 迭代(Iteration)3.1 解题思路3.2 实例代码4. 位操作(Bit Manipulation)4.1 解题思路4.2 实例代码5. 参考资料1. 题目描述格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。原创 2020-08-05 15:04:50 · 1403 阅读 · 0 评论 -
86. Partition List(分隔链表)两种解法(C++ & 注释)
86. Partition List(分隔链表)1. 题目描述2. 迭代(Iteration)2.1 解题思路2.2 实例代码3. 递归(Recursion)3.1 解题思路3.2 实例代码4. 参考资料1. 题目描述给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->原创 2020-08-02 23:37:04 · 412 阅读 · 0 评论 -
139. Word Break(单词拆分)五种解法(C++ & 注释)
139. Word Break(单词拆分)1. 题目描述2. 递归(Recursion)2.1 解题思路2.2 实例代码3. 前缀树(Prefix-tree)3.1 解题思路3.2 实例代码4. 参考资料1. 题目描述给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict =原创 2020-08-02 00:09:43 · 1312 阅读 · 0 评论 -
82. Remove Duplicates from Sorted List II(删除排序链表中的重复元素 II)两种解法(C++ & 注释)
82. 删除排序链表中的重复元素 II1. 题目描述2. 迭代(Iteration)2.1 解题思路2.2 实例代码3. 递归(Recursion)3.1 解题思路3.2 实例代码4. 参考资料1. 题目描述给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输原创 2020-07-29 16:49:25 · 232 阅读 · 0 评论 -
81. Search in Rotated Sorted Array II(搜索旋转排序数组 II)两种解法(C++ & 注释)
本文主要使用二分法 & 双指针(Binary Search & Two Pointers)两种方法原创 2020-07-27 22:08:42 · 212 阅读 · 0 评论 -
43. Multiply Strings(字符串相乘)解法(C++ & 注释)
43. Multiply Strings(字符串相乘)1. 题目描述2. 乘法(Multiplication)2.1 解题思路2.2 实例代码1. 题目描述给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”说明:num1 和 num2原创 2020-06-29 16:25:39 · 4361 阅读 · 0 评论 -
80. Remove Duplicates from Sorted Array II(删除排序数组中的重复项 II)解法(C++ & 注释)
80. 删除排序数组中的重复项 II1. 题目描述2. 计数(Count)2.1 解题思路2.2 实例代码3. 参考资料1. 题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考原创 2020-07-25 09:58:33 · 245 阅读 · 0 评论 -
79. Word Search(单词搜索)解法(C++ & 注释)
78. Subsets(子集)1. 题目描述2. 递归(Recursion)2.1 解题思路2.2 实例代码3. 参考资料1. 题目描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]————————给定原创 2020-07-22 23:10:50 · 683 阅读 · 0 评论 -
78. Subsets(子集)三种解法(C++ & 注释)
78. Subsets(子集)1. 题目描述2. 递归(Recursion)2.1 解题思路2.2 实例代码3. 迭代(Iteration)3.1 解题思路3.2 实例代码1. 题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]题目链接:中文题目;英文题目2. 递归(Recu原创 2020-07-22 15:18:12 · 696 阅读 · 0 评论 -
77. Combinations(组合)两种解法(C++ & 注释)
77. Combinations(组合)1. 题目描述2. 递归(Recursion)2.1 解题思路2.2 实例代码3. 迭代(Iteration)3.1 解题思路3.2 实例代码4. 参考资料1. 题目描述给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]题目链接:中文题目;英文题目2. 递归(Recursion)2.1 解题思路原创 2020-07-20 16:06:53 · 1259 阅读 · 0 评论 -
75. Sort Colors(颜色分类)解法(C++ & 注释)
75. Sort Colors(颜色分类)1. 题目描述2. 指针法(Pointers)2.1 解题思路2.2 实例代码3. 参考资料1. 题目描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方原创 2020-07-17 16:17:13 · 402 阅读 · 0 评论 -
74. Search a 2D Matrix(搜索二维矩阵)解法(C++ & 注释)
74. Search a 2D Matrix(搜索二维矩阵)1. 题目描述2. 二分查找(Binary Search)2.1 解题思路2.2 实例代码1. 题目描述编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix =[[1, 3, 5, 7],[10, 11, 16, 20],[23, 30, 34, 50]]target = 3输原创 2020-07-17 00:00:36 · 266 阅读 · 0 评论 -
73. Set Matrix Zeroes(矩阵置零)解法(C++ & 注释)
73. Set Matrix Zeroes(矩阵置零)1. 题目描述2. 标记(Marks)2.1 解题思路2.2 示例代码3. 参考资料1. 题目描述给定一个 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]]输出原创 2020-07-16 17:21:24 · 313 阅读 · 0 评论 -
71. Simplify Path(简化路径)解法(C++ & 注释)
71. Simplify Path(简化路径)1. 题目描述2. 分组处理(Process by Groups)2.1 解题思路2.2 实例代码3. 参考资料1. 题目描述以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规原创 2020-07-15 13:57:47 · 542 阅读 · 0 评论 -
64. Minimum Path Sum(最小路径和)两种解法(C++ & 注释)
64. Minimum Path Sum(最小路径和)1. 题目描述2. 回溯法(Backtracking, Time Limit Exceeded)2.1 解题思路2.2 实例代码3. 动态规划(Dynamic Programming)3.1 解题思路3.2 实例代码1. 题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]原创 2020-07-13 15:16:32 · 409 阅读 · 0 评论 -
63. Unique Paths II(不同路径 II)两种解法(C++ & 注释)
63. Unique Paths II(不同路径 II)1. 题目描述2. 回溯法(Backtracking)2.1 解题思路2.2 实例代码3. 动态规划(Dynamic Programming)3.1 解题思路3.2 实例代码1. 题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?原创 2020-07-12 23:29:12 · 473 阅读 · 0 评论 -
62. Unique Paths(不同路径)两种解法(C++ & 注释)
62. Unique Paths(不同路径)1. 题目描述2. 回溯法(Backtracking)2.1 解题思路2.2 实例代码1. 题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释: 从左上角开始,总共原创 2020-07-12 16:51:25 · 591 阅读 · 0 评论 -
61. Rotate List(旋转链表)三种解法(C++ & 注释)
61. Rotate List(旋转链表)1. 题目描述2. 暴力解法(Brute Force)2.1 解题思路2.2 实例代码3. 周期替换(Using Cyclic Replacements)3.1 解题思路3.2 实例代码4. 翻转(Using Reverse)4.1 解题思路4.2 实例代码5. 参考资料1. 题目描述给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL原创 2020-07-11 22:00:27 · 316 阅读 · 0 评论 -
59. Spiral Matrix II(螺旋矩阵 II)解法(C++ & 注释)
59. Spiral Matrix II(螺旋矩阵 II)1. 题目描述2. 按层遍历(Layer-by-Layer)2.1 解题思路2.2 实例代码1. 题目描述给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]题目链接:中文题目;英文题目2. 按层遍历(Layer-by-Layer)2.1 解题思路这题基本算是54. 螺旋矩阵原创 2020-07-09 21:54:42 · 228 阅读 · 0 评论 -
56. Merge Intervals(合并区间)解法(C++ & 注释)
56. Merge Intervals(合并区间)1. 题目描述2. 排序(Sort)2.1 解题思路2.2 实例代码1. 题目描述给出一个区间的集合,请合并所有重叠的区间。示例 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] 可原创 2020-07-09 21:25:57 · 660 阅读 · 2 评论 -
55. Jump Game(跳跃游戏)三种解法(C++ & 注释)
55. Jump Game(跳跃游戏)1. 题目描述2.2.1 解题思路2.2 实例代码2.2.1 解题思路2.2 实例代码2.2.1 解题思路2.2 实例代码2. 参考资料1. 题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3步到达最后一个位置。示例 2原创 2020-07-07 22:36:50 · 2156 阅读 · 2 评论 -
54. Spiral Matrix(螺旋矩阵)解法(C++ & 注释)
54. Spiral Matrix(螺旋矩阵)1. 题目描述2. 按层遍历(Layer-by-Layer)2.1 解题思路2.2 实例代码1. 题目描述给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10原创 2020-07-06 16:39:17 · 672 阅读 · 0 评论 -
50. Pow(x, n)解法(C++ & 注释)
50. 实现Pow函数1. 题目描述2. 拆分简化(Split and Simplify)2.1 解题思路2.2 实例代码3. 参考资料1. 题目描述实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.原创 2020-07-05 09:12:47 · 441 阅读 · 0 评论 -
49. Group Anagrams(字母异位词分组)两种解法(C++ & 注释)
49. Group Anagrams(字母异位词分组)1. 题目描述2. 哈希表(Hash Table)3. 质数相乘(Prime Multiplication)4. 实例代码5. 参考资料1. 题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]原创 2020-07-03 15:34:15 · 700 阅读 · 0 评论 -
48. Rotate Image(旋转图像)两种解法(C++ & 注释)
48. Rotate Image(旋转图像)1. 题目描述2. 序号操作(Index Manipulation)2.1 解题思路2.2 实例代码3.3.1 解题思路3.2 实例代码4. 参考资料1. 题目描述给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,原创 2020-07-02 11:52:10 · 1715 阅读 · 0 评论 -
47. Permutations II(全排列 II)解法(C++ & 注释)
47. Permutations II(全排列 II)1. 题目描述2. 递归 & 序号插入(Recursion & Insert by Index)2.1 解题思路2.2 实例代码1. 题目描述给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]题目链接:中文题目;英文题目2. 递归 & 序号插入(Recursion & Insert by Index)2原创 2020-06-30 17:32:13 · 391 阅读 · 0 评论 -
46. Permutations(全排列)两种解法(C++ & 注释)
46. Permutations(全排列)1. 题目描述2. 乘法(Multiplication)2.1 解题思路2.2 实例代码3. 乘法(Multiplication)3.1 解题思路3.2 实例代码4. 乘法(Multiplication)4.1 解题思路4.2 实例代码5. 参考资料1. 题目描述给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],原创 2020-06-30 16:55:24 · 983 阅读 · 0 评论 -
40. Combination Sum II(组合总和 II)解法(C++ & 注释)
40. Combination Sum II(40. 组合总和 II)1. 题目描述2. 回溯法(Backtracking)2.1 解题思路2.2 实例代码1. 题目描述给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2原创 2020-06-28 23:19:02 · 485 阅读 · 2 评论 -
39. Combination Sum(组合总和)解法(C++ & 注释)
39. Combination Sum(组合总和)1. 题目描述2. 回溯法(Backtracking)2.1 解题思路2.2 实例代码1. 题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7],原创 2020-06-28 14:39:13 · 1111 阅读 · 0 评论 -
36. Valid Sudoku(有效的数独)两种解法(C++ & 注释)
36. Valid Sudoku(有效的数独)1. 题目描述2. 暴力解法(Brute Force)2.1 解题思路2.2 实例代码3. 二分查找(Binary Search)3.1 解题思路3.2 实例代码4. 参考资料1. 题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独原创 2020-06-27 16:04:54 · 410 阅读 · 0 评论 -
34. Find First and Last Position of Element in Sorted Array(在排序数组中查找元素的第一个和最后一个位置)解法(C++ & 注释)
34.在排序数组中查找元素的第一个和最后一个位置)1. 题目描述2. 二分查找(Binary Search)2.1 解题思路2.2 实例代码1. 题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: n原创 2020-06-26 20:04:44 · 306 阅读 · 0 评论 -
33. Search in Rotated Sorted Array(搜索旋转排序数组)两种解法(C++ & 注释)
33. Search in Rotated Sorted Array(搜索旋转排序数组)1. 题目描述2. 一次遍历(Single Pass Approach)2.1 解题思路2.2 实例代码1. 题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(原创 2020-06-25 23:50:20 · 294 阅读 · 0 评论