剑指Offer(第二版):49. 丑数 (动态规划) 14- II(I). 剪绳子 II(贪心算法) 33. 二叉搜索树的后序遍历序列(后序遍历的使用、递归)

dsasd在这里插入图片描述
dsasd在这里插入图片描述
dssdsdas在这里插入图片描述

/**
解题思路:咋说呢?这种题就是看解析,首先动态规划,dp[n]代表第n+1个丑数
          具体怎么想,看别人总结,已放到CSDN
 */
class Solution {
    public int nthUglyNumber(int n) {
        int[] dp = new int[n];
        //边界值
        dp[0] =1;
        //三个指针指向0,分别对应着前一个丑数的下标
        int a=0 , b=0 , c=0;
        for(int i=1 ; i<n ; i++){
            int na = dp[a]*2 , nb = dp[b]*3 , nc = dp[c]*5;
            dp[i] = Math.min(Math.min(na,nb),nc);
            if(dp[i] == na) a++;
            if(dp[i] == nb) b++;
            if(dp[i] == nc) c++;
        }
        return dp[n-1];
    }
}

adas在这里插入图片描述
dssdasd在这里插入图片描述
dsaddddas在这里插入图片描述

/**
解题思想:贪心算法
    首先我们要根据不等式求得分成每一段的长度是多少,我们求导发现每一段的最优值应该为e≈2.7,而如果是整数,则优先选3其次2.
    对于4,不能再分,所以我们要直到贪心算法不是精确解,一定要注意
 */
class Solution {
    public int cuttingRope(int n) {
        //首先每段的最优值为3.
        if(n <= 3)
            return n-1;
        int div = 1000000007;
        //n>3时进行分段,
        long res = 1L;
        //贪心算法,优先切三,其次切二
        while(n>4){
            res = res*3%div;
            n-=3;
        }
        return (int)(res*n%div);
    }
}

dsasd在这里插入图片描述
dsadas在这里插入图片描述

/**
解题思想:  递归
    首先是数组长度如果只有一个或者没有,我们需要判断
        1、找根节点,一定是区间的最后一个值
        2、
 */
class Solution {
    public boolean verifyPostorder(int[] postorder) {
        return recur(postorder , 0 , postorder.length-1);
    }
    private boolean recur(int[] postorder , int i , int j){
        //递归头,树长<=1
        if(i>=j) return true;
        //接下来找左右子树的区间
        int p = i;
        while(postorder[p]<postorder[j]) p++;
        int m = p;
        //到此 m就是右子树节点的第一各节点
        //接下来判断右子树是否都大于根节点
        while(postorder[p]>postorder[j]) p++;

        return p==j && recur(postorder , i , m-1) && recur(postorder , m , j-1);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值