前两天面试的一道题,记录一下:

Guava 中的实现:

/*** Returns {@code b} to the {@code k}th power. Even if the result overflows, it will be equal to* {@code BigInteger.valueOf(b).pow(k).intValue()}. This implementation runs in {@code O(log k)}* time.** <p>Compare {@link #checkedPow}, which throws an {@link ArithmeticException} upon overflow.** @throws IllegalArgumentException if {@code k < 0}*/@GwtIncompatible // failing testspublic static int pow(int b, int k) {checkNonNegative("exponent", k); // 保证 k 为非负数switch (b) {case 0:return (k == 0) ? 1 : 0;case 1:return 1;case (-1):return ((k & 1) == 0) ? 1 : -1;case 2:return (k < Integer.SIZE) ? (1 << k) : 0;case (-2):if (k < Integer.SIZE) {return ((k & 1) == 0) ? (1 << k) : -(1 << k);} else {return 0;}default:// continue below to handle the general case}for (int accum = 1; ; k >>= 1) {switch (k) {case 0:return accum;case 1:return b * accum;default:accum *= ((k & 1) == 0) ? 1 : b;b *= b;}}}

网友实现方案,参见: 点击打开链接

public class Power {public static double pow(double a, int b){//check the validity of a and bif(a == 0 && b == 0)return Integer.MIN_VALUE;if(a == 0)return 0;if(b == 0)return 1;if(b == 1)return a;boolean aMinus = a < 0? true: false;boolean bMinus = b < 0? true : false;int bAbs = Math.abs(b);double aAbs = Math.abs(a);//check if b is odddouble tempAnswer;if( (b & 1) != 0){tempAnswer = pow(aAbs, bAbs - 1) * aAbs;}else{tempAnswer = pow(aAbs * aAbs, bAbs / 2);}if(bMinus)tempAnswer = 1.0 / tempAnswer;if(aMinus && (b&1)!= 0)tempAnswer *= -1;return tempAnswer;}public static void main(String[] args){System.out.println(Power.pow(0,0));System.out.println(Power.pow(3,0));System.out.println(Power.pow(3,-1));System.out.println(Power.pow(3,100));return ;}
}

关键还是算法

面试篇:Java 实现 x 的 y 次方相关推荐

  1. 合辑 | 面试必备!18篇Java面试疑难点详解

    简介: 就目前就业环境来看,学习Java软件开发是不会过时的,据各大招聘网站统计,Java程序员的需求10年来一直跃居首位.本节小编汇总了18篇Java面试相关的疑难点解析,知识点+理论详解帮助你稳扎 ...

  2. 【面试篇】Java自带的线上问题排查工具

    [面试篇]Java自带的线上问题排查工具 (1)jps命令 来查看虚拟机进程状态工具 jps是Java提供的一个显示当前所有Java进程的pid的命令,适合查看当前Java进程的一些简单情况.类似于p ...

  3. 【面试篇】ConcurrentHashMap1.7和1.8详解对比

    ConcurrentHashMap1.7和1.8详解对比 [面试篇]数据结构-哈希表 [面试篇]HashMap常见面试题目 [面试篇]HashMap1.7和HashMap1.8的详细区别对比 [面试篇 ...

  4. 计算机网络 - 面试篇

    计算机网络 - 面试篇 综合 OSI七层模型 讲一下网络五层模型,每一层的职责? 在浏览器地址栏输入一个URL后回车,执行的全部过程 tcp.udp.http.https等常用协议 Cookie 和 ...

  5. 阿里Java面试之-Java高级工程师

    哈喽,大家好呀,前段时间我去阿里面试高级Java工程师,我这次把这些问道的题目都列举出来了! 文章末尾我还为大家准备了一份福利哦! JVM · 请介绍一下JVM内存模型??用过什么垃圾回收器?都说说呗 ...

  6. java负数右移_收入囊中篇---Java程序基础(二)

    前言: 本篇是接着上一篇更新的,如果没有阅读上一篇的话,可以查阅或回顾一下. 1.收入囊中篇---Java基础必备知识(一) 2.收入囊中篇---Java程序基础(二) Java程序基础目录 1.Ja ...

  7. 面试:Java 泛型背后的原理是什么?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 的一幕 来源 | https://www.ji ...

  8. Nginx面试!java语言程序设计第四版,你还看不懂吗?

    第5章 持久化 持久化,Redis的持久化功能有效避免因进程退出造成的数据丢失问题,本章首先介绍RDB和AOF两种持久化配置和运行流程,其次对常见的持久化问题进行定位和优化,最后结合Redis常见的单 ...

  9. java面试加分_不只是给面试加分 -- Java WeakReference的理解与使用

    前言: 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak refere ...

最新文章

  1. java 大数据处理类 BigDecimal 解析
  2. iOS开发--线程通信
  3. 吴恩达作业7:梯度下降优化算法
  4. Java Hashtable keySet()方法与示例
  5. php二进制加密_怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
  6. 【推荐】 RAC 性能优化全攻略与经典案例剖析
  7. HDU-1253-胜利大逃亡(bfs)
  8. 嵌入式系统--ARM微处理器概述
  9. 关于 数据库 my_slq的 安装及其卸载
  10. 【后缀数组】洛谷P3809模板题
  11. 快播CEO认罪_成人网站对技术的要求有多高?
  12. elementui二维表动态渲染
  13. On the Sense of Humor [附译文]
  14. 逻辑回归分类——信用卡诈骗检测!这才是干货!
  15. cocos2d-x太空大战小游戏
  16. 怎样开发微信小程序(最初的页面)
  17. Java可变参数的基本使用
  18. WeRateDog---分析推特数据
  19. JS undefined报错
  20. 最新Axure RP 9.0.0.3675 授权码 license

热门文章

  1. aop的jdk动态代理和cglib动态代理
  2. Telegram计划于3月推出区块链平台
  3. 移动布局+百分比布局+em+rem+动态设置根元素fontSize
  4. 变频电源面板上的英文按钮和显示都是什么意思
  5. c4d如何把文字贴在物体表面_c4d材质贴图想给材质加字(c4d 材质贴图怎么贴?)...
  6. 银行借记卡收费项目一览
  7. 2011 款奔驰 G55 AMG 车刮水器工作异常
  8. iPad上固定横屏设置
  9. php视频上传超简单
  10. 佳能R5相机断电0KB字节DAT视频文件无法打开播放怎么数据恢复MP4