考试平台: 牛客 考试时间: 2023-10-09 (120 分钟) 考试题型: 选择题 + 2道编程题(核心编程模式) 投递岗位: Java 开发 P1 在一年一度的芭莎明星慈善夜上,组织者邀请了一众国际知名的明星参加。为了能够筹得更多的善款,组织者特地安排了一场名为”凝聚爱心,美育未来”的活动。 每位明星都愿意为慈善事业贡献一定的善款,捐赠金额各不相同。然而,由于一些私人恩怨或者竞争关系,一些明星不愿意与他们不喜欢的明星一起捐款。为了避免尴尬的情况发生,如果明星i捐款,那么他旁边的两位明星i-1 和+1就会拒绝捐款。 由于晚会的座位是围成一个圆圈的,因此第一位明星和最后一位明星会坐在一起即,如果第一位明星捐款,最后一位明星会拒绝捐款:反之亦然 活动组织者希望能够筹集到最大限度的善款,因此他们需要制定一个策略,来决定哪些明星应该捐款。他们聘请了你,作为数据科学家和算法专家,来帮助他们解决这个问题 示例1 输入:[10, 3,2, 5,7,8,11]输出:[23]说明:捐款的明星是第1位、第4位和第6位 示例2 输入:[10, 3, 2, 5, 7, 8]输出:19说明:捐款的明星是第1位、第3位和第5位 备注 输入: 一个整数数组,包含n个元素,元素值为X。其中 . 输出: 最大限度的善款值 题解 动态规划, LCR 090. 打家劫舍 II 原题 /** * P1 * @author code5bug (同v) */class Solution { public int maximizeDonations(int[] d) { int n = d.length; if (n == 0) return 0; else if (n == 1) return d[0]; // 不选最后一个元素时 int[] arr1 = Arrays.copyOfRange(d, 0, n - 1); // 不选第一个元素时 int[] arr2 = Arrays.copyOfRange(d