LC 3012. 通过操作使数组长度最小

https://leetcode.cn/problems/minimize-length-of-array-using-operations/description/

纯粹是一个数学思维的题目,分为几个点来解决:

这里有个点我没有相同,就是是否这个最小元素可能来自于其他组合比如(x, y), 而不是来自于(x', y). 其中x'是目前看到的最小元素呢?

这个是可能的,但是似乎没有关系,因为只要可以产生比x'更小的元素,那么最短长度就是1. 如果所有的元素都满足 x % x' = 0 的话,组合出来的值肯定是大于等于x'的。

class Solution:
    def minimumArrayLength(self, nums: List[int]) -> int:
        M = min(nums)
        cnt = 0
        for x in nums:
            if x == M:
                cnt += 1
            if x % M != 0:
                return 1
        return (cnt + 1) // 2