题目:

Implement pow(xn).

代码:

class Solution {
public:
double myPow(double x, int n)
{
double ret = Solution::positivePow(fabs(x), abs(n));
if ( n> )
{
if ( x< && n& )
{
return - * ret;
}
}
else
{
if ( x< && abs(n)& )
{
return - / ret;
}
return / ret;
}
return ret;
}
static double positivePow(double x, int n)
{
if ( n== ) return ;
if ( n== ) return x;
double v1 = Solution::positivePow(x, n/);
double v2 = n& ? x : ;
return v1 * v1 * v2;
}
};

tips:

1. 考察binary search的思想,把计算复杂度由O(n)降低为O(logn)

2. 有个细节就是判断奇数偶数的时候,用bit判断,效率能略高一些。其实自己对计算机内部怎么执行加减乘除的原理应该是学过,但是忘记了,回头复习下。

===========================================

第二次过这道题,参考了之前的思路,分类讨论细一些,一次AC了。

class Solution {
public:
double myPow(double x, int n)
{
double ret = ;
ret = Solution::pow(fabs(x), abs(n));
if ( x> )
{
if ( n>= )
{
return ret;
}
else
{
return / ret;
}
}
else
{
if ( n & )
{
if ( n> )
{
return -ret;
}
else
{
return - / ret;
}
}
else
{
if ( n> )
{
return ret;
}
else
{
return / ret;
}
} }
}
static double pow(double x, int n)
{
if (n==) return ;
if (n==) return x;
double val = Solution::pow(x, n/);
double remain = n & ? x : ;
return val * val * remain;
}
};

=====================================

第三次过,代码简洁了一些。主要是把x为0单独处理一下。

class Solution {
public:
double myPow(double x, int n)
{
double ret = ;
if ( fabs(x-)<1e- ) return 0.0;
ret = Solution::pow(fabs(x), abs(n));
if (x>)
{
if ( n< )
{
ret = 1.0 / ret;
}
}
else
{
if ( n & )
{
ret = -ret;
}
if ( n< )
{
ret = 1.0 / ret;
}
}
return ret;
}
static double pow(double x, int n)
{
if (n==) return ;
if (n==) return x;
double val = Solution::pow(x, n/);
double remain = n & ? x : ;
return val * val * remain;
}
};

【Pow(x,n)】的更多相关文章

  1. 【夯实PHP基础】PHP数组,字符串,对象等基础面面观

    本文地址 分享提纲 1.数组篇 2.字符创篇 3.函数篇 4.面向对象篇 5.其他篇 /*************************** 一.数组篇 Begin***************** ...

  2. 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码【123和12345】那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出的电话号码(java实现)

    解题: 假如现在有一堆长度大于3小于9的电话号码,用座机呼叫,如果出现这样的号码[123和12345]那么12345将永远不会被拨出,因为拨到123的时候电话已经呼出了,试写一个函数输出所有不能被呼出 ...

  3. 【面试题043】n个骰子的点数

    [面试题043]n个骰子的点数 题目:     把n个骰子扔在地上,所有骰子朝上一面的点数之和为s, 输入n,打印出s的所有可能的值出现的概率.   n个骰子的总点数,最小为n,最大为6n,根据排列组 ...

  4. 【百度地图API】如何自定义地图图层?实例:制作麻点图(自定义图层+热区)

    原文:[百度地图API]如何自定义地图图层?实例:制作麻点图(自定义图层+热区) 摘要:自定义地图图层的用途十分广泛.常见的应用,比如制作魔兽地图和清华校园地图(使用切图工具即可轻松实现).今天我们来 ...

  5. 【百度地图API】如何根据摩卡托坐标进行POI查询,和计算两点距离

    原文:[百度地图API]如何根据摩卡托坐标进行POI查询,和计算两点距离 摘要: 百度地图API有两种坐标系,一种是百度经纬度,一种是摩卡托坐标系.在本章你将学会: 1.如何相互转换这两种坐标: 2. ...

  6. 【百度地图API】建立全国银行位置查询系统(二)——怎样为地图添加控件

    原文:[百度地图API]建立全国银行位置查询系统(二)--怎样为地图添加控件 <摘要>你将在第二章中学会以下知识: 使用手写代码的利器——notepad++: 如何为地图添加控件——鱼骨. ...

  7. PHP常用函数归类【持续整理中......】

    一.PHP基础语法   变量,常量     严格区分大小写,但内置结构或关键字无所谓(echo)     命名:不能以数字,空格,.来开头,但是可以有汉字,eg:$变量="aa"; ...

  8. 【Python】-NO.97.Note.2.Python -【Python 基本数据类型】

    1.0.0 Summary Tittle:[Python]-NO.97.Note.2.Python -[Python 基本数据类型] Style:Python Series:Python Since: ...

  9. mysql学习【第4篇】:MySQL函数和编程

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第4篇]:MySQL函数 官方文档 : 官方文档 常用函数 分类: 数学函数 , ...

随机推荐

  1. vim 粘贴复制操作

    原文链接:http://www.cnblogs.com/lansh/archive/2010/08/19/1803378.html vi编辑器有3种模式:命令模式.输入模式.末行模式.掌握这三种模式十 ...

  2. iOS JS 交互之利用系统JSContext实现 JS调用OC方法以及Objective-C调用JavaScript方法

    ios js 交互分为两块: 1.oc调用js 这一块实现起来比较简单, 我的项目中加载的是本地的html,js,css,需要注意的是当你向工程中拖入这些文件时,选择拷贝到工程中,(拖入的文件夹是蓝色 ...

  3. sql server 索引总结一

    一.存储结构 在SQL Server中,有许多不同的可用排列规则选项. 二进制:按字符的数字表示形式排序(ASCII码中,用数字32表示空格,用68表示字母"D").因为所有内容都 ...

  4. 将腾讯视频客户端缓冲的文件转换为一个MP4格式文件

    打开腾讯视频windows客户端,播放要下载的视频,逐步快进使其缓冲完毕: 按照下图所示,复制缓存路径: 在cmd.exe的界面中输入“cd C:\854456b6d5a187ff3c0f553918 ...

  5. shrio中去掉 login;JSESSIONID

    shrio中去掉 login;JSESSIONID 在session管理器配置页面中新增一条记录

  6. Kibana功能一览

    Overview标签 总共32个请求,最大响应时间:4.7秒 Usage标签 可以看到HTTP请求的发起时间分布 Performance and Quality 6个请求里,响应时间在100毫秒以下的 ...

  7. 【BZOJ4300】绝世好题(位运算水题)

    点此看题面 大致题意: 给你一个序列\(a\),让你求出最长的一个子序列\(b\)满足\(b_i\&b_{i-1}!=0\). 位运算+\(DP\) 考虑设\(f_i\)表示以第\(i\)个数 ...

  8. java字符格式

    http://blog.chinaunix.net/uid-12348673-id-3335300.html http://blog.csdn.net/zhouyong80/article/detai ...

  9. AngularJS 数组

    AngularJS数组就像Javascript数组 <!DOCTYPE html><html><head><meta http-equiv="Con ...

  10. 第十四篇、OC_新闻查看器

    PageTitleView: #import <UIKit/UIKit.h> @class GFBPageTitleView; @protocol GFBPageTitleViewDele ...