
分治
leagalhigh
never give up!
展开
-
合并k个排序链表
分治法。 这道题我是先用自己的方法做了出来,花费了很多时间,调试了很多次。最后和网上的解法对比了一下,发现自己的合并两个链表的函数太繁杂,包含太多if else,典型的初学者思维,代码不简洁还容易出错。所以网友的方法是在是值得学习,建议记下来,这是公式化的合并双链表法。我的C++代码:/** * Definition of ListNode * class ListNode { * publ原创 2017-02-04 23:15:55 · 250 阅读 · 0 评论 -
验证二叉查找树
分治法。分左右子树进行计算,但在计算时,有两点需要注意: 需要另外创建一个函数,它用来传递不能超过的最低值和不能超过的最高值; 但是还有一个特殊值需要排除,就是最大最小int本身。 C++代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *ri原创 2017-02-04 23:56:55 · 318 阅读 · 0 评论 -
二叉树中最大路径和
分治,动态规划。 分析:最长的路径一定经过某一个点,并且以这一个点为根节点;所以可以动态遍历每一个节点,找到使路径和最大的根节点。 C++代码:/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int原创 2017-02-07 21:28:45 · 2596 阅读 · 0 评论 -
二叉平衡树
分治,递归。 这道题有两种好方法。 方法1:先有一个求深度depth的函数,然后递归比较各个节点的depth之差,返回结果。 C++代码:class Solution { public: /** * @param root: The root of binary tree. * @return: An integer */ int m原创 2017-02-07 22:09:37 · 371 阅读 · 0 评论 -
x的n次幂
分治法。 简单,考虑到大于0,等于0,小于0的各种可能。 C++代码:class Solution { public: /** * @param x the base number * @param n the power number * @return the result */ double myPow(double x, int n)原创 2017-02-02 10:55:20 · 432 阅读 · 0 评论 -
快速幂
分治法。 a%b == (a%b)%b; ans、a要用long long 来保存,不然会溢出; 应该用分治法来解决问题,如果n为奇数,就计算一次ans,然后n减半,aa倍增; 直到n==0,结束循环 C++代码:class Solution { public: /* * @param a, b, n: 32bit integers * @return: An integ转载 2017-02-03 09:51:52 · 173 阅读 · 0 评论 -
leetcode-241. Different Ways to Add Parentheses
考察点:递归,分治。 思路:这道题是典型的递归,分治题目。首先应该明确主函数是什么作用:它接受一个string,返回由这个string组成的所有种计算结果vector。因此,可以遍历一遍字符串,找出运算符将字符串分成两个字符串,然后分别用该函数递归。然后将结果存入ret数组里。在for循环外,如果ret是空的,说明该字符串就是一个完整的数字,直接返回它的整数化结果就行。这也是最终判断条件在函数最后原创 2017-05-01 10:44:25 · 270 阅读 · 0 评论