2022-3-13 剑指offer day31
题1:
JZ16 数值的整数次方
描述
实现函数 double Power(double base, int exponent),求base的exponent次方。
注意:
1.保证base和exponent不同时为0。
2.不得使用库函数,同时不需要考虑大数问题
3.有特殊判题,不用考虑小数点后面0的位数。
数据范围: |base| \le 100 \∣base∣≤100 , |exponent| \le 100 \∣exponent∣≤100 ,保证最终结果一定满足 |val| \le 10^4 \∣val∣≤104
进阶:空间复杂度 O(1)\O(1) ,时间复杂度 O(n)\O(n)
进阶:空间复杂度 O(1)\O(1) ,时间复杂度 O(n)\O(n)
1 public class Solution { 2 public double Power(double base, int exponent) { 3 if (exponent<0) { 4 base=1/base; 5 exponent=-exponent; 6 } 7 double ans=1.0; 8 for (int i=0;i<exponent;i++){ 9 ans*=base; 10 } 11 return ans; 12 13 } 14 }
思路:负指数转化为正指数,暴力计算。
题2:
JZ56 数组中只出现一次的两个数字
描述
一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
数据范围:数组长度 2\le n \le 10002≤n≤1000,数组中每个数的大小 0 < val \le 10000000<val≤1000000
要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)
要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)
提示:输出时按非降序排列。
1 import java.util.*; 2 3 4 public class Solution { 5 /** 6 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 7 * 8 * 9 * @param array int整型一维数组 10 * @return int整型一维数组 11 */ 12 public int[] FindNumsAppearOnce (int[] array) { 13 // write code here 14 int x=0; 15 for (int i:array){ 16 x^=i; 17 } 18 // x为两个数异或的值 19 //根据异味为为1的位置分组,相同的数会分到一组,这两个不同的数会分到不同的组 20 int divide=1; 21 while ((x÷)==0) { 22 divide<<=1; 23 } 24 int a=0,b=0; 25 for (int t:array) { 26 if ((t÷)==0) { 27 a^=t; 28 }else b^=t; 29 } 30 if (a>=b) return new int[]{b,a}; 31 return new int[]{a,b}; 32 } 33 }
思路:一个不同的数字用异或,两个数字根据不同位为1的分组,再异或 ,分别求出来。
浙公网安备 33010602011771号