• 1、线性DP 213. 打家劫舍 II


    https://leetcode-cn.com/problems/house-robber-ii/

    //rob 0, not rob n-1 || not rob 0,not rob n-1 ==>rob(0,nums.length-2,nums)
    //not rob 0,rob n-1 || not rob 0,not rob n-1;==>rob(1, nums.length-1, nums)
    func rob(nums []int) int {
        n := len(nums)
        if n == 0{
            return 0
        }
        if n == 1{
            return nums[0]
        }
        return MAX(help(nums,0,n-1),help(nums,1,n))
    }
    
    //由题意抢了第一家则不能抢最后一家;抢了最后一家就不能抢第一家。
    //抢了第一家的最大值就是在nums[:n-1)中抢的,抢了最后一家的最大值,就是在nums[1:]抢的
    func help(nums []int,begin,end int) int{
        curMax,preMax := 0,0
        for i:=begin;i<end;i++{
            tmp := curMax
            curMax = MAX(curMax,preMax+nums[i])
            preMax =  tmp
        }
        return curMax
    }
    
    func MAX(i,j int) int{
        if i<j{
            return j
        }else{
            return i
        }
    }
    

      

  • 相关阅读:
    csp-s模拟110
    csp-s模拟109
    留念
    csp-s 2019 游记
    HEOI2020
    CSP-S2019记
    堆积的$TIPS$
    低错复习
    倍增并查集
    4.26
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/12777532.html
Copyright © 2020-2023  润新知