首页 > 9.2奇安信算法笔试
头像
最爱数学的人
编辑于 2020-09-06 09:38
+ 关注

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;
    }
}


全部评论

(10) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐