欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-25 19:13:10
...

一、问题背景

博主于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安卓第一次面试经验(一面,面经,编程代码题)
2020年4月2日华为消费者BG部门Android安卓第一次面试经验(一面,面经,编程代码题)

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

相关标签: 求职面试