算法
文章平均质量分 59
知北行
不积跬步,无以至千里,不积小流,无以成江海
展开
-
算法---LeetCode 144. 二叉树的前序遍历
1. 题目原题链接给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?Related Topics 栈 树???? 367 ???? 02. 题解2.1 非递归(栈)根节点先入栈,栈不空时,出栈,将其右儿子与左儿子依次入栈 class Solution { public List<Integer> preorderTraversal(Tr原创 2021-08-02 19:37:29 · 169 阅读 · 0 评论 -
算法---LeetCode 18. 四数之和
1. 题目原题链接给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c +d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例 1:输入:nums = [1,0,-1,0,-2,2], target = 0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例 2:输入:nums = [], target = 0原创 2021-08-01 11:12:07 · 174 阅读 · 1 评论 -
算法---LeetCode 153. 寻找旋转排序数组中的最小值
1. 题目原题链接假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1示例 2:输入: [4,5,6,7,0,1,2]输出: 0Related Topics 数组 二分查找???? 261 ???? 02. 题解2.1 解法1: 二分查找每次比较 nums[mid] 与 nums原创 2021-07-29 14:49:10 · 171 阅读 · 0 评论 -
算法---LeetCode 912. 排序数组 (堆排序)
1. 题目原题链接给你一个整数数组 nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 2:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= nums.length <= 50000-50000 <= nums[i] <= 50000???? 274 ???? 02. 题解2.1 堆排序将堆想象成一棵完全二叉树, 并使用数组代替, 由于下标从 0 开始,原创 2021-07-29 11:38:01 · 304 阅读 · 0 评论 -
算法---LeetCode 19. 删除链表的倒数第 N 个结点
1. 题目原题链接给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?Related Topics 链表 双指针???? 966 ???? 02. 题解2.1 解法二:双指针(哑结点)+一次遍历1.首先设置一个头部哑结点 h,这样方便处原创 2021-07-28 19:59:52 · 119 阅读 · 0 评论 -
算法---LeetCode 5. 最长回文子串
1. 题目原题链接给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”Related Topics 字符串 动态规划???? 2467 ???? 02. 题解2.1 解法1: 中心扩展法遍历每一个字符, 分别从 同一位置 i 和 i, i+1 位置进行两边扩散, 寻找最大长度并返回注意点: 返回的长度计算为 r原创 2021-07-21 14:42:45 · 105 阅读 · 0 评论 -
算法---LeetCode 145. 二叉树的后序遍历
1. 题目原题链接给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]12/3输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?Related Topics 栈 树???? 393 ???? 02. 题解2.1 迭代(非递归)非递归解法,使用栈与前序遍历对比,前序遍历为 根 左 右,后序为 左 右 根,1,若将前序遍历中每次插到链表头部,那么访问顺序 变为, 右左根,2,若入栈时检查左右节点顺序修改 为左节点先入栈,右节点后原创 2021-07-12 09:23:00 · 132 阅读 · 0 评论 -
算法---LeetCode21. 合并两个有序链表
1. 题目原题链接将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->42. 题解2.1 解法1: 迭代双指针代码: class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) {原创 2021-07-05 16:54:19 · 114 阅读 · 0 评论 -
算法---LeetCode 168. Excel表列名称
1. 题目原题链接给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。例如:A -> 1B -> 2C -> 3…Z -> 26AA -> 27AB -> 28…示例 1:输入:columnNumber = 1输出:“A”示例 2:输入:columnNumber = 28输出:“AB”示例 3:输入:columnNumber = 701输出:“ZY”示例 4:输入:columnNumber = 2原创 2021-07-03 18:27:18 · 157 阅读 · 0 评论 -
算法---LeetCode 862. 和至少为 K 的最短子数组
1. 题目原题链接返回 A 的最短的非空连续子数组的长度,该子数组的和至少为 K 。如果没有和至少为 K 的非空子数组,返回 -1 。示例 1:输入:A = [1], K = 1输出:1示例 2:输入:A = [1,2], K = 4输出:-1示例 3:输入:A = [2,-1,2], K = 3输出:3提示:1 <= A.length <= 50000-10 ^ 5 <= A[i] <= 10 ^ 51 <= K <= 10 ^ 9Re原创 2021-06-29 12:41:15 · 489 阅读 · 0 评论 -
算法---LeetCode 887. 鸡蛋掉落
1. 题目原题链接给你 k 枚相同的鸡蛋,并可以使用一栋从第 1 层到第 n 层共有 n 层楼的建筑。已知存在楼层 f ,满足 0 <= f <= n ,任何从 高于 f 的楼层落下的鸡蛋都会碎,从 f 楼层或比它低的楼层落下的鸡蛋都不会破。每次操作,你可以取一枚没有碎的鸡蛋并把它从任一楼层 x 扔下(满足 1 <= x <= n)。如果鸡蛋碎了,你就不能再次使用它。如果某枚鸡蛋扔下后没有摔碎,则可以在之后的操作中 重复使用 这枚鸡蛋。请你计算并返回要确定 f 确切的值原创 2021-06-28 23:16:36 · 526 阅读 · 2 评论 -
算法---LeetCode 386. 字典序排数
1. 题目原题链接给定一个整数 n, 返回从 1 到 n 的字典顺序。例如,给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。Related Topics 深度优先搜索 字典树???? 181 ???? 02. 题解2.1 解法1: DFS字典序可以抽象为一棵树, 相当于对 十叉树的先序遍历, 可以类比二叉树的DFS先序遍历来写递归函数参数: 最大数字原创 2021-06-28 21:09:56 · 186 阅读 · 0 评论 -
算法---LeetCode 410. 分割数组的最大值
1. 题目原题链接给定一个非负整数数组 nums 和一个整数 m ,你需要将这个数组分成 m 个非空的连续子数组。设计一个算法使得这 m 个子数组各自和的最大值最小。示例 1:输入:nums = [7,2,5,10,8], m = 2输出:18解释:一共有四种方法将 nums 分割为 2 个子数组。 其中最好的方式是将其分为 [7,2,5] 和 [10,8] 。因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。示例 2:输入:nums = [1,2,3,4,5], m =原创 2021-06-28 20:49:53 · 364 阅读 · 0 评论 -
算法---LeetCode 135. 分发糖果
1. 题目原题链接老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?示例 1:输入:[1,0,2]输出:5解释:你可以分别给这三个孩子分发 2、1、2 颗糖果。示例 2:输入:[1,2,2]输出:4解释:你可以分别给这三个孩子分发 1、2、1 颗糖果。第三个孩原创 2021-06-28 19:09:25 · 285 阅读 · 1 评论 -
算法---LeetCode 106. 从中序与后序遍历序列构造二叉树
1. 题目原题链接根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:3/ 9 20/ 15 7Related Topics 树 数组 哈希表 分治 二叉树???? 525 ???? 02. 题解2.1 解法1: 递归先建立一个 HashMap 用于查找结点在中序遍历序列中的位置, key 存储结原创 2021-06-28 17:31:56 · 97 阅读 · 0 评论 -
算法---LeetCode 440. 字典序的第K小数字
1. 题目原题链接给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。注意:1 ≤ k ≤ n ≤ 109。示例 :输入:n: 13 k: 2输出:10解释:字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。Related Topics 字典树???? 217 ???? 02. 题解解法1: 十叉树按字典序排序, 就是根据数字的前缀进行排序,比如 10 < 9,因为 10 的原创 2021-06-28 16:15:07 · 204 阅读 · 1 评论 -
算法---LeetCode 188. 买卖股票的最佳时机 IV(股票买卖问题总结)
1. 题目原题链接给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:k = 2, prices = [2,4,1]输出:2解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。示例 2:输原创 2021-06-28 14:18:09 · 364 阅读 · 0 评论 -
算法---LeetCode 123. 买卖股票的最佳时机 III
1. 题目原题链接给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:prices = [3,3,5,0,0,3,1,4]输出:6解释:在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3 。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8原创 2021-06-28 13:54:55 · 180 阅读 · 0 评论 -
算法---LeetCode 1095. 山脉数组中查找目标值(二分法)
1. 题目原题链接(这是一个 交互式问题 )给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index值。如果不存在这样的下标 index,就请返回 -1。何为山脉数组?如果数组 A 是一个山脉数组的话,那它满足如下条件:首先,A.length >= 3其次,在 0 < i < A.length - 1 条件下,存在 i 使得:A[0] < A[1] < … A[i-原创 2021-06-27 11:03:15 · 318 阅读 · 0 评论 -
算法---LeetCode 306. 累加数
1. 题目原题链接累加数是一个字符串,组成它的数字可以形成累加序列。一个有效的累加序列必须至少包含 3 个数。除了最开始的两个数以外,字符串中的其他数都等于它之前两个数相加的和。给定一个只包含数字 ‘0’-‘9’ 的字符串,编写一个算法来判断给定输入是否是累加数。说明: 累加序列里的数不会以 0 开头,所以不会出现 1, 2, 03 或者 1, 02, 3 的情况。示例 1:输入: “112358”输出: true解释: 累加序列为: 1, 1, 2, 3, 5, 8 。1 + 1 = 2原创 2021-06-26 18:12:33 · 358 阅读 · 0 评论 -
算法---LeetCode 120. 三角形最小路径和
1.题目原题链接给定一个三角形 triangle ,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。示例 1:输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]输出:11解释:如下面简图所示:23 46 5 74 1 8 3自顶向下的最原创 2021-06-26 17:11:12 · 132 阅读 · 0 评论 -
算法---LeetCode 405. 数字转换为十六进制数
1. 题目原题链接给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。示例 1:输入:26输出:“1a”示例 2:输入:-1输出:“ffffff原创 2021-06-26 15:55:53 · 189 阅读 · 0 评论 -
算法---LeetCode 165. 比较版本号
1. 题目原题链接给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号原创 2021-06-26 11:42:24 · 1145 阅读 · 0 评论 -
算法---双栈排序
1. 题目参考链接: 猿辅导、美团、字节面试题——双栈排序给定一个乱序的栈,设计算法将其升序排列。ps: 允许额外使用一个栈来辅助操作输入[4, 2, 1, 3]输出[1, 2, 3, 4]2. 题解2.1 单调栈使用一个辅助栈, 维护辅助栈为单调递增栈。每次操作都保证辅助栈内元素有序, 最终返回辅助栈即可算法流程当原始栈不为空时, 执行如下操作:每次从原始栈中取一个元素 cur, 与辅助栈顶元素 top 比较大小,若 cur< top, 则将 top出栈并加入 原原创 2021-06-26 11:05:32 · 889 阅读 · 0 评论 -
算法---LeetCode 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.nex原创 2021-06-26 10:45:34 · 200 阅读 · 0 评论 -
算法---LeetCode 443. 压缩字符串
1. 题目原题链接给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。进阶:你能否仅使用O(1) 空间解决问题?示例 1:输入:[“a”,“a”,“b”,“b”,“c”,“c”,“c”]输出:返回 6 ,输入数组的前 6 个字符应该是:[“a”,“2”,“b”,“2”,“c”,“3”]说明:“aa” 被 “a2” 替代。“bb” 被 “b2” 替代原创 2021-06-26 09:28:38 · 98 阅读 · 0 评论 -
算法---LeetCode 421. 数组中两个数的最大异或值
1. 题目原题链接给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。进阶:你可以在 O(n) 的时间解决这个问题吗?示例 1:输入:nums = [3,10,5,25,2,8]输出:28解释:最大运算结果是 5 XOR 25 = 28.示例 2:输入:nums = [0]输出:0示例 3:输入:nums = [2,4]输出:6示例 4:输入:nums = [8,10,2]输出:10示例 5:原创 2021-06-25 21:36:03 · 222 阅读 · 0 评论 -
算法---LeetCode 528. 按权重随机选择(实战场景: Ribbon 负载均衡)
1. 题目原题链接给定一个正整数数组 w ,其中 w[i] 代表下标 i 的权重(下标从 0 开始),请写一个函数 pickIndex ,它可以随机地获取下标 i,选取下标i 的概率与 w[i] 成正比。例如,对于 w = [1, 3],挑选下标 0 的概率为 1 / (1 + 3) = 0.25 (即,25%),而选取下标 1 的概率为 3 / (1 +3) = 0.75(即,75%)。也就是说,选取下标 i 的概率为 w[i] / sum(w) 。示例 1:输入:[“Solution”原创 2021-06-25 11:21:06 · 742 阅读 · 1 评论 -
算法---LeetCode 706. 设计哈希映射
1. 题目原题链接不使用任何内建的哈希表库设计一个哈希映射(HashMap)。实现 MyHashMap 类:MyHashMap() 用空映射初始化对象void put(int key, int value) 向 HashMap 插入一个键值对 (key, value) 。如果 key 已经存在于映射中,则更新其对应的值 value 。int get(int key) 返回特定的 key 所映射的 value ;如果映射中不包含 key 的映射,返回 -1 。void remove(key)原创 2021-06-25 09:34:31 · 297 阅读 · 0 评论 -
算法---木头切割问题(二分法)
1. 题目参考链接: 木头切割问题给定长度为n的数组,每个元素代表一个木头的长度,木头可以任意截断,从这堆木头中截出至少k个相同长度为m的木块。已知k,求max(m)。输入两行,第一行n, k,第二行为数组序列。输出最大值。输入5 54 7 2 10 5输出4解释:如图,最多可以把它分成5段长度为4的木头ps:数据保证有解,即结果至少是1。2. 题解2.1 解法1: 暴力法主要思路遍历 1 到 木棍最长的长度, 每次遍历的长度作为 m, 以 m 为长度截取木头, 若能截取出原创 2021-06-24 22:37:36 · 4024 阅读 · 2 评论 -
算法---LeetCode 47. 全排列 II
1. 题目原题链接给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。示例 1:输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例 2:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]提示:1 <= nums.length <= 8-10 <= nums[i] <= 10Related Topic原创 2021-06-24 21:37:06 · 222 阅读 · 0 评论 -
算法---LeetCode 40. 组合总和 II
1. 题目原题链接给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]示例 2:输入原创 2021-06-24 20:14:20 · 171 阅读 · 0 评论 -
算法---LeetCode 209. 长度最小的子数组
1. 题目原题链接给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4, nums = [1,4,4]输出原创 2021-06-24 17:17:48 · 151 阅读 · 0 评论 -
算法---LeetCode 670. 最大交换
1. 题目原题链接给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例 1 :输入: 2736输出: 7236解释: 交换数字2和数字7。示例 2 :输入: 9973输出: 9973解释: 不需要交换。注意:给定数字的范围是 [0, 108]Related Topics 贪心算法 数学???? 176 ???? 02. 题解2.1 解法1: 贪心算法基本思想: 尽量交换前面的数位,并且和它交换的数还得是在它后面大于它的最大数算法流程:先将原创 2021-06-24 16:34:13 · 1446 阅读 · 0 评论 -
算法---LeetCode 402. 移掉 K 位数字
1. 题目原题链接给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。示例 1 :输入:num = “1432219”, k = 3输出:“1219”解释:移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219 。示例 2 :输入:num = “10200”, k = 1输出:“200”解释:移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。示例 3 :输入:num原创 2021-06-24 16:04:39 · 374 阅读 · 0 评论 -
算法---LeetCode 525. 连续数组
1. 题目原题链接给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。示例 1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。提示:1 <= nums.length <= 105nums[i] 不是 0 就是 1Re原创 2021-06-24 11:22:57 · 153 阅读 · 0 评论 -
算法---LeetCode 349. 两个数组的交集
1. 题目原题链接给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。Related Topics 数组 哈希表 双指针 二分查找 Sorting???? 380 ???? 02. 题解2.1 解法1: 遍历+哈希表先遍历原创 2021-06-24 10:48:52 · 98 阅读 · 0 评论 -
算法---计算数组的小和
1. 题目参考链接: 计算数组的小和在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。求一个数组的小和。例子:[1,3,4,2,5]1左边比1小的数,没有;3左边比3小的数,1;4左边比4小的数,1、3;2左边比2小的数,1;5左边比5小的数,1、3、4、2;所以小和为1+1+3+1+1+3+4+2=16要求时间复杂度O(NlogN),空间复杂度O(N)2. 题解解法1: 归并排序最容易想到的做法是遍历一遍数组,对于每个元素计算前面比它小的数的和,累加即可得出原创 2021-06-24 09:27:54 · 659 阅读 · 0 评论 -
算法---LeetCode 232. 用栈实现队列
1. 题目原题链接请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop from to原创 2021-06-23 20:23:04 · 102 阅读 · 0 评论 -
算法---LeetCode 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-06-23 19:45:48 · 76 阅读 · 0 评论