题目的链接在这里:
https://leetcode-cn.com/problems/maximum-subarray/
题目大意
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
一、示意图
二、解题思路
使用Java来写
代码如下:
class Solution {
//但是因为这个测试用例里存在一些很大的值,所以为了防止越界,是先将n转化为负数来的
public double myPow(double x, int n) {
//直接使用暴力检索的,是会超过时间限制的,所以使用的是折半
return n>0 ?newPow(x,-n):(1/newPow(x,n));
}
//然后写这个方法
public double newPow(double x,int n){
//这个方法就是用来折半折半的查找
double res=1;
while(n<0){
//在这个循环之下,判断这个次数是单数还是双数 ,其实只需要最初做一个判断
//如果他是单数的话,就多乘一个x,然后再将n/2强行变成双数,每次砍掉一半的惩
if(n%2!=0){
//说明刚开始是单数
res*=x;//也就是需要把这个半给放进去
}
//然后开始互相乘,然后强行折半。就和消消乐一样
x*=x;
n/=2;
}
//最后结果再乘一下
return res;
}
}