2020年4月2日华为消费者BG部门Android安卓第一次面试经验(一面,面经,编程代码题)

一、问题背景

博主于2020年4月7日参加了腾讯Android安卓第一次面试,以下为华为面试官当场让博主在15分钟内必须实现的编程代码题目。

二、2020年4月2日华为消费者BG部门Android安卓第一次面试

1.手撕编程代码原题

以下为华为面试官当场让博主在15分钟内必须实现的编程代码题目:

打家劫舍(LeetCode 198.House Robber)
在一条直线上,有n个房屋,每个房屋中有数量不等的财宝,有一个盗贼希望从房屋中盗窃财宝,由于房屋中有报警器,如果同时从相邻的两个房屋中盗取财宝就会触发报警器。问在不触发报警器的前提下,最多可获取多少财宝?


例如房间财宝数目为:

[5,2,6,3,1,7]

则程序应当输出最大财宝数:

18

12.总体思路

2020年4月2日华为消费者BG部门Android安卓第一次面试经验(一面,面经,编程代码题)_第1张图片
2020年4月2日华为消费者BG部门Android安卓第一次面试经验(一面,面经,编程代码题)_第2张图片

3.Java代码实现

public class HouseRobber {
    public static void main(String[] args) {
        int[] treasureArray={5,2,6,3,1,7};
        int[] dp=new int[treasureArray.length];
        //确定边界状态值:前1、2个房间的最优解
        dp[0]=5;
        dp[1]=2;
        for (int i = 2; i < treasureArray.length; i++) {
            dp[i]=Math.max(dp[i-1],dp[i-2]+treasureArray[i]);
        }
        System.out.print(dp[dp.length-1]);
    }
}

本文参考文献:
[1]动态规划问题(一)
[2]动态规划类题目常规思路—Leetcode-thinking_record13

你可能感兴趣的:(求职面试)