9.2奇安信算法笔试
给两个小时 就出两道题
好了看你们都讨论题目 我贴一下自己的解法 一共两道编程 17分钟就出来了
第一题 走楼梯 坑点是输入0的时候也要输出0 中间盲猜很多特判 甚至数据类型改成了long 最后才猜到输入0的这个条件 所以代码比较长有很多多余的内容
ac 60->80->100
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] line = sc.nextLine().trim().split("\\s+");
if (line.length != 1) {
System.out.println(0);
return;
}
for (int i = 0; i < line[0].length(); i++) {
if (!Character.isDigit(line[0].charAt(i))) {
System.out.println(0);
return;
}
}
int n = Integer.parseInt(line[0]);
if (n < 0 || n >36) {
System.out.println(0);
return;
}
if (n == 0) {
System.out.println(0);
return;
}
long[] dp = new long[n+1];
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i < n+1; i++) {
dp[i] = dp[i-1] + dp[i-2];
}
System.out.println(dp[n]);
}
} 第二题 就是分糖果 题意改成扌斥迁户分房了 真的是极具社会主义特[色]
public class Solution {
/**
*
* @param person int整型一维数组
* @return int整型
*/
public int house (int[] person) {
// write code here
int n = person.length;
int[] houses = new int[n];
Arrays.fill(houses, 1);
for (int i = 1; i < n; i++) {
if (person[i] > person[i-1] && houses[i] <= houses[i-1]) {
houses[i] = houses[i-1]+1;
}
}
for (int i = n-2; i >= 0 ; i--) {
if (person[i] > person[i+1] && houses[i] <= houses[i+1]) {
houses[i] = houses[i+1]+1;
}
}
int sum = 0;
for (int i = 0; i < n; i++) {
sum += houses[i];
}
return sum;
}
} 
