摘要:
4. 寻找两个正序数组的中位数 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。 1.解题思路 题目要求时间复杂度为 O(lo 阅读全文
posted @ 2020-05-24 19:19
xiaoqichaoren
阅读(151)
评论(0)
推荐(0)
摘要:
105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / 阅读全文
posted @ 2020-05-24 19:16
xiaoqichaoren
阅读(159)
评论(0)
推荐(0)
摘要:
210. 课程表 II 现在你总共有 n 门课需要选,记为 0 到 n-1。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1] 给定课程总量以及它们的先决条件,返回你为了学完所有课程所安排的学习顺序。 可能会有多个正确的顺 阅读全文
posted @ 2020-05-24 19:14
xiaoqichaoren
阅读(135)
评论(0)
推荐(0)
摘要:
680. 验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。 示例 2: 输入: "abca" 输出: True 解释: 你可以删除c字符。 1.解题思路 这道题用双指针,从两头往中间遍历。 步骤: (1)如果找不到两个对称位置不同的元素的下标,直接返回 Tru 阅读全文
posted @ 2020-05-24 19:12
xiaoqichaoren
阅读(185)
评论(0)
推荐(0)
摘要:
5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 1.解题思路 根据回文串的特征,我们知道回文串除去两端的子串仍然是回文串,递归地拆除两端我们可以得到两种情况:长度为1的子串或长度为2的子串。 那么,反过来我们可以遍历字符串s,并对每个字符 阅读全文
posted @ 2020-05-24 19:09
xiaoqichaoren
阅读(127)
评论(0)
推荐(0)
摘要:
152. 乘积最大子数组 给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 1.解题思路 与(53. 最大子序和)解法一致,不同的是“负负得正”。当遍历到数组中的负数时,我们希望以它前一个位置结尾的某个段的积也是个负数,这样 阅读全文
posted @ 2020-05-24 19:08
xiaoqichaoren
阅读(127)
评论(0)
推荐(0)
摘要:
136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 1.解题思路 解法一:使用哈希表存储每个数字。遍历数组即可知道当前数字是否出现过。如果出现过, 阅读全文
posted @ 2020-05-24 19:06
xiaoqichaoren
阅读(163)
评论(0)
推荐(0)
摘要:
206. 反转链表 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 1.解题思路 我们可以申请两个指针,第一个指针叫 pre,最初是指向 null 的。 第二个指针 cur 指向 head,然后不断遍历 cur。 每次迭代到 阅读全文
posted @ 2020-05-24 19:04
xiaoqichaoren
阅读(129)
评论(0)
推荐(0)
摘要:
25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 k 是一个正整数,它的值小于或等于链表的长度。 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 示例: 给你这个链表:1->2->3->4->5 当 k = 2 时,应当返回: 2-> 阅读全文
posted @ 2020-05-24 19:02
xiaoqichaoren
阅读(167)
评论(0)
推荐(0)
摘要:
155. 最小栈 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 1.解题思路 在普通的栈设计(见 阅读全文
posted @ 2020-05-24 19:00
xiaoqichaoren
阅读(148)
评论(0)
推荐(0)
摘要:
102. 二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 1 阅读全文
posted @ 2020-05-24 18:59
xiaoqichaoren
阅读(150)
评论(0)
推荐(0)
摘要:
236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树 阅读全文
posted @ 2020-05-24 18:57
xiaoqichaoren
阅读(198)
评论(0)
推荐(0)
摘要:
50. Pow(x, n) 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例: 输入: 2.00000, 10 输出: 1024.00000 1.解题思路 「快速幂算法」的本质是分治算法。 X ^n=X ^(n/2)*X ^(n/2),当n为奇数时,X ^n=X ^((n-1)/2) 阅读全文
posted @ 2020-05-24 18:55
xiaoqichaoren
阅读(159)
评论(0)
推荐(0)
摘要:
221. 最大正方形 在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 1.解题思路(动态规划) 若形成正方形(非单 1),以当前为右下角的视角看,则需要:当前格、上、左、左上都是 1 可以换个角度:当前格、上、左、左上都不能受 0 的限制,才能成为正方形 递归式 阅读全文
posted @ 2020-05-24 18:54
xiaoqichaoren
阅读(218)
评论(0)
推荐(0)
摘要:
69. x 的平方根 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 1.解题思路 从小到大遍历整个数列找到x,使x^2>num。此时,x-1就是此题的解。至于查找就用二分搜索(因为二分搜索快)。今天这题太简单了,没劲!!!! 2.源码 阅读全文
posted @ 2020-05-24 18:52
xiaoqichaoren
阅读(160)
评论(0)
推荐(0)
摘要:
983. 最低票价 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。 火车票有三种不同的销售方式: 一张为期一天的通行证售价为 costs[0] 美元; 一张为期七天的通行证售价为 阅读全文
posted @ 2020-05-24 18:51
xiaoqichaoren
阅读(145)
评论(0)
推荐(0)
摘要:
45. 跳跃游戏 II 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。 1.解题思路 「贪心」地进行正向查找,每次找到可到达的最远位置(贪心思想),就可以在线性时间内得到最少的跳跃次数。 例 阅读全文
posted @ 2020-05-24 18:49
xiaoqichaoren
阅读(126)
评论(0)
推荐(0)
摘要:
56:合并区间 给出一个区间的集合,请合并所有重叠的区间。 1.解题思路 -先将子列表的较小值按从小到大排序 -然后比较后一个的较小值和当前的较大值 若前者不大于后者则将[当前的较小值,后一个的较大值]添加到结果集中 否则,直接将当前的列表,添加到结果集 2.源码 阅读全文
posted @ 2020-05-24 18:48
xiaoqichaoren
阅读(168)
评论(0)
推荐(0)
摘要:
202. 快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 True ; 阅读全文
posted @ 2020-05-24 18:46
xiaoqichaoren
阅读(151)
评论(0)
推荐(0)
摘要:
53. 最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 一、解题思路 设置一个数组,用来存动态规划的所有最优解,这个数组存的是以当前元素为最后一个元素的最大子序和 动态规划的递归式:m[i]=max(nums[i],nums[i]+ 阅读全文
posted @ 2020-05-24 18:43
xiaoqichaoren
阅读(137)
评论(0)
推荐(0)