당신은 거리의 집을 털려는 전문 강도입니다. 각 집에는 일정 금액의 돈이 숨겨져 있으며, 각각의 집에서 물건을 강탈하는 것을 막는 유일한 제약은 인접한 집에 보안 시스템이 연결되어 있고 같은 밤에 인접한 두 집에 침입한 경우 자동으로 경찰에 신고된다는 것입니다.
각 집의 돈을 나타내는 정수 배열 숫자가 주어지면, 오늘 밤 경찰에 신고하지 않고 도둑질할 수 있는 최대 돈을 반환하세요.
예 1:
입력: 숫자 = [1,2,3,1]
출력: 4
설명: 1번 집(돈 = 1)을 털고 3번 집(돈 = 3)을 털었습니다.
도둑질할 수 있는 총 금액 = 1 + 3 = 4.
예시 2:
입력: 숫자 = [2,7,9,3,1]
출력: 12
설명: 도둑집 1(돈 = 2), 도둑집 3(돈 = 9), 도둑집 5(돈 = 1).
도둑질할 수 있는 총 금액 = 2 + 9 + 1 = 12.
제약사항:
1 <= nums.length <= 100
0
원본페이지
public int rob(int[] nums) { int[] dp = new int[nums.length+1]; dp[1] = nums[0]; for(int i=2; i<dp.length; i++){ dp[i] = Math.max(dp[i-2]+nums[i-1], dp[i-1]); } // System.out.println(Arrays.toString(dp)); return dp[dp.length-1]; }
위 내용은 LeetCode Day동적 프로그래밍의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!