面试16题:

题目:数值的整数次方

题:实现函数double Power(double base, int exponent),求base的exponent次方、不得使用库函数,同时不需要考虑大数问题。

解题思路:主题考虑底数为0.0,指数为负数的情况,此时可以利用全局变量指出g_InvalidInput为True,同时返回0.0

解题代码:

# -*- coding:utf-8 -*-
class Solution:g_InvalidInput = Falsedef Power(self, base, exponent):# write code hereif base==0.0 and exponent<0:g_InvalidInput=Truereturn 0.0if exponent>=0:return self.PowerWithUnsignedExponent(base,exponent)return 1.0/self.PowerWithUnsignedExponent(base,-exponent)def PowerWithUnsignedExponent(self,base,exponent):result=1.0for i in range(exponent):result *= basereturn result

解题优化:上述代码PowerWithUnsignedExponent部分还可以优化如下:使用平方的一半*平方的一半来计算平方,此时时间复杂度为O(logn)。同时涉及除以2用右移运算符代替,判断奇偶数时用位与运算代替求余运算符,这样效率高很多。

解题代码:

# -*- coding:utf-8 -*-
class Solution:def __init__(self):self.g_InvalidInput=Falsedef Power(self, base, exponent):# write code hereif base==0.0 and exponent<0:self.g_InvalidInput=Truereturn 0.0if exponent>=0:return self.PowerWithUnsignedExponent2(base,exponent)return 1.0/self.PowerWithUnsignedExponent2(base,-exponent)def PowerWithUnsignedExponent2(self, base, exponent):if exponent==0:return 1if exponent==1:return baseres=self.PowerWithUnsignedExponent2(base,exponent>>1)res *= resif exponent & 0x1==1:res*=basereturn res

转载于:https://www.cnblogs.com/yanmk/p/9194769.html

剑指offer 面试16题相关推荐

  1. 剑指offer 面试32题

    面试32题: 题目:从上到下打印二叉树 题:不分行从上到下打印二叉树 解题代码: # -*- coding:utf-8 -*- # class TreeNode: # def __init__(sel ...

  2. 剑指offer 面试3题

    面试3题: 题:数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复 ...

  3. 剑指offer 面试36题

    面试36题: 题:二叉搜索树与双向链表 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 解题思路一:由于输入的一个二叉搜索树, ...

  4. 剑指offer 面试31题

    面试31题: 题目:栈的压入.弹出元素 题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...

  5. 剑指Offer面试算法题Java实现

    面试题3 /*** 二维数组的查找* @author acer**/ public class _03FindInPartiallySortedMatrix {public static boolea ...

  6. 剑指offer 面试64题

    题目:64题 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 解法一:利用Python特性 1 # -* ...

  7. 剑指offer第41题 和为s的两个数

    剑指offer第41题 和为s的两个数 #include<iostream> using namespace std;bool sumk(int*list,int length,int*n ...

  8. 挑战一天(12h)刷完《剑指offer》67题

    提前说明,挑战的人不是我. 大家周末好,我是爱上 B 站的小吴,最近一段时间我在网站 AlgoMooc 录制剑指 Offer 的视频,同时上传了一部分到 B 站,基于推荐算法,B 站疯狂的给我推送如何 ...

  9. 《剑指offer》刷题总结

    从三月初开始刷剑指offer上面的题,到现在花了近二十天的时间终于刷完了.应该说,掌握上面的技巧应付一些公司面试题和小公司的笔试题是完全没有问题的.之前参加一个公司笔试,算法题就有一题是剑指offer ...

最新文章

  1. 【转】Unity+单例模式的依赖注入
  2. Python中 __init__.py的作用
  3. php printf 0.2f,php printf()
  4. python为什么忽然火了_为什么Python突然就火了起来了呢?
  5. VC 创建NT服务程序
  6. 【LeetCode笔记】162. 寻找峰值(Java、二分、偏数学)
  7. bz2解压命令_tar 命令
  8. django调用python脚本返回_讲解django rest framework 自定义返回方法
  9. 数据中心操作人员:艰难地在针对VM构建的基础设施上运行容器
  10. IOS开发ui篇-UITableviewcell的性能问题
  11. IT项目开发管理与绩效考核
  12. 2019第七届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)
  13. navicat 1146错误
  14. 区块链还有多长的路要走
  15. Intellij Idea插件开发点滴记录
  16. 22 mysql有那些”饮鸩止渴”提高性能的方法?
  17. 关于SIM800C 2G通信模块的电路设计上需要注意的地方
  18. LeetCode 热题 HOT 100 -------31. 下一个排列(数组,数学问题)128. 最长连续序列(数组) 11. 盛最多水的容器(数组) 621. 任务调度器 (数组)
  19. 新路由3 H大老毛子,2月20日padavan固件
  20. 解决Could not resolve XXX

热门文章

  1. 如何用python创建一个下载网站-用Python下载一个网页保存为本地的HTML文件实例...
  2. python基础第三章选择结构答案-零基础学Python--------第3章 流程控制语句
  3. python编程入门经典教程-2020年5个经典python编程入门视频教程推荐学习
  4. python多线程爬虫实例-Python多线程在爬虫中的应用
  5. python语言是谁发明的咋读-Python简史
  6. python关闭读写的所有的文件-Python读写txt文本文件的操作方法全解析
  7. python.freelycode.com-Python字节码介绍
  8. python哪一版好用-学习 Python 用哪本书好?
  9. python更新pip失败-解决Python pip 自动更新升级失败的问题
  10. python读取文件多行内容-使用python读取.text文件特定行的数据方法