网站优化有哪些技巧,网站开发建设方案的主要内容包括,设计娱乐网站,营销方案餐饮【问题描述】[中等]
实现函数double Power(double base, int exponent)#xff0c;求base的exponent次方。不得使用库函数#xff0c;同时不需要考虑大数问题。示例 1:输入: 2.00000, 10
输出: 1024.00000
示例 2:输入: 2.00000, -2
输出: 0.25000
解释: 2-2 1/22 1/4 0.…【问题描述】[中等]
实现函数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^00 0^11 1^01 1^10 即参加运算的两个对象如果两个相应位为“异”值不同则该位结果为1否则为0。 5 ^ 1 0101 ^ 0001 0100 4 5 ^ 3 0101 ^ 0011 0110 6 用法 翻转指定位 对应位异或1 X10101110使X低4位翻转用X ^0000 1111 1010 0001即可得到。 2.两个数是否相等 0 5 ^ 5 0101 ^ 0101 0000 0
与运算 运算规则000; 010; 100; 111; 即两位同时为“1”结果才为“1”否则为0 5 1 0101 0001 0001 1 5 2 0101 0010 0000 0 用法 取指定位 对应位与1 设X10101110 取X的低4位用 X 0000 1111 00001110 即可得到
或运算| 运算规则0|00 0|11 1|01 1|11 即 参加运算的两个对象只要有一个为1其值为1 用法 指定位置置1 对应位或1 将X10100000的低4位置1 用X | 0000 1111 1010 1111即可得到
取反运算~ 运算规则~10 ~01 即对一个二进制数按位取反即将0变11变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/