zoukankan      html  css  js  c++  java
  • Bottom-up 解法

    遇到一些题目, 用递归加 bottom-up 解法能得到更优的时间复杂度, 对这些题目做一个汇总

    1. google code jam Rational Number Tree

    2. 二叉树的公共祖先节点

    3. leetcode convert sorted list to balanced search tree

    1. Rational Number Tree

    void getPQ(int n, int &p, int &q) {

        if(n == 1) {

            p = q = 1;

            return ;

        }

       

        getPQ(n/2, p, q);

          

        int newp, newq;

        if(n & 1) { /* 右孩子 */

            newp = p + q;

            newq = q;

       

        }else {

            newp = p;

            newq = p + q;

        }

        p = newp;

        q = newq;

    }

       

    void getN(int &n, int p, int q) {

        if(p == 1 && q == 1) {

            n = 1;

            return;

        }

       

        int newp, newq;

        if(p > q) { /* 右孩子 */

            newp = p - q;

            newq = q;

            getN(n, newp, newq);

            n = n*2 + 1;

        }else {

            newp = p;

            newq = q-p;

            getN(n, newp, newq);

            n = n*2;

        }

    }

    2. 二叉树的公共节点

    Node* LCA(Node *root, Node *p, Node *q) {

        if(root == NULL) return NULL;

        if(p == root || q == root) return root;

        Node* lchild = LCA(root->left, p, q);

        Node* rchild = LCA(root->right, p, q);

        if(lchild && rchild) return root;

        if(lchild) return lchild;

        return rchild;

    }

    3. Convert Sorted List to Balanced Search Tree

    TreeNode* buildTree(ListNode* &head, int st, int ed)  {
    	if(st > ed) return NULL;
    
    	int mid = (st+ed)>>1;
    
    	TreeNode* lchild = buildTree(head, st, mid-1);
    	TreeNode* parent = new TreeNode(head->val);
    	head = head->next;
    	TreeNode* rchild = buildTree(head, mid+1, ed);
    
    	parent->left = lchild;
    	parent->right = rchild;
    
    	return parent;
    }
    

      

  • 相关阅读:
    org.apache.maven.archiver.MavenArchiver.getManifest
    网易云信发送短信验证码
    background-attachment:fixed;
    background-size属性100% cover contain
    width:100% width:auto 区别
    背景图全屏显示
    多行文字的垂直居中
    路径问题../绝对路径/
    用position子绝父相和css3动画,当鼠标一上去元素从底部慢慢向上
    前置后置运算符重载
  • 原文地址:https://www.cnblogs.com/zhouzhuo/p/3687289.html
Copyright © 2011-2022 走看看