使數(shù)組中所有的元素都等于零

給你一個非負(fù)整數(shù)數(shù)組 nums 。在一步操作中,你必須:

選出一個正整數(shù) x ,x 需要小于或等于 nums 中 最小 的 非零 元素。
nums 中的每個正整數(shù)都減去 x。
返回使 nums 中所有元素都等于 0 需要的 最少 操作數(shù)。

示例 1:

輸入:nums = [1,5,0,3,5]
輸出:3
解釋:
第一步操作:選出 x = 1 ,之后 nums = [0,4,0,2,4] 。
第二步操作:選出 x = 2 ,之后 nums = [0,2,0,0,2] 。
第三步操作:選出 x = 2 ,之后 nums = [0,0,0,0,0] 。
示例 2:

輸入:nums = [0]
輸出:0
解釋:nums 中的每個元素都已經(jīng)是 0 ,所以不需要執(zhí)行任何操作。
 

提示:

1 <= nums.length <= 100
0 <= nums[i] <= 100

來源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/make-array-zero-by-subtracting-equal-amounts

菜雞的思路

'''
整體思路就是先用冒泡把最大數(shù)和最小的有效數(shù)求出來然后按照題目上面說的一個一個減去,在記錄計算的次數(shù)
'''
class Solution:
    def minimumOperations(self, nums: list) -> int:
        nums = list(set(nums))
        if len(nums) == 1:
            return 1
        for i in range(len(nums) - 1):
            for j in range(len(nums) -1):
                if nums[j + 1] < nums[j]:
                    temp = nums[j]
                    nums[j] = nums[j + 1]
                    nums[j + 1] =temp
        count = 0
        nums = [item for item in nums if item != 0]
        while 1:
            mins = nums[0]
            for i in range(len(nums)):
                nums[i] = nums[i] - mins
            nums = [item for item in nums if item >0]
            if len(nums) == 1:
                return count + 2
            if nums[-1] == 0:
                return count + 2
            count = count + 1
if __name__ == '__main__':
    a = Solution()
    print(a.minimumOperations([2, 2, 99, 5, 6, 3,9,0]))

解出來之后就發(fā)現(xiàn)這就是在求有幾個不一樣的數(shù),我的寫法完全就是畫蛇添足,我就先用set把重復(fù)的數(shù)去掉然后在把零去掉在求數(shù)組長度即可很簡單

class Solution:
    def minimumOperations(self, nums: list) -> int:
        nums = list(set(nums))
        nums = [item for item in nums if item != 0]
        return len(nums)

后面還看有人用一行代碼實現(xiàn)。。

class Solution:
    def minimumOperations(self, nums: list) -> int:
        return len((set(nums)-{0}))

但是一行代碼的好像會慢些

1679069537367.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容