YF云飞 2023-05-07 15:19 采纳率: 65%
浏览 36
已结题

关于python#代码#的问题,如何解决?

img


代码如下:


class Solution:
    def runeReserve(self, runes: List[int]) -> int:
        n = len(runes)
        if n <= 1:
            return n

        runes.sort()
        ans = 2
        cnt = [1] * n
        residue = n - 2

        i, j = 0, 1
        while j < n and residue > 0:
            if runes[j] - runes[i] <= 1 and cnt[i] > 0 and cnt[j] > 0:
                cnt[i] -= 1
                cnt[j] -= 1
                ans += 2
                if cnt[i] == 0:
                    residue -= 1
                    i = self.findNext(cnt, i, -1)
                if cnt[j] == 0:
                    residue -= 1
                    j = self.findNext(cnt, j, 1)
            else:
                if cnt[i] == 0:
                    i = self.findNext(cnt, i, -1)
                elif cnt[j] == 0:
                    j = self.findNext(cnt, j, 1)
                elif cnt[i] <= cnt[j]:
                    cnt[i] -= 1
                    ans += 1
                    if cnt[i] == 0:
                        residue -= 1
                        i = self.findNext(cnt, i, -1)
                else:
                    cnt[j] -= 1
                    ans += 1
                    if cnt[j] == 0:
                        residue -= 1
                        j = self.findNext(cnt, j, 1)
        
        return ans
    
    def findNext(self, cnt, i, d):
        j = i + d
        while j >= 0 and j < len(cnt) and cnt[j] == 0:
            j += d
        return j

求问如何修改代码才能正确?需要代码谢谢,其他思路也可以

  • 写回答

3条回答 默认 最新

  • CSDN专家-文盲老顾 2023-05-07 15:28
    关注

    这个题目,思路就很简单,求连续递增不超过1的最大长度,用一个指针,一个记录,两个变量即可

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月15日
  • 已采纳回答 5月7日
  • 修改了问题 5月7日
  • 创建了问题 5月7日