各位同学:
不才一位初学算法的小菜鸟,冒昧发出一道算法悬赏令,特搜集以下算法题的最优解!我会从评论区中选择一个思路最明晰、时间复杂度最低、代码最规范、评论时间最早的解题思路中选出一位同学,为其提供一份普通冰激凌(具体会思信联系)。
题目最小操作次数使数组元素相等给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1。返回让数组所有元素相等的最小操作次数。用例示例示例1: 输入:nums = [1, 2, 4] 输出:3 解释: 只需要3次操作(注意每次操作会增加两个元素的值): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]示例2: 输入:nums = [1, 1, 1] 输出:0提示:n == nums.length1 <= nums.length <= 10**5-10**9 <= nums[i] <= 10**9答案保证符合 32-bit 整数为什么我的答案没通过?# -*- coding:utf-8 -*-from typing import Listclass Solution: @staticmethod def is_same(_nums: List[int]) -> bool: lens = len(_nums) return _nums[0] == _nums[lens - 1] @staticmethod def add_one(_nums: List[int]) -> List[int]: lens = len(_nums) new_nums = [n + 1 for n in _nums[:lens - 1]] new_nums.append(_nums[-1]) return new_nums def minMoves(self, _nums: List[int]) -> tuple: _count = 0 while True: _nums = sorted(_nums) if self.is_same(_nums): break _nums = self.add_one(_nums) _count += 1 return _count