[剑指offer][JAVA]面试题第[16]题[数值的整数次方][位运算][二分法]

【问题描述】[中等]

实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。示例 1:输入: 2.00000, 10
输出: 1024.00000
示例 2:输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

【解答思路】

在这里插入图片描述
在这里插入图片描述
时间复杂度:O(logN) 空间复杂度:O(1)

Java 代码中 int32 变量 n \in [-2147483648, 2147483647]n∈[−2147483648,2147483647] ,因此当 n = -2147483648n=−2147483648 时执行 n = -nn=−n 会因越界而赋值出错。解决方法是先将 nn 存入 long 变量 bb ,后面用 bb 操作即可。

class Solution {public double myPow(double x, int n) {if(x == 0) return 0;long b = n;double res = 1.0;if(b < 0) {x = 1 / x;b = -b;}while(b > 0) {if((b & 1) == 1) res *= x;x *= x;b >>= 1;}return res;}
}

【总结】

1.快速幂经典题目 掌握其负数巧妙转换 防止溢出
2. 位运算

异或运算(^)
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
5 ^ 1 = 0101 ^ 0001 = 0100 = 4
5 ^ 3 = 0101 ^ 0011 = 0110 = 6
用法
翻转指定位 对应位异或1
X=10101110,使X低4位翻转,用X ^0000 1111 = 1010 0001即可得到。
2.两个数是否相等 ==0
5 ^ 5 = 0101 ^ 0101 = 0000 = 0

与运算(&)
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0
5 & 1 = 0101 & 0001 = 0001 = 1
5 & 2 = 0101 & 0010 = 0000 = 0
用法
取指定位 对应位与1
设X=10101110,
取X的低4位,用 X & 0000 1111 = 00001110 即可得到;

或运算(|)
运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :参加运算的两个对象只要有一个为1,其值为1
用法:
指定位置置1 对应位或1
将X=10100000的低4位置1 ,用X | 0000 1111 = 1010 1111即可得到

取反运算(~)
运算规则:~1=0; ~0=1;
即:对一个二进制数按位取反,即将0变1,1变0

带符号左移运算(<<)
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2(右边补0)
3 << 1 = 0011 <<1 = 0110 = 6
带符号右移运算(>>)
正数操作数每右移一位,相当于该数除以2
(左补0 or 补1得看被移数是正还是负)
5 >> 1 = 0101 >> 1 = 0010 = 2
5 >> 2 = 0101 >> 2 = 0001 = 1
-14 >> 2 = 11110010 >> 2 = 11111100 = -4
无符号右移运算(>>>)
5 >>> 1 = 0101 >>> 1 = 0010 = 2
-14 >>>2 =11111111 11111111 1111111111110010 >>>2 = 00111111 11111111 1111111111111100 = 1073741820
移位总结

  • 正数的左移与右移,负数的无符号右移,就是相应的补码移位所得,在高位补0即可。
  • 负数的右移,就是补码高位补1,然后按位取反加1即可。
3. 位运算 判相等异或^ 取位与&1 置位 或|1

转载链接:https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/solution/mian-shi-ti-16-shu-zhi-de-zheng-shu-ci-fang-kuai-s/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425625.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

玩转oracle 11g(50):rman备份脚本

D盘新建一个文件夹backup_file&#xff0c;里面新建一个文件夹logs 一个文件叫auto_full_one_rman.bat 修改这三处 set oracle_sidwiicare rman cmdfile D:/backup_file/level_full_one_rman.rman msglog D:/backup_file/logs/full_one_%date:~0,4%%date:~5,2%%date:~8,2%…

Java学习笔记7-2——注解与反射

目录理解 Class 类并获取 Class 实例Class类获取 Class 类的实例哪些类型可以有Class对象所有类型的Class对象从内存角度分析类加载【重点】类加载的过程什么时候会发生类的初始化类加载器获取运行时类的完整结构有了Class对象能做什么性能对比分析通过反射操作泛型通过反射操作…

python实战学习之matplotlib绘图续

学习完matplotlib绘图可以设置的属性&#xff0c;还需要学习一下除了折线图以外其他类型的图如直方图&#xff0c;条形图&#xff0c;散点图等&#xff0c;matplotlib还支持更多的图&#xff0c;具体细节可以参考官方文档&#xff1a;https://matplotlib.org/gallery/index.htm…

Spring MVC面试题

目录概述什么是Spring MVC&#xff1f;简单介绍下你对Spring MVC的理解&#xff1f;Spring MVC的优点核心组件Spring MVC的主要组件&#xff1f;什么是DispatcherServlet什么是Spring MVC框架的控制器&#xff1f;Spring MVC的控制器是不是单例模式,如果是,有什么问题,怎么解决…

5.应用服务器简介

应用服务器简介 Tomcat

NOI-砝码称重v2 多重背包 生成函数

描述 设有1g、2g、3g、5g、10g、20g的砝码各若干枚&#xff08;其总重<100,000&#xff09;&#xff0c;要求&#xff1a;计算用这些砝码能称出的不同重量的个数&#xff0c;但不包括一个砝码也不用的情况。 输入 一行&#xff0c;包括六个正整数a1,a2,a3,a4,a5,a6&#x…

数字图像与数字图像处理

数字图像与数字图像处理 1、基本概念 &#xff08;1&#xff09;图&#xff1a;是物体反射或者透射电磁波的分布。 &#xff08;2&#xff09;像&#xff1a;是人的视觉系统对接收的图信息在大脑 中形成的印象。 &#xff08;3&#xff09;图像(image)&#xff1a;是“图”和…

[剑指offer][JAVA]面试题第[46]题[把数字翻译成字符串][递归][逆推]

【问题描述】[中等] 给定一个数字&#xff0c;我们按照如下规则把它翻译为字符串&#xff1a;0 翻译成 “a” &#xff0c;1 翻译成 “b”&#xff0c;……&#xff0c;11 翻译成 “l”&#xff0c;……&#xff0c;25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函…

前端基础1——HTML5

目录初识HTML网页基本标签列表表格视频和音频页面结构内联框架表单语法初识HTML Hyper Text Markup Language&#xff08;超文本标记语言&#xff09; <!--DOCTYPE&#xff1a;告诉浏览器使用什么规范&#xff08;默认是html&#xff09;--> <!DOCTYPE html> <…

数字图像处理系统组成 及研究内容

数字图像处理系统组成 及研究内容 .数字图像处理系统的组成 基本图象处理系统的结构 图像输入设备 扫描仪分辨率与扫描图象的大小 分辨率&#xff1a;单位长度上采样的像素个数DPI(dot/inch) 图像输出设备 喷墨打印机 激光打印机 数字印刷机 .图像处理技术研究的内容 图…

[剑指offer][JAVA]面试题第[18]题[删除链表的节点]

【问题描述】[中等] 给定单向链表的头指针和一个要删除的节点的值&#xff0c;定义一个函数删除该节点。返回删除后的链表的头节点。注意&#xff1a;此题对比原题有改动示例 1:输入: head [4,5,1,9], val 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点&#xff0…

Python3 循环

L [Bart, Lisa, Adam] for i in L:print("这是for循环的" "输出 hello:" i.upper())i 0 while i < len(L):print("这是while 循环的输出 hello:" L[i])i i 1转载于:https://www.cnblogs.com/RHadoop-Hive/p/10432219.html

前端基础2——CSS3

目录什么是CSSCSS的导入方式选择器美化网页元素盒子模型浮动定位什么是CSS Cascading Style Sheet 层叠级联样式表 CSS&#xff1a;表现层&#xff08;美化网页&#xff09; 字体&#xff0c;颜色&#xff0c;边距&#xff0c;高宽&#xff0c;背景图片&#xff0c;网页定位&…

前端基础3-1——JavaScript

目录什么是JavaScript快速入门引入JavaScript数据类型和基本语法入门1.变量2.number3.字符串4.布尔值5.逻辑运算6.比较运算符7.浮点数8.数组9.对象10.流程控制11.Map和Set集合严格检查模式use strict函数定义函数变量的作用域方法什么是JavaScript 概述 JavaScript是一门世界上…

[剑指offer][JAVA]面试题第[17]题[打印从1到最大的n位整数][大整数][递归回溯]

【问题描述】[中等] 输入数字 n&#xff0c;按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3&#xff0c;则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n 1 输出: [1,2,3,4,5,6,7,8,9]说明&#xff1a;用返回一个整数列表来代替打印 n 为正整数【解答思路】…

数字图像处理技术的应 用领域

数字图像处理技术的应 用领域 图像处理技术的主要应用领域有&#xff1a; 生物医学、遥感技术、工业生产、军事技术、 通信技术、侦缉破案、气象预报、宇宙探索、考 古等&#xff0c;已经遍布国民经济的各个领域。 发展历史 20世纪20年代&#xff1a;报纸业 Bartlane电缆图…

前端基础3-2——JavaScript

目录内部对象DateJSONAJAX面向对象编程操作BOM对象&#xff08;重点&#xff09;操作DOM对象&#xff08;重点&#xff09;操作表单formjQuery如何巩固前端基础内部对象 标准对象 Date 基本使用 转换 JSON JSON是什么 在javascript中&#xff0c;一切皆为对象&#…

文件和结构体

LITTLESUN本来是在学队列啊&#xff0c;在手动模拟队列的地方发现了结构体这个小怪&#xff0c;为了能赶紧打队列大BOSS就赶紧跑过来填下文件和结构体的坑鸭&#xff01; 转载于:https://www.cnblogs.com/LITTLESUNwl/p/10435877.html

电磁波谱与可见光谱

电磁波谱与可见光谱 电磁辐射波 在实际的图像处理应用中&#xff0c;最主要的图像来源于电磁 辐射成像。 电磁辐射波包括无线电波、微波、红外线、可见光、 紫外线、X射线、γ射线。 电磁辐射波的波谱范围很广&#xff0c;波长最长的是无线电波 为3102m&#xff0c;其波长是…

[Leedcode][JAVA][第9题][回文数][数学法]

【问题描述】[简单] 判断一个整数是否是回文数。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。示例 1:输入: 121 输出: true 示例 2:输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。…