算法题一
定义数组并存储一些女朋友对象,利用Arrays中的sort方法进行排序
要求1:属性有姓名、年龄、身高。
要求2:按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序(姓名中不要有中文或特殊字符)
public static void main(String[] args) {
Demo gf1 = new Demo("one", 18, 172);
Demo gf2 = new Demo("two", 18, 165);
Demo gf3 = new Demo("three", 20, 189);
Demo gf4 = new Demo("four", 22, 172);
Demo[] arr = {gf1, gf2, gf3, gf4};
Arrays.sort(arr, ((o1, o2) -> {
double temp = o1.getAge() - o2.getAge();
temp = temp == 0 ? o1.getAge() - o2.getAge() : temp;
temp = temp == 0 ? o1.getHeight() - o2.getHeight() : temp;
temp = temp == 0 ? o1.getName().compareTo(o2.getName()) : temp;
if (temp > 0) {
return 1;
} else if (temp < 0) {
return -1;
} else {
return 0;
}
}));
System.out.println(Arrays.toString(arr));
}
算法题二
有一个很有名的数学逻辑叫做不死神兔问题,有一对兔子,从出生后第三个月起,每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第十二个月的兔子对数为多少?
public static void main(String[] args) {
int[] arr = new int[12];
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i < 12; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
System.out.println(arr[11]);
}
算法题三
有一堆桃子,猴子第一天吃了其中的一半,并多吃了一个,以后每天猴子都吃当前剩下来的一半,并多吃一个,第十天的时候,发现只剩下一个桃子了,请问,最初总共多少个?
public static void main(String[] args) {
int sum = 0;
int day = 1;
int count = 0;
for (int i = 0; i < 9; i++) {
day = (day + 1) * 2;
sum = day;
}
System.out.println(sum);
}
算法题四
可爱的小明特别喜欢爬楼梯,他有的 时候一次爬一个台阶,有的时候一次爬两个台阶,如果这个楼梯有100个台阶,小明一共有多少种爬法?
public static void main(String[] args) {
System.out.println(getCount(20));
}
public static int getCount(int n) {
if (n == 1) {
return 1;
}
if (n == 2) {
return 2;
}
return getCount(n - 1) + getCount(n - 2);
}
Tips
以上学习内容均来自B站黑马程序员