「2021」LeetCode每日一题
文章平均质量分 55
记录2021年LeetCode每日一题(JavaScript实现)
CUG-GZ
这个作者很懒,什么都没留下…
展开
-
2021-04-04 | 337. 打家劫舍 III
1. 题目描述在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,null,3,null,1] 3 / \ 2 3 \ \原创 2021-04-07 19:21:14 · 367 阅读 · 0 评论 -
2021-04-05 | 213. 打家劫舍 II
1. 题目描述你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,能够偷窃到的最高金额。示例 1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因原创 2021-04-07 18:43:57 · 296 阅读 · 0 评论 -
2021-04-07 | 64. 最小路径和
1. 题目描述给定一个包含非负整数的 _m_ x _n_ 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明: 每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == grid.lengthn == grid[i].length1 <=原创 2021-04-07 18:12:57 · 255 阅读 · 0 评论 -
2021-04-06 | 120. 三角形最小路径和
1. 题目描述给定一个三角形 triangle ,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。**相邻的结点 **在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。示例 1:输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]输出:11解释:如下面简图所示: 2 3 4 6 5 74 1 8 3原创 2021-04-07 18:11:48 · 274 阅读 · 0 评论 -
2021-03-24 | 23. 合并K个升序链表
1. 题目描述给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists原创 2021-03-24 23:36:59 · 276 阅读 · 0 评论 -
2021-03-01 | 138. 复制带随机指针的链表
1. 题目描述给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。**复制链表中的指针都不应指向原链表中的节点 **。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --&g原创 2021-03-24 23:36:17 · 185 阅读 · 0 评论 -
2021-03-02 | 725. 分隔链表
1. 题目描述给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]示例 1:输入:root = [1原创 2021-03-24 22:48:07 · 250 阅读 · 0 评论 -
2021-03-03 | 147. 对链表进行插入排序
1. 题目描述对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出:原创 2021-03-24 00:28:39 · 309 阅读 · 1 评论 -
2021-03-04 | 237. 删除链表中的节点
1. 题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – 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]解释:给定你链原创 2021-03-24 00:00:49 · 229 阅读 · 0 评论 -
2021-03-05 | 203. 移除链表元素
1. 题目描述给你一个链表的头节点 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, 10] 内1 <= Node.val原创 2021-03-23 23:51:42 · 157 阅读 · 0 评论 -
2021-03-06 | 1721. 交换链表中的节点
1. 题目描述给你链表的头节点 head 和一个整数 k 。交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[1,4,3,2,5]示例 2:输入:head = [7,9,6,6,7,8,3,0,9,5], k = 5输出:[7,9,6,6,8,7,3,0,9,5]示例 3:输入:head = [1], k = 1输出:[1]示例 4:输入:head =原创 2021-03-23 23:37:33 · 182 阅读 · 0 评论 -
2021-03-07 | 61. 旋转链表
1. 题目描述给定一个链表,旋转链表,将链表每个节点向右移动 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->1->原创 2021-03-23 23:17:25 · 112 阅读 · 0 评论 -
2021-03-08 | 445. 两数相加 II
1. 题目描述给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 8 -> 0 -> 72. 解题思路对于这道题目,我们可以先用两个栈分原创 2021-03-23 23:00:00 · 169 阅读 · 0 评论 -
2021-03-09 | 160. 相交链表
1. 题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B原创 2021-03-23 22:34:57 · 155 阅读 · 0 评论 -
2021-03-23 | 817. 链表组件
1. 题目描述给定链表头结点 head,该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 G,该列表是上述链表中整型值的一个子集。返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 G 中)构成的集合。示例 1:输入:head: 0->1->2->3G = [0, 1, 3]输出: 2解释:链表中,0 和 1 是相连接的,且 G 中不包含 2,所以 [0, 1] 是 G 的一个组件,同理 [3] 也是一个组件,故返回 2。原创 2021-03-23 22:32:49 · 302 阅读 · 0 评论 -
2021-03-22 | 707. 设计链表
1. 题目描述设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节原创 2021-03-23 21:59:43 · 122 阅读 · 0 评论 -
2021-03-10 | 876. 链表的中间结点
1. 题目描述给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.ne原创 2021-03-23 21:55:54 · 163 阅读 · 0 评论 -
2021-03-11 | 剑指 Offer 54. 二叉搜索树的第k大节点
1. 题目描述给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4限制: 1 ≤ k ≤ 二叉搜索树元素个数2. 解题思路我们知道,二叉搜索树的中序原创 2021-03-21 22:57:05 · 163 阅读 · 0 评论 -
2021-03-12 | 669. 修剪二叉搜索树
1. 题目描述给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在唯一的答案。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能会根据给定的边界发生改变。示例 1:输入:root = [1,0,2], low = 1, high = 2输出:[1,null,2]示例 2:原创 2021-03-21 22:22:41 · 189 阅读 · 0 评论 -
2021-03-13 | 654. 最大二叉树
1. 题目描述给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下:二叉树的根是数组 nums 中的最大元素。左子树是通过数组中 最大值左边部分 递归构造出的最大二叉树。右子树是通过数组中 最大值右边部分 递归构造出的最大二叉树。返回有给定数组 nums 构建的 最大二叉树。示例 1:输入:nums = [3,2,1,6,0,5]输出:[6,3,5,null,2,0,null,null,1]解释:递归调用如下所示:- [3,2,1,6,0,5原创 2021-03-21 22:00:35 · 167 阅读 · 0 评论 -
2021-03-14 | 513. 找树左下角的值
1. 题目描述给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7注意: 您可以假设树(即给定的根节点)不为 NULL。2. 解题思路这里可以对二叉树进行层序遍历,而层序遍历就是基于广度优先遍历的。在遍历的过程中,我们初始化一个队列来保存当前层的节原创 2021-03-21 21:34:44 · 173 阅读 · 0 评论 -
2021-03-15 | 508. 出现次数最多的子树元素和
1. 题目描述给你一个二叉树的根结点,请你找出出现次数最多的子树元素和。一个结点的「子树元素和」定义为以该结点为根的二叉树上所有结点的元素之和(包括结点本身)。你需要返回出现次数最多的子树元素和。如果有多个元素出现的次数相同,返回所有出现次数最多的子树元素和(不限顺序)。示例 1:输入: 5 / \2 -3返回 [2, -3, 4],所有的值均只出现一次,以任意顺序返回所有值。示例 2:输入: 5 / \2 -5返回 [2],只有 2 出现两次,-5 只出现 1原创 2021-03-21 21:07:00 · 180 阅读 · 0 评论 -
2021-03-16 | 501. 二叉搜索树中的众数
1. 题目描述给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2], 1 \ 2 / 2返回[2].提示:如果众数超过1个,不需考虑输出顺序进阶: 你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)2.原创 2021-03-21 20:26:04 · 175 阅读 · 0 评论 -
2021-03-17 | 450. 删除二叉搜索树中的节点
1. 题目描述给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key = 3 5 / \ 3 6 / \ \2 4 7给定需要删除的节点值是原创 2021-03-21 19:55:38 · 160 阅读 · 0 评论 -
2021-03-18 | 404. 左叶子之和
1. 题目描述计算给定二叉树的所有左叶子之和。示例:3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 242. 解题思路对于这道题目,我们可以对二叉树进行层序遍历, 初始化一个对来queue来保存当前层的元素,遍历队列中的元素,如果该节点的左子树不存在左右子树,说明它是一个左叶子节点,将其加在结果上。复杂度分析:时间复杂度:O(n),最坏的情况下,也就是二叉树只有右子树,而形成一个链表的时候,我们需要遍历完整原创 2021-03-21 18:02:28 · 154 阅读 · 0 评论 -
2021-03-19 | 235. 二叉搜索树的最近公共祖先
1. 题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6 解原创 2021-03-21 17:44:09 · 119 阅读 · 0 评论 -
2021-03-20 | 222. 完全二叉树的节点个数
1. 题目描述给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2 个节点。示例 1:输入:root = [1,2,3,4,5,6]输出:6示例 2:输入:root = []输出:0示例 3:输入:root = [1]输出:1提示:树中节点的数目范围是[0, 5 * 10]原创 2021-03-21 17:15:02 · 562 阅读 · 0 评论 -
2021-03-21 | 117.填充每个节点的下一个右侧节点指针 II
1. 题目描述给定一个二叉树struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。示例:输入:root = [1,2,原创 2021-03-21 16:11:34 · 105 阅读 · 0 评论 -
2021-02-14 | 198. 打家劫舍
1. 题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你** 不触动警报装置的情况下 **,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。原创 2021-03-13 23:10:20 · 174 阅读 · 0 评论 -
2021-02-13 | 114. 二叉树展开为链表
1. 题目描述给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。示例 1:输入:root = [1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,4,null,5,null,6]示例 2:输入:root = []输出:[]示例 3:输入:root = [0]输出:[0原创 2021-03-13 22:47:24 · 209 阅读 · 0 评论 -
2021-02-12 | 189. 旋转数组
1. 题目描述给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4原创 2021-03-13 19:09:12 · 163 阅读 · 0 评论 -
2021-02-11 | 704. 二分查找
1. 题目描述给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示:你可以原创 2021-03-13 18:30:44 · 163 阅读 · 0 评论 -
2021-02-10 | 24. 两两交换链表中的节点
1. 题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val <= 100进阶:你能在不修改链表节点值的情况下解决这个问题吗?(也就是说,仅修改原创 2021-03-13 18:07:11 · 185 阅读 · 0 评论 -
2021-02-09 | 662. 二叉树最大宽度
1. 题目描述给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree) 结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。示例 1:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: 4解释: 最大值出现在树的第原创 2021-03-04 00:21:08 · 300 阅读 · 1 评论 -
2021-02-08 | 322. 零钱兑换
1. 题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], amount = 3输出:-1示例 3:输入:coins = [1], amount = 0输出:0示例 4原创 2021-02-27 20:09:10 · 224 阅读 · 0 评论 -
2021-02-07 | 162. 寻找峰值
1. 题目描述峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。示例 1:输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入:nums = [1,2,1,3,5,6,4]输出:1 或 5 解释:你的函数可以返回索引 1,其峰值元素为 2; 或者原创 2021-02-27 19:25:57 · 242 阅读 · 0 评论 -
2021-02-06 | 1143. 最长公共子序列
1. 题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:输入:text1 = "abcde", text2原创 2021-02-27 18:37:02 · 226 阅读 · 0 评论 -
2021-02-05 | 4. 寻找两个正序数组的中位数
1. 题目描述给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (原创 2021-02-27 16:39:31 · 221 阅读 · 0 评论 -
2021-02-04 | 41. 缺失的第一个正数
1. 题目描述给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。进阶: 你可以实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案吗?示例 1:输入:nums = [1,2,0]输出:3示例 2:输入:nums = [3,4,-1,1]输出:2示例 3:输入:nums = [7,8,9,11,12]输出:1提示:0 <= nums.length <= 300-2 <= nums[i] <= 2 - 12. 解原创 2021-02-27 16:27:03 · 207 阅读 · 0 评论 -
2021-02-03 | 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
1. 题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。提示:0 <= nums.length <= 500001 <= nums[i] <= 100002. 解题思路对于这道题目,我们可以使用双指针来处理。定义left和right两个指针,初始时,left指针在数组第一个原创 2021-02-26 00:01:00 · 209 阅读 · 0 评论