![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
Avada__Kedavra
这个作者很懒,什么都没留下…
展开
-
leetcode 283 移动零
通过一个快指针和慢指针在一个 for 循环下完成两个 for 循环的工作。原创 2023-08-28 22:03:36 · 136 阅读 · 0 评论 -
LeetCode 1. Two Sum
1. 题目原创 2020-12-17 18:51:28 · 52 阅读 · 0 评论 -
LeetCode 437. Path Sum III
1.题目您将获得一个二叉树,其中每个节点都包含一个整数值。找到相加和为sum的路径数。路径不需要在根或叶子处开始或结束,但必须向下(仅从父节点行进到子节点)。2.思路每个节点node都有三种方案:以node为根,合为sum的路径数; 以node->left为根,合为sum的路径数; 以node->right为根,合为sum的路径数;递归执行上述步骤3....原创 2019-06-24 16:36:03 · 96 阅读 · 0 评论 -
LeetCode 112. Path Sum 二叉树路径和
1.题目给定二叉树及sum,确定树是否具有根到叶节点的路径,使得沿路径的所有值相加等于给定的总和。注意:叶子是没有子节点的节点。2.思路是否存在一个累加为目标和的路径,我们可以把目标和(sum) 减去每个路径上节点的值,来进行递归。直到它到达叶节点并且差值等于0(sum == node->val 或者说 sum - node->val == 0),这样得到了一条路径。...原创 2019-06-24 14:46:45 · 143 阅读 · 0 评论 -
Leetcode 81. Search in Rotated Sorted Array II 旋转数组中的查找
1.题目假设按升序排序的数组在事先未知的某个点处旋转。(即[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。您将获得要搜索的目标值。 如果在数组中找到则返回true,否则返回false。2.思路与LeetCode 33. Search in Rotated Sorted Array 旋转数组中的查找类似3.实现class Solution...原创 2019-06-06 19:22:23 · 113 阅读 · 0 评论 -
LeetCode 200. Number of Islands 岛屿的数量
1.题目给定2d网格图(其中,1代表陆地 0代表水),计算岛屿数量。 岛被水包围,通过水平或垂直连接相邻的土地而形成。您可以假设网格的所有四个边缘都被水包围。示例:Input:11000110000010000011Output: 32.思路DFS的思想。遍历矩阵,每遇到’1’后, 开始向四个方向DFS,搜'1'到后该位置变为’0’,因为相邻的...原创 2019-06-12 23:38:52 · 1700 阅读 · 2 评论 -
LeetCode 33. Search in Rotated Sorted Array 旋转数组中的查找
1.题目假设按升序排序的数组在事先未知的某个点处旋转。(即[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。您将获得要搜索的目标值。 如果在数组中找到则返回其索引,否则返回-1。假设数组中不存在重复。要求算法的运行时复杂度必须为O(log n)。示例:Input: nums = [4,5,6,7,0,1,2], target = 0Output:...原创 2019-06-05 23:26:54 · 95 阅读 · 0 评论 -
LeetCode 442. Find All Duplicates in an Array 找到数组中所有的重复元素
1.题意给定一个整数数组,数组中的元素a[i]满足 1≤a[i]≤n(n =数组大小),一些元素出现两次,其他元素出现一次。找到在此数组中出现两次的所有元素。要求时间复杂度,空间复杂度示例: Input:[4,3,2,7,8,2,3,1]Output:[2,3]2.思路nums[i] 下标的范围 (0~n-1)与nums[i]-1 的范围一致。每...原创 2019-05-31 19:07:25 · 169 阅读 · 0 评论 -
LeetCode 153. Find Minimum in Rotated Sorted Array 旋转数组的最小值
1. 题意假设按升序排序的数组在事先未知的某个点处旋转。(即[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。找到其中最小值。假设数组中不存在重复。2.分析对于区间nums[lo, hi],(1) 如果nums[lo] <nums[hi],此区间是升序的,没有旋转,直接返回nums[lo]即为最小值。若不满足(1) 则nums[lo...原创 2019-05-22 19:06:33 · 86 阅读 · 0 评论 -
LeetCode 852. Peak Index in a Mountain Array
1.题意Mountain Array 的定义:Array.length >= 3 存在某些下标i满足 0 < i < A.length - 1such thatA[0] < A[1] < ... A[i-1] < A[i] > A[i+1] > ... > A[A.length - 1]2.题意 ...原创 2019-05-21 20:30:53 · 132 阅读 · 0 评论 -
LeetCode 278. First Bad Version 第一个错误版本
1.题意您是产品经理,目前领导团队开发新产品。 不幸的是,您产品的最新版本未通过质量检查。 由于每个版本都是基于以前的版本开发的,因此错误版本之后的所有版本也都是错误的。假设您有n个版本[1,2,...,n]并且您想找出第一个错误的版本,这会导致以下所有版本都出错。您将获得一个API bool isBadVersion(版本),它将返回版本是否错误。 实现一个函数来查找第一个错误版本。...原创 2019-05-21 18:33:26 · 136 阅读 · 0 评论 -
LeetCode 74. Search a 2D Matrix 二维数组中的查找
1.题意在二维数组中查找目标值该矩阵具有以下属性: 每行中的整数从左到右排序。 每行的第一个整数大于前一行的最后一个整数。把矩阵从左到右、从上到下连起来就是一个递增的数组,可以等效成一维数组的查找。例如示例中的 可以排列为[1, 3, 5, 7, 10, 11,...原创 2019-05-16 15:08:35 · 201 阅读 · 0 评论 -
LeetCode 94. Binary Tree Inorder Traversal 二叉树的中序遍历
题目要求:返回树的中序遍历序列中序遍历的过程:(1)中序遍历根节点的左子树(2)访问根节点(3)中序遍历根节点的右子树递归版本解法:递归版本1:class Solution {public: vector<int> inorderTraversal(TreeNode* root) { vector<int> res;...原创 2019-05-07 23:47:36 · 133 阅读 · 0 评论 -
LeetCode 34. Find First and Last Position of Element in Sorted Array 有序数组中target出现的始末位置
1.题意给定按升序排序的整数数组,找到target的起始位置和结束位置。算法的运行时复杂度必须为O(log n)。如果在数组中找不到目标,则返回[-1,-1]。这是一道典型的二分查找的问题。2.代码实现class Solution {public: vector<int> searchRange(vector<int>& nums...原创 2019-05-15 00:42:06 · 116 阅读 · 0 评论 -
LeetCode 35. Search Insert Position 查找插入位置
1.题意给定有序数组和目标值,如果找到目标值,则返回索引。 如果没有,请返回按顺序插入的索引。可以假设数组中没有重复项。题目其实是查找等于或第一个大于target的元素的下标。有序数组的查找考虑二分查找(Binary Search)。示例Example 1:Input: [1,3,5,6], 5Output: 2Example 2:Input: [1,...原创 2019-05-14 21:34:42 · 191 阅读 · 0 评论 -
LeetCode 二分查找(Binary Search)相关的题目
1.概念部分有序向量的二分查找又叫折半查找。以任一元素nums[mi] 为界,都可以将区间分为三部分,且根据此时的有序性必有: nums[lo, mi) <= nums[mi] <= nums(mi, hi]于是只需要将目标元素target与nums[mi]相比较,根据比较结果可分为三...原创 2019-05-14 20:56:40 · 189 阅读 · 0 评论 -
Leetcode 69. Sqrt(x) 求平方根
1.题目计算并返回x的平方根,其中x保证为非负整数。由于返回类型是整数,因此仅返回结果的整数部分。实例输入:8输出:22.思路2.1思路一这是二分查找的变式。x的平方根范围是[0, x],在这个范围内的任何一个数字mi,都可以将[lo, hi]分为三部分: [...原创 2019-06-06 21:44:16 · 112 阅读 · 0 评论 -
LeetCode 237. Delete Node in a Linked List 删除链表的节点
1.题目编写一个函数来删除单链表中的节点(尾部除外),只允许访问该节点。示例 :Input: head = [4,5,1,9], node = 5Output: [4,1,9]2.思路只需的时间复杂度可以删除该节点,步骤如下:令该节点的值为下一个节点的值; 该节点指向下一个节点的next位置。 把下一个节点删除。例如 i->j 删除节点i1...原创 2019-06-18 20:55:26 · 149 阅读 · 0 评论 -
LeetCode 83. Remove Duplicates from Sorted List 删除有序列表中重复的节点
1.题目给定已排序的链表,删除所有重复节点,使每个元素只出现一次。示例:Input: 1->1->2->3->3Output: 1->2->32.思路cur 指向当前节点如果 cur 与 cur的下一个节点值相同。cur的next指针指向cur->next->next, 相当于将cur->next从链表中...原创 2019-06-18 21:25:13 · 135 阅读 · 1 评论 -
LeetCode 572. Subtree of Another Tree 树的子结构
1.题目给定两个非空的二叉树s和t,检查树t是否具有与s完全相同的结构。 s的子树是一个树,由s中的节点和所有节点的后代组成。 树也可以被视为自己的子树。实例s 3 / \ 4 5 / \ 1 2t 4 / \ 1 2Returntrues 3 / \ 4 5 / \ 1 ...原创 2019-06-24 14:14:04 · 200 阅读 · 0 评论 -
LeetCode 145. Binary Tree Postorder Traversal 二叉树的后序遍历 非递归&递归实现
1.题目给定二叉树,返回其节点值的后序遍历序列。2.思路后序遍历的过程:(1) 后序遍历根节点的左子树(2) 后序遍历根节点的右子树(3) 访问根节点后序遍历的非递归实现是三种遍历方式中最难的一种。因为在后序遍历中,要保证左子节点和右子结点都已被访问并且左子节点在右子节点前访问才能访问根结点,这就为流程的控制带来了难题。对于任一结点P,将其入栈,然后沿...原创 2019-06-23 22:24:17 · 103 阅读 · 0 评论 -
LeetCode 154. Find Minimum in Rotated Sorted Array II
1. 题意假设按升序排序的数组在事先未知的某个点处旋转。(即[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。找到其中最小值。假设数组中可能存在重复。2.思路对于区间nums[lo, hi],(1) 如果nums[lo] <nums[hi],此区间是升序的,没有旋转,直接返回nums[lo]即为最小值。若不满足(1) 则nums[...原创 2019-06-04 23:33:40 · 117 阅读 · 0 评论 -
LeetCode 946. Validate Stack Sequences 栈的压入、弹出序列
1.题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。示例Input: pushed = [1,2,3,4,5], popped = [4,5,3,2,1]Output: trueExplanation: We might do the following sequence:push(1), push(2)...原创 2019-06-20 23:49:33 · 528 阅读 · 0 评论 -
LeetCode 54. Spiral Matrix 顺时针打印矩阵
1.题目给定m×n个元素的矩阵(m行,n列),以顺时针顺序返回矩阵的所有元素。示例Input:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]Output: [1,2,3,6,9,8,7,4,5]2.思路用左上和右下的坐标定位出一次要旋转打印的数据,一次旋转打印结束后,往对角分别前进和后退一个单位。注意边界条件,不要越...原创 2019-06-20 23:06:16 · 148 阅读 · 0 评论 -
LeetCode 102. Binary Tree Level Order Traversal 二叉树的层次遍历/广度优先遍历
1.题目返回二叉树的层次遍历。2.思路节点的访问次序可概括为“先上后下,先左后右”——先访问根节点,再依次是左子节点,右子节点,左子节点的左子节点,左子节点的右子节点,右子节点的左子节点,右子节点的右子节点……以此类推。3.实现3.1 非递归版本class Solution {public: vector<vector<int>&g...原创 2019-06-20 21:50:56 · 159 阅读 · 0 评论 -
LeetCode 279. Perfect Squares
1.题目给定正整数n,最少的平方数(例如,1,4,9,16 ......)使它们和为n。示例:Input: n = 12Output: 3 Explanation: 12 = 4 + 4 + 4.2.思路用动态规划的思想解决问题。dp[n] 表示最少的平方数i*i本身就是一个完美平方数,所以dp[i*i] = 1一个数字x = j + i*i ...原创 2019-06-16 21:17:09 · 87 阅读 · 0 评论 -
Leetcode 343. Integer Break 整数拆分
1.题目给定正整数n,将其分解为至少两个正整数之和,同时使得乘积最大。 返回最大乘积。2.思路可以考虑动态规划的思路,首先定义dp[n]为“把n分成若干个数字之后乘积的最大值”。在第一次分割数字的时候,可以用n -1中可能的选择,第一个数字的大小可能是。因此如果我们将数字N分成两个因子,那么最大乘积是多少?f = x *(N-x),当x = N / 2时,我们得到...原创 2019-06-16 20:29:42 · 213 阅读 · 0 评论 -
LeetCode 206. Reverse Linked List 反转单链表
1.题目反转单链表2.思路1) nex 保存当前节点cur的下一个节点2) cur 指向 前一个节点pre3) pre = cur cur = nex3.实现class Solution {public: ListNode* reverseList(ListNode* head) { if(head == nullptr)...原创 2019-06-19 21:18:01 · 177 阅读 · 0 评论 -
LeetCode 203. Remove Linked List Elements 删除链表中得的元素
1.题目删除链表中所有值为val的节点。Input: 1->2->6->3->4->5->6, val = 6Output: 1->2->3->4->52.实现class Solution {public: ListNode* removeElements(ListNode* head, int va...原创 2019-06-19 21:08:40 · 180 阅读 · 0 评论 -
LeetCode 141. Linked List Cycle 有环链表
1.题目给定一个链表,确定它是否有一个环。2.思路“双指针”解决问题 快慢指针 fast slow fast 指针每次走两步 slow 指针每次走一步如果走得快的指针和走得慢的指针“相遇”了,那么链表就有环。3.实现class Solution {public: bool hasCycle(ListNode *head) { ...原创 2019-06-19 19:54:22 · 130 阅读 · 0 评论 -
LeetCode 82. Remove Duplicates from Sorted List II 剔除链表中的重复节点 II
1.题目给定已排序的链表,删除所有具有重复数字的节点,只留下原始列表中的不同数字。示例:Input: 1->2->3->3->4->4->5Output: 1->2->52.思路新建链表头结点指针 dummy如果当前节点cur的值与下一个节点的值相同,两个节点都需要被删除。为了保证删除链表之后的链表仍然是相连...原创 2019-06-18 22:04:02 · 117 阅读 · 1 评论 -
LeetCode 144. Binary Tree Preorder Traversal 二叉树的前序遍历
题目要求:返回树的前序遍历序列前序遍历的过程:(1)访问根节点(2)前序遍历根节点的左子树(3)前序遍历根节点的右子树递归版本解法:递归版本1:class Solution {public: vector<int> preorderTraversal(TreeNode* root) { vector<int> r...原创 2019-05-07 20:33:00 · 125 阅读 · 0 评论