题解 | #打家劫舍(二)#

打家劫舍(二)

https://www.nowcoder.com/practice/6a8b2ceb3f8f4e5891939d7d7cbbd2c4

import java.util.Scanner;

import java.util.List;
import java.util.ArrayList;
import java.lang.Math;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        List<Integer> nums = new ArrayList<>();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        while (in.hasNextInt()) { 
            nums.add(in.nextInt());
        }
        if (nums.size() == 1) {
            System.out.print(nums.get(0));
        }else{
            int size = nums.size();
            System.out.print(Math.max(grab(nums, 0, size-2), grab(nums, 1, size - 1)));
        }
    }

    public static int grab(List<Integer> nums, int l, int r) {
        int pre2 = 0, pre1 = 0;
        for (int i = 0; i < r - l + 1; i++) {
            int cur = Math.max(pre2 + nums.get(i + l), pre1);
            pre2 = pre1;
            pre1 = cur;
        }
        return pre1;
    }
}

打家劫舍二将第一个房子和最后一个房子连起来了,那就在打劫第一各房子和不打劫第一个房子打劫最后一个房子中选一个收益最大的

全部评论

相关推荐

黑皮白袜臭脚体育生:简历条例统一按使用了什么技术实现了什么功能解决了问题或提升了什么性能指标来写会好些,如使用布隆过滤器实现了判断短链接是否存在,大大提升了查询速度
点赞 评论 收藏
分享
nbdy:她的意思是,有的话就有,没有的话就没有
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务