给两个小时 就出两道题
好了看你们都讨论题目 我贴一下自己的解法 一共两道编程 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; } }
全部评论
(10) 回帖