阿里笔试3月25日第一题

public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                int N;
                N = sc.nextInt();
                int res = Integer.MAX_VALUE;
                int[][] arr = new int[3][N];
                int[][] dp = new int[3][2];
                for (int i = 0; i < 3; i++) {
                    for (int j = 0; j < N; j++) {
                        arr[i][j] = sc.nextInt();
                    }
                }
                for (int i = 0; i < 3; i++) {
                    Arrays.fill(dp[i],Integer.MAX_VALUE);
                    dp[i][0] = 0;
                }
                for (int j = 1; j < N; j++) {
                    for (int i = 0; i < 3; i++) {
                        dp[i][j%2] = Math.min(dp[i][j%2],Math.abs(arr[i][j] - arr[0][j-1])  + dp[0][(j+1)%2]);
                        dp[i][j%2] = Math.min(dp[i][j%2],Math.abs(arr[i][j] - arr[1][j-1])  + dp[1][(j+1)%2]);
                        dp[i][j%2] = Math.min(dp[i][j%2],Math.abs(arr[i][j] - arr[2][j-1])  + dp[2][(j+1)%2]);
                    }
                    dp[0][(j+1)%2] = Integer.MAX_VALUE;
                    dp[1][(j+1)%2] = Integer.MAX_VALUE;
                    dp[2][(j+1)%2] = Integer.MAX_VALUE;
                }
                for (int i = 0; i < 3; i++) {
                    res = Math.min(res,dp[i][(N+1)%2]);
                }
                System.out.println(res);

            }

        }

#阿里巴巴##笔试题目#
全部评论
借个楼,题目一的分析和代码,题目二的分析和部分代码可以看我的博客https://blog.csdn.net/m0_38065572/article/details/105101287
1 回复 分享
发布于 2020-03-25 19:26

相关推荐

求面试求offer啊啊啊啊:把华北改为华南再试一试,应该就没啥问题了。改完可能都不用投,别人主动联系了。
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

更多
牛客网
牛客企业服务