力扣算法题:打家劫舍 -- 多语言实现

打印 上一主题 下一主题

主题 968|帖子 968|积分 2904

这题目应该是翻译有题目或者我的理解有题目。。。按照题目给的不相邻的盗取逻辑运行正确,但是提交报错,如果使用全部进入但是拿最多钱的逻辑却正确了。。。
好家伙,挨家挨户走一遍不久触发报警了么?咋还正确了?
"如果两间相邻的房屋在同一晚上被小偷闯入,体系会自动报警。"这句话翻译明显有题目,应该是被小偷偷窃才会报警。
  1. func rob(nums []int) int {
  2.     if len(nums) == 0 {
  3.                 return 0
  4.         }
  5.         if len(nums) == 1 {
  6.                 return nums[0]
  7.         }
  8.         pre2 := nums[0]
  9.         pre1 := max(nums[0], nums[1])
  10.         for i := 2; i < len(nums); i++ {
  11.                 cur := max(pre1, pre2 + nums[i])
  12.                 pre2 = pre1
  13.                 pre1 = cur
  14.         }
  15.         return pre1
  16. }
复制代码
javascript:
  1. /**
  2. * @param {number[]} nums
  3. * @return {number}
  4. */
  5. var rob = function(nums) {
  6.     if (nums.length === 0) {
  7.         return 0;
  8.     }
  9.     if (nums.length === 1) {
  10.         return nums[0];
  11.     }
  12.     let maxMoney = nums[0];
  13.     let pre = Math.max(nums[0], nums[1]);
  14.     for(let i=2; i < nums.length; i++) {
  15.         let cur = Math.max(pre, maxMoney + nums[i])
  16.         maxMoney = pre
  17.         pre = cur
  18.     }
  19.     return pre
  20. };
复制代码
python:
  1. class Solution(object):
  2.     def rob(self, nums):
  3.         """
  4.         :type nums: List[int]
  5.         :rtype: int
  6.         """
  7.         if len(nums) == 0:
  8.             return 0
  9.         if len(nums) == 1:
  10.             return nums[0]
  11.         maxMoney = nums[0]
  12.         pre = max(maxMoney, nums[1])
  13.         for i in range(2, len(nums)):
  14.             cur = max(pre, maxMoney + nums[i])
  15.             maxMoney = pre
  16.             pre = cur
  17.         return pre
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

缠丝猫

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表