-
198 打家劫舍
求数组中不相邻的数的最大和,要求:数组元素全为正整数
例子:
[1,2,3,1]
结果:
1+3 = 4
- 动态规划:
分析:设f(x) 为前x项的最大和,Ax为第x个数
可得:f(1) = A1 f(2) = max(A1,A2) f(3) = max(f(1)+A3,f(2))
求出公式:f(n) = max(f(n-2)+An,f(n-1))
QC代码:
public int rob(int[] num) {
int prevMax = 0;
int currMax = 0;
for (int x : num) {
int temp = currMax;
currMax = Math.max(prevMax + x, currMax);
prevMax = temp;
}
return currMax;
}
给定一个非负整数数组 A,返回一个数组,在该数组中, A 的所有偶数元素之后跟着所有奇数元素。
public int[] SortArrayByParity(int[] arr) {