Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func rob(_ nums: [Int]) -> Int {
- guard nums.count != 0 else{ return 0}
- guard nums.count > 1 else {return nums[0]}
- var dp1 = [Int](repeating: 0, count: nums.count)
- var dp2 = [Int](repeating: 0, count: nums.count)
- for i in 0 ..< nums.count - 1{
- if i == 0 {
- dp1[i] = nums[i]
- }else if i == 1 {
- dp1[i] = max(dp1[i-1] , nums[i])
- }else{
- dp1[i] = max(dp1[i-1] , nums[i] + dp1[i-2])
- }
- }
- for i in 1 ..< nums.count{
- if i == 1 {
- dp2[i] = nums[i]
- }else if i == 2 {
- dp2[i] = max(dp2[i-1] , nums[i])
- }else{
- dp2[i] = max(dp2[i-1] , nums[i] + dp2[i-2])
- }
- }
- return max(dp1[nums.count - 2], dp2[nums.count - 1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement