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.总体思路
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
上一篇: php移位运算、移位操作学习笔记