leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

replace_non_coprime_nums.py (1221B)


# 2197. Replace Non-Coprime Numbers in Array
from math import gcd

"""
you are given an array of integers 'nums'. perform the following steps: find
any two adjacent numbers in 'nums' that are non-coprime, if no such numbers
are found, stop the process. otherwise, delete the two numbers and replace
them with their lcm. repeat this process as long as you keep finding two
adjacent non-coprime integers. return the final modified array. it can be
shown that replacing adjacent non-coprime numbers in any arbitrary order will
lead to the same result. two values 'x' and '' aree non-coprime if 'gcd(x, y)
> 1' where 'gcd(x, y)' is the greatest common denomiator
"""


class Solution(object):
    def replaceNonCoprimes(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        ans = []
        for i in nums:
            while ans:
                g = gcd(ans[-1], i)
                if g == 1:
                    break
                i = (ans.pop() * i) // g
            ans.append(i)
        return ans


if __name__ == "__main__":
    obj = Solution()
    print(obj.replaceNonCoprimes(nums=[6, 4, 3, 2, 7, 6, 2]))
    print(obj.replaceNonCoprimes(nums=[2, 2, 1, 1, 3, 3, 3]))