LeetCode
LeetCode
买个橘籽
这个作者很懒,什么都没留下…
展开
-
LeetCode096. 不同的二叉搜索树
LeetCode096. 不同的二叉搜索树给定一个整数n,求以1 ...n为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 ...原创 2020-12-01 11:09:51 · 179 阅读 · 1 评论 -
LeetCode98. 验证二叉搜索树
LeetCode98. 验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,nu...原创 2020-11-18 14:40:42 · 107 阅读 · 0 评论 -
LeetCode94. 二叉树的中序遍历
LeetCode94. 二叉树的中序遍历给定一个二叉树的根节点root,返回它的中序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]提示:树中节点数目在范围[0, 100]内-100 <= Node.val <= 100树的中序遍历,递归:1. 若根节点为空,直接返回 2. 若...原创 2020-11-17 15:15:17 · 165 阅读 · 0 评论 -
LeetCode92. 反转链表 II
LeetCode92. 反转链表 II反转从位置m到n的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL迭代,反转法因为要反转中间的链表,所以我把链表分成三部分(前部分链表,反转链表和后部分链表)找到前部分链表的尾节点(第m-1个节点)就可以开始反转,最后把三个...原创 2020-11-16 10:57:56 · 145 阅读 · 0 评论 -
LeetCode328. 奇偶链表
LeetCode328. 奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2-&g原创 2020-11-13 10:53:32 · 84 阅读 · 0 评论 -
LeetCode90.子集II
LeetCode90.子集II给定一个可能包含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[ [2], [1], [1,2,2], [2,2], [1,2], []]回溯法,不熟悉回溯法的可以看看这边文章,回溯思想团灭排列、组合、子集问题:https://leetcode-cn.com/problems/subsets/solution/hui-su-si-xiang-.原创 2020-11-12 17:41:53 · 103 阅读 · 0 评论 -
LeetCode922. 按奇偶排序数组 II
LeetCode922. 按奇偶排序数组 II给定一个非负整数数组A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当A[i] 为奇数时,i也是奇数;当A[i]为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。提示:2 <= A.length <= 20000A.length % ...原创 2020-11-12 16:58:48 · 794 阅读 · 2 评论 -
LeetCode89. 格雷编码
LeetCode89. 格雷编码格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。示例 1:输入:2输出:[0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的n,其格雷编码序列并不唯一。例如,[0,2,3,1]也是一个有效的格雷编码序列。00 - 010 - 211 ...原创 2020-11-11 11:50:57 · 170 阅读 · 0 评论 -
LeetCode88.合并两个有序数组
LeetCode88.合并两个有序数组给你两个有序整数数组nums1和nums2,请你将nums2合并到nums1中,使nums1成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n 。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出:[1,2,...原创 2020-11-10 10:30:18 · 143 阅读 · 0 评论 -
LeetCode31.下一个排列
LeetCode31.下一个排列实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1我们希望下一个数比当前数大,这样才满足“下一个排列”的定义。因此只需要将后面的「大数」与前面的「小数」交换,就能得到一个更大的数原创 2020-11-10 10:01:25 · 96 阅读 · 0 评论 -
LeetCode86. 分隔链表
LeetCode86. 分隔链表给定一个链表和一个特定值x,对链表进行分隔,使得所有小于x的节点都在大于或等于x的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5双指针法:设置两个链表,在第一个链表中存放小于x的值,第二个链表中存放大于等于x链表的值,然后将第二个接在第一个链表尾部,最后返回这...原创 2020-11-09 17:06:16 · 114 阅读 · 0 评论 -
LeetCode973. 最接近原点的 K 个点
LeetCode973. 最接近原点的 K 个点我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。(这里,平面上两点之间的距离是欧几里德距离。)你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。示例 1:输入:points = [[1,3],[-2,2]], K = 1输出:[[-2,2]]解释: (1, 3) 和原点之间的距离为 sqrt(10),(-2, 2) 和原点之间的距离为 sqrt(8),由于 s原创 2020-11-09 16:05:46 · 171 阅读 · 0 评论 -
LeetCode80:删除排序数组中的重复项II
LeetCode80:删除排序数组中的重复项II给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,..原创 2020-10-16 00:27:10 · 716 阅读 · 0 评论 -
LeetCode69:x的平方根
LeetCode69:x的平方根原创 2020-10-15 20:14:42 · 684 阅读 · 0 评论 -
LeetCode70. 爬楼梯
爬楼梯原创 2020-10-12 00:06:20 · 668 阅读 · 0 评论 -
LeetCode67. 二进制求和
二进制求和原创 2020-10-11 23:54:02 · 666 阅读 · 0 评论 -
Leetcode64:最小路径和
Leetcode64:最小路径和给定一个包含非负整数的mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。动态规划这题求的是从左上角到右下角,路径上的数字和最小,并且每次只能向下或向右移动。所以上面很容易想到动态规划求解。我们可以使用一个二维数组dp,dp[i][j]表示...原创 2020-10-10 10:09:29 · 711 阅读 · 0 评论 -
Leetcode62:不同路径
Leetcode62:不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> .原创 2020-10-09 11:36:22 · 792 阅读 · 0 评论 -
Leetcode61:旋转链表
Leetcode61:旋转链表给定一个链表,旋转链表,将链表每个节点向右移动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:输入:...原创 2020-10-09 11:06:52 · 1447 阅读 · 2 评论