CodeTop每日系列三题------------------2021.12.14

LC50. Pow(x, n)
//本道题目掉入陷进就是不断重复N次进行一个求解,然而超时了。其实求一个n次幂可以采取一个快速幂模板,也就是说我每次都求底数的平方那么x的64次方只需要求6次即可。
在这里插入图片描述

class Solution {
    public double myPow(double x, int n) {
        //定义结果
        double sum = 1;
        //转换为long是因为如果是Integer.MIN_VALUE转为负数会越界
        long b = n;
        //计算n次幂可以转换成快速幂模板
        //不断求平方减小计算的次数,这样本来64的平方只需要求6次即可不用64次
        //如果指数小于0先转换底数再将指数转为正数
        if(b < 0){
            x = 1 / x;
            b = -b;
        } 
        while(b > 0){
            //如果当前的指数为奇数那么要多乘一个底数
            if(b % 2 == 1) sum *= x;
            x *= x;
            //指数向下取整除以2,相当于该数右移一位
            b >>= 1;
        }
        return sum;
    }
}

在这里插入图片描述
LC739. 每日温度
//那么也就是说单调栈而言就是栈底到栈顶的方向递减就是单调递减栈,递增就是单调递增栈,维护一个单挑递减的栈从栈底到栈顶温度以此递减。如果一个下标还在单调栈当中那么也就是说没有找到对应比栈顶大的温度。
在这里插入图片描述

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        int length = temperatures.length;
        //此时的栈存放的是数组下标的位置,并且是单调递减栈
        //从栈底到栈顶都是递减的
        Deque<Integer> stack = new LinkedList();
        int[] result = new int[length];
        for(int i = 0;i < length;i++){
            //如果当前栈不为空并且当前的元素大于栈顶的元素的话
            //弹出栈顶元素
            while(!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]){
                //那么记录栈顶当前天数过了多少天以后才有更高的温度
                int pre = stack.pop();
                //过了i-pre天
                result[pre] = i - pre;
            }
            stack.push(i);
        }
        return result;
    }
}

在这里插入图片描述
LC剑指 Offer 27. 二叉树的镜像
//头一次20s做了出来哈哈哈哈哈哈哈简单题我重拳出击,没什么好说的模板就完事了
在这里插入图片描述

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode mirrorTree(TreeNode root) {
        if(root == null)
        return null;
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        mirrorTree(root.left);
        mirrorTree(root.right);
        return root;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破晓以胜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值