50. Pow(x, n) (编程技巧)
Implement pow(x, n).
double sum = 1;
if (n > 0) {
while ((n--) > 0)
sum *= x;
return sum;
} else if (n < 0) {
while ((n++) < 0)
sum /= x;
}
return sum; //开始单纯的我是这样写的。超时了
if (n == 0) //想了一下,不就是求x+10000/x的最小值。自己运行都通过了,但是leetcode仍然显示超时,错误1,x的100次仍然很大,需要bigdeciml。错误2,前后两步运行时间是相差很大的,所以不是求x+10000/x的最小值。AC版的才是正确答案
return 1;
double sum = 1, tmp = 1;
if (n > 0) {
int sq = (int) Math.round(Math.sqrt(n));
for (int i = sq; i > 0; i--)
tmp *= x;
// System.out.println(tmp);
for (int i = 0; i < sq; i++)
sum *= tmp;
int i = n - sq * sq;
// System.out.println(i);
if (i > 0) {
for (int j = 0; j < i; j++)
sum *= x;
} else if (i < 0) {
for (int j = i; j < 0; j++)
sum /= x;
}
return sum;
} else {
int m = Math.abs(n);
int sq = (int) Math.round(Math.sqrt(m));
for (int i = sq; i > 0; i--)
tmp /= x;
// System.out.println("tmp="+tmp);
for (int i = 0; i < sq; i++)
sum *= tmp;
int i = n + sq * sq;
// System.out.println(i);
if (i > 0) {
for (int j = 0; j < i; j++)
sum *= x;
} else if (i < 0) {
for (int j = i; j < 0; j++)
sum /= x;
}
return sum;
}
public class Solution { //虽然用了递归,挺巧妙的,一定要记得思想 & 和 >>
public double myPow(double x, int n) { //类似思想的还有求最大公约数
if (n == 0) return 1.0;
if (n < 0) { x = 1 / x; n = ~n + 1; }
if (n == 1) return x;
if (n == 2) return x * x;
if ((n & 1) == 1) return x * myPow(x * x, n >> 1);
return myPow(x * x, n >> 1);
}
}
50. Pow(x, n) (编程技巧)的更多相关文章
- EF – 2.EF数据查询基础(上)查询数据的实用编程技巧
目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...
- [Leetcode][Python]50: Pow(x, n)
# -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 50: Pow(x, n)https://leetcode.com/probl ...
- WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇]
原文:WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇] 在<上篇>中,我通过使用Delegate的方式解决了服务调用过程中的异常处理以及对服务代理的关闭.对于<WCF技术 ...
- WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇]
原文:WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇] 在进行基于会话信道的WCF服务调用中,由于受到并发信道数量的限制,我们需要及时的关闭信道:当遇到某些异常,我们需要强行中止(Abor ...
- 6、50道JAVA基础编程练习题跟答案
50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析 ...
- 50道JAVA基础编程练习题
50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析 ...
- EF – 2.EF数据查询基础(上)查询数据的实用编程技巧
目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-高级编程技巧 Box2d和Shader
高级编程技巧只是相对的,其实主要是讲物理模拟和着色器程序的使用. 本章主要讲解利用Box2D并用它来实现萝卜雨,然后是使用单色着色器shader让画面呈现单色状态:http://files.cnblo ...
- Python高效编程技巧实战 实战编程+面试典型问题 中高阶程序员过渡
下载链接:https://www.yinxiangit.com/603.html 目录: 如果你想用python从事多个领域的开发工作,且有一些python基础, 想进一步提高python应用能力 ...
- Python3实用编程技巧进阶 ☝☝☝
Python3实用编程技巧进阶 ☝☝☝ 1.1.如何在列表中根据条件筛选数据 # 1.1.如何在列表中根据条件筛选数据 data = [-1, 2, 3, -4, 5] #筛选出data列表中大于等 ...
随机推荐
- Storm0.9.4安装 - OPEN 开发经验库
Storm0.9.4安装 - OPEN 开发经验库 bin/zkServer.sh start /home/guym/down/kafka_2.8.0-0.8.0/config/zookeeper.p ...
- postman使用教程
最近很多朋友在问postman的使用方法,现我经过整理,分享给大家. Postman 是一个很强大的 API调试.Http请求的工具,当你还准备拿着记事本傻傻的去写 Form 表单的时候,你来试试 P ...
- tree 查询出数据遍历tree
$('#tree1').tree({ url:'${contextPath}/pedition/treelistJc.html?editionUid=${ formatEdition.ppmId}', ...
- python psutil 模块
一.获取系统性能信息 1 .CPU信息 User time,执行用户进程的时间百分比 System time,执行内核进程和中断的百分比 Wait IO,由于IO等待而使CPU处于idle(空闲)状态 ...
- 运行ASP程序报错
错误提示: An error occurred on the server when processing the URL. Please contact the system administrat ...
- [oracle] ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
安装好Oracle数据库后: 执行 dbstart和dbshut会提示: [oracle@oracle11g ~]$ dbstartORACLE_HOME_LISTNER is not SET, un ...
- TCP segment of a reassembled PDU
Wireshark有时候会显示这个东东. 此处PDU是指上层(如HTTP)的Protocol Data Unit,意指上层协议的一个协议段太长,无法放入单个TCP数据包. 如果你在wireshark中 ...
- Python 通过print_lol将数据保存到文件中
1. 定义一个print_lol函数来控制列表的缩进和写入位置 import sys """this is a new fuction, which work for a ...
- [vim]VIM快捷键整理
转自:http://blog.csdn.net/ceven2010/article/details/7406341#comments 一.移动光标 1.左移h.右移l.下移j.上移k 2.向下翻页ct ...
- hive查询语句
一. 为什么hive是数据仓库 hive局限于hdfs, 不能进行记录级别的增删改 hive底层的mapreduce启动耗时很长, 无法做到传统数据库的秒查, 只适合离线分析 hive不支持事务, 无 ...