宇宙无敌飞天遁地大木木 2025-03-21 17:47 采纳率: 32.5%
浏览 6
已结题

关于#lc-2818#的问题,请各位专家解答!



class Solution:
    def maximumScore(self, nums: List[int], k: int) -> int:
        n = len(nums)
        mod = 10**9 +7
        mx = max(nums) + 1
        prime_cnt = [0] * mx
        for i in range(2, mx):
            if prime_cnt[i]:
                continue

            for j in range(i, mx, i):
                prime_cnt[j] += 1

        prime_nums = [0] * n
        idx = [0] * n
        for i in range(n):
            prime_nums[i] = prime_cnt[nums[i]]
            idx[i] = i


        idx = sorted(idx, key=lambda x: nums[x],reverse=True)

        q = list()
        left = [-1] * n
        right = [n] * n

        for i in range(n):
            while q and prime_nums[i] > prime_nums[q[-1]]:
                q.pop()

            if q:
                left[i] = q[-1]

            q.append(i)

        q = list()

        for i in range(n-1,-1,-1):
            while q and prime_nums[i] >= prime_nums[q[-1]]:
                q.pop()

            if q:
                right[i] = q[-1]

            q.append(i)

        ans = 1
        for i in range(n):
            if k == 0:
                break
            cnt = (idx[i] - left[idx[i]]) * (right[idx[i]] - idx[i])
            cnt = min(cnt,k)
            ans *= pow(nums[idx[i]],cnt)
            ans %= mod
            k -= cnt

        return ans
  • 写回答

4条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-03-21 17:47
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    这段代码是一个解决maximumScore问题的Python类的实现。该问题是给定一个由正整数组成的数组nums和一个整数k,从nums中选择一个数nums[i]并删除该数字,增加得分nums[i] * left * right,其中left和right是与nums[i]相邻的两个数字。 这段代码实现了一个Solution类,其中包含一个maximumScore方法来解决这个问题。代码首先计算了数组中每个数字的质数因子数量,然后根据nums数组中数字的质数因子数量来排序nums和其对应的下标。接着使用单调栈来找到每个数字左侧和右侧第一个比自己大的数字的位置。最后根据算法计算得分并返回最大得分。 如果需要一个简单调用该方法的示例代码,可以使用以下代码:
    sol = Solution()
    nums = [1, 2, 3, 4, 5]
    k = 2
    print(sol.maximumScore(nums, k))
    

    请确保在使用这段代码时进行测试和调试。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月25日
  • 创建了问题 3月21日