Leetcode--50. Pow(x,y)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。
方法一:暴力法,时间复杂度:O(n),通不过
class Solution {
public double myPow(double x, int n) {
double sum=1;
int i;
if(n>0)
{
for(i=1;i<=n;i++)
{
sum*=x;
}
}
else if(n<0)
{
n = -n;
for(i=1;i<=n;i++)
{
sum*=x;
}
sum=1/sum;
}
else
{
sum = 1;
}
return sum;
}
}
方法二:二分法
例如:次方为偶数的话,1024 = 32*32,即2^10=2^5*2^5,依次类推,2^n=2^(n/2)*2^(n/2)
次方为奇数复杂一点,2048(2^11)=32*32*2, 2^n=2^(n/2)*2^(n/2)*2
提交的代码:
class Solution {
public static double powRecursion(double x, int n) {
if (n == 0) {
return 1;
}
if ((n%2) == 0) {
return powRecursion(x * x, n / 2);
} else {
return powRecursion(x * x, n / 2) * x;
}
}
public static double myPow(double x, int n) {
double sum=1;
if(n==1)
{
return x;
}
if(n==-1)
{
return 1/x;
}
int i=0;
if(n==0)
{
return 1;
}
else if(n<0)
{
n=-n;
x = 1/x;
}
sum = powRecursion(x,n);
return sum;
}
}
完整的代码:
import java.util.Scanner;
public class Solution50 {
public static double powRecursion(double x, int n) {
if (n == 0) {
return 1;
}
if ((n%2) == 0) {
return powRecursion(x * x, n / 2);
} else {
return powRecursion(x * x, n / 2) * x;
}
}
public static double myPow(double x, int n) {
double sum=1;
if(n==1)
{
return x;
}
if(n==-1)
{
return 1/x;
}
int i=0;
if(n==0)
{
return 1;
}
else if(n<0)
{
n=-n;
x = 1/x;
}
sum = powRecursion(x,n);
return sum;
}
public static void main(String[] args)
{
double x;
int n;
Scanner sc = new Scanner(System.in);
x = sc.nextDouble();
n = sc.nextInt();
System.out.println(myPow(x,n));
}
}
Leetcode--50. Pow(x,y)相关推荐
- 【分治】LeetCode 50. Pow(x, n)
LeetCode 50. Pow(x, n) Solution1:我的答案 偷鸡摸狗的做法 class Solution { public:double myPow(double x, int n) ...
- c语言的 pow函数是快速幂吗,leetcode 50. Pow(x, n)(快速幂)
就是一个二分法快速幂. 但是需要注意的问题是这里是实数,而且n可能为负. int的范围是-2,147,483,648 至 2,147,483,647.如果为-2,147,483,648那么直接n=-n ...
- Leetcode 50. Pow(x, n)
50. Pow(x, n) Total Accepted: 96891 Total Submissions: 348858 Difficulty: Medium Implement pow(x, n) ...
- LeetCode 50. Pow(x, n)(二分查找)
文章目录 1. 题目 2. 二分查找 2.1 递归 2.2 循环 1. 题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 示例 输入: 2.00000, 10 输出: 1024.000 ...
- leetCode 50.Pow(x, n) (x的n次方) 解题思路和方法
Pow(x, n) Implement pow(x, n). 思路:题目不算难.可是须要考虑的情况比較多. 详细代码例如以下: public class Solution {public double ...
- leetcode 50. Pow(x, n) 快速幂
好像没怎么快 #include <iostream> #include <math.h> using namespace std;class Solution {public: ...
- leetcode 50. Pow(x,n)
题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 解法 快速幂 利用二进制运算的性质 class Solution {public:double myPow(double x, int ...
- 实验2.4 使用系统函数pow(x,y)计算xy的值
题目 使用系统函数pow(x,y)计算xy的值,注意包含头文件math.h AC的C++代码如下: #include<iostream> #include<math.h> us ...
- Math.pow(x,y)使用注意事项
首先明确Math.pow(x,y)的作用就是计算x的y次方,其计算后是浮点数,这里先看一个例子: 例1:153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3* ...
- history of program atan2(y,x)和pow(x,y)
编年史 1951 – Regional Assembly Language 1952 – Autocode 1954 – IPL (LISP语言的祖先) 1955 – FLOW-MATIC (C ...
最新文章
- docker 数据卷 mysql_Docker容器数据卷原理及使用方法解析
- android onLayout死循环
- 聊聊spring tx的EnableTransactionManagement
- CSS的alt:图片无法显示时候显示alt内容
- asp.net跨页面传值收集
- 数据库-数据类型介绍
- java panel frame_Java 版 (精华区)--Frame和Panel的区别【转载】
- WebQML笔记-qml获取canvas中元素是否被按下
- 使用CCDirector的notificationNode来创建独立的信息提示层
- 程序员如何成为编程高手并以此创业
- java自学难点_分享在达内教育培训Java的感受
- 个人整理的常用python脚本【很好用】
- 【托业】【新托业TOEIC新题型真题】学习笔记7-题库二-P1~4
- 制作png格式透明图片的简易方法
- 百度导航怎么不显示服务器,百度地图的导航设置中选择在线优先还是离线优先?...
- MySQL 之union all 与 order by 同时出现问题
- django mezzanine添加多语言支持
- 简易处理字典MDX文件的方法
- python爬虫基础知识
- Debian10修改静态ip
热门文章
- LeetCode 815. 公交路线(最少换乘,BFS)
- Kaggle 房价预测竞赛优胜方案:用 Python 进行全面数据探索
- python中的文件读取注意事项
- php将文件夹压缩成zip文件,将文件夹压缩成zip文件的php代码_php实例
- matlab记录路径,matlab对文件目录路径的操作
- python odoo_odoo python 使用缓存
- 知乎热榜:程序员达到什么水平能拿到20k月薪
- 对比学习有多火?文本聚类都被刷爆了…
- day01『NLP打卡营』实践课1:词向量应用演示
- Android官方开发文档Training系列课程中文版:目录