不断更新中…
第一题:两数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0.
ps: Interger.Max_Value =231 -1
Interger.Min_Value = -231 -1
public static int reverse(int x){
int rev=0;
while (x!=0){
if (rev<Integer.MIN_VALUE/10||rev>Integer.MAX_VALUE/10){
return 0;
}
int digit = x % 10;
x= x /10;
rev = rev *10 +rev;
}
return rev;
}
public static void main(String[] args) {
int re = test(6543);
System.out.println(re);
}
第二题:两数之和
方法一:普通解法o(n²)
public static int[] twoSum(int [] nums,int target){
int b []=new int[2];
for (int i = 0; i < nums.length-1; i++) {
for (int j = i+1; j < nums.length; j++) {
if (nums[i]+nums[j]==target){
b[0]=i;
b[1]=j;
}
}
}
return b;
}
方法二:HashMap方法 耗时较少
public static int[] twoSum(int [] nums,int target){
int indexs[] =new int[2];
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (map.containsKey(nums[i])){
indexs[0]=i;
indexs[1]=map.get(nums[i]);
return indexs;
}
map.put(target-nums[i],i);
}
return indexs;
}