zoukankan      html  css  js  c++  java
  • 213. 打家劫舍 II

     直接看代码吧

    class Solution {//和上一个打家劫舍差不多,唯一的区别是第一个和最后一个房子不能同时抢,所以比较[1,n-1]个房子的最大值,与[2,n]个房子的最大值
        public int rob(int[] nums) {//copyOfRange函数易忘,闭区间拷贝出一个新的数组
            if(nums.length==0) return 0;
            if(nums.length==1) return nums[0];
            return Math.max(getrob(Arrays.copyOfRange(nums,0,nums.length-1)),getrob(Arrays.copyOfRange(nums,1,nums.length)));
        }
        public int getrob(int[] nums)
        {
            if(nums.length==0)return 0;
           if(nums.length==1) return nums[0];
           if(nums.length==2) return nums[0]>nums[1]?nums[0]:nums[1];
           int []s=new int[nums.length];
           s[0]=nums[0];
           s[1]=nums[0]>nums[1]?nums[0]:nums[1];
           for(int i=2;i<nums.length;i++)
           {
               s[i]=Math.max(s[i-1],s[i-2]+nums[i]);//这里容易写错,+nums[i]
           }
           return s[nums.length-1];
        }
    }
    

      

  • 相关阅读:
    事务与锁的一些总结
    NYOJ 73
    NYOJ 456
    Sleep函数
    NYOJ 488(素数环)
    NYOJ 308
    NYOJ 27
    NYOJ 325
    NYOJ 138
    求两个或N个数的最大公约数(gcd)和最小公倍数(lcm)的较优算法
  • 原文地址:https://www.cnblogs.com/lzh1043060917/p/12970250.html
Copyright © 2011-2022 走看看