当前位置: 首页 > 后端技术 > Python

力扣213,打房子和房子IIPython实现

时间:2023-03-25 21:33:03 Python

题目要求:思路:如果抢了第一个房子就抢不到最后一个房子,抢了最后一个房子就抢不到第一个房子,所以把nums分成两种情况,一部分是nums[:-1]和nums[1:],遍历这两个数组,然后比较最高的数额就可以到当前的房子。房子)和(不抢当前房子,可以抢之前的房子)即(当前房子的数量+之前房子抢的最高数量)和(到之前的,最大抢的数量)核心代码:pre1,cur1=0,0foriinnums[:-1]:pre1,cur1=cur1,max(pre1+i,cur1)pre2,cur2=0,0forjinnums[1:]:pre2,cur2=cur2,max(pre2+j,cur2)returnmax(cur1,cur2)完整代码:如果数组为空,则最大抢劫金额为0如果数组长度为1,则最大抢劫金额为被抢的是nums[0]class解决方法:defrob(self,nums:List[int])->int:ifnotnums:return0iflen(nums)==1:returnnums[0]pre1,cur1=0,0foriinnums[:-1]:pre1,cur1=cur1,max(pre1+i,cur1)pre2,cur2=0,0forjinnums[1:]:pre2,cur2=cur2,max(pre2+j,cur2)返回最大值(cur1,cur2)