目录
1.二进制求和
给你两个二进制字符串 a
和 b
,以二进制字符串的形式返回它们的和。
示例 1:
输入:a = "11", b = "1" 输出:"100"
示例 2:
输入:a = "1010", b = "1011" 输出:"10101"
思路:
先将二进制a,b用Integer.parseInt()方法转换为十进制,相加得到和,将和通过Integer.toString()方法转换为二进制输出。
代码:
class Solution {
public String addBinary(String a, String b) {
int x=Integer.parseInt(a,2);//将二进制转换为十进制,相加求和
int y=Integer.parseInt(b,2);
int z=x+y; //将求得十进制转换为二进制
String n=Integer.toString(z,2);
return n;
}
}
结果:
2.极大极小游戏
给你一个下标从 0 开始的整数数组 nums
,其长度是 2
的幂。
对 nums
执行下述算法:
- 设
n
等于nums
的长度,如果n == 1
,终止 算法过程。否则,创建 一个新的整数数组newNums
,新数组长度为n / 2
,下标从 0 开始。 - 对于满足
0 <= i < n / 2
的每个 偶数 下标i
,将newNums[i]
赋值 为min(nums[2 * i], nums[2 * i + 1])
。 - 对于满足
0 <= i < n / 2
的每个 奇数 下标i
,将newNums[i]
赋值 为max(nums[2 * i], nums[2 * i + 1])
。 - 用
newNums
替换nums
。 - 从步骤 1 开始 重复 整个过程。
执行算法后,返回 nums
中剩下的那个数字。
示例 1:
代码:
class Solution {
public int minMaxGame(int[] nums) {
int n=nums.length;
if(n==1){
return nums[0];
}
int[] newNums=new int[n/2];
for(int i=0;i<n/2;i++){
if(i%2==0){
newNums[i]=Math.min(nums[i*2],nums[2*i+1]);
}
else{
newNums[i]=Math.max(nums[2 * i],nums[2 * i + 1]);
}
//nums=Arrays.toString(newNums.clone());
//nums[i]=newNums[i];
}
return minMaxGame(newNums);
}
}
结果:
3.星期计算
已知今天是星期六,请问 20的22次幂天后是星期几?
注意用数字 1 到 7表示星期一到星期日。
所用知识点:
Math.pow(底数x,指数y)
代码:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
long a=(long)(Math.pow(20,22)%7);
System.out.println(a+6);
scan.close();
}
}
结果: