分治算法
该专栏主要是一些分治算法的题解
jump_into_zehe
这个作者很懒,什么都没留下…
展开
-
戳气球
LeetCode 312戳气球有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums 中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得 nums[left] * nums[i] * nums[right] 个硬币。 这里的 left 和 right 代表和 i 相邻的两个气球的序号。注意当你戳破了气球 i 后,气球 left 原创 2020-08-02 23:30:16 · 137 阅读 · 0 评论 -
为运算表达式设计优先级
LeetCode 241为运算表达式设计优先级给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: "2-1-1"输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2示例 2:输入: "2*3-4*5"输出: [-34, -14, -10, -10, 10]解释: (2*(3-(4*5))) = -34 ((2*3)-(4*5原创 2020-08-02 20:53:26 · 472 阅读 · 0 评论 -
面试题 10.09. 排序矩阵查找
LeetCode面试题 10.09. 排序矩阵查找给定M×N矩阵,每一行、每一列都按升序排列,请编写代码找出某元素。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]解法:从右上角查找解题思路:从最右边第一行开始查找,如果比目标值大,则这一列都不用考虑了,往左边原创 2020-08-02 19:22:49 · 189 阅读 · 0 评论 -
剑指Offer 36.二叉搜索树和双向链表
LeetCode剑指Offer 36.二叉搜索树和双向链表输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以原创 2020-08-02 15:39:11 · 155 阅读 · 0 评论 -
剑指Offer 39.数组中出现次数超过一半的数字
LeetCode剑指Offer 39. 数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2解法:摩尔投票法解题思路:这道题可以用哈希表或者直接排序后来解决,但是最优解法是摩尔投票法。摩尔投票法的基本思想我们假设众数为x,然后遍历数组,当我们遇到x时,就将票数+1,当我们遇到非x时,就将原创 2020-08-02 11:33:23 · 112 阅读 · 0 评论