LeetCode 2197. 替换数组中的非互质数(栈)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 2197. 替换数组中的非互质数(栈)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給你一個整數數組 nums 。請你對數組執行下述操作:
- 從 nums 中找出 任意 兩個 相鄰 的 非互質 數。
- 如果不存在這樣的數,終止 這一過程。
- 否則,刪除這兩個數,并 替換 為它們的 最小公倍數(Least Common Multiple,LCM)。
- 只要還能找出兩個相鄰的非互質數就繼續 重復 這一過程。
返回修改后得到的 最終 數組。
可以證明的是,以 任意 順序替換相鄰的非互質數都可以得到相同的結果。
生成的測試用例可以保證最終數組中的值 小于或者等于 10^8 。
兩個數字 x 和 y 滿足 非互質數 的條件是:GCD(x, y) > 1 ,其中 GCD(x, y) 是 x 和 y 的 最大公約數 。
示例 1 : 輸入:nums = [6,4,3,2,7,6,2] 輸出:[12,7,6] 解釋: - (6, 4) 是一組非互質數,且 LCM(6, 4) = 12 。得到 nums = [12,3,2,7,6,2] 。 - (12, 3) 是一組非互質數,且 LCM(12, 3) = 12 。得到 nums = [12,2,7,6,2] 。 - (12, 2) 是一組非互質數,且 LCM(12, 2) = 12 。得到 nums = [12,7,6,2] 。 - (6, 2) 是一組非互質數,且 LCM(6, 2) = 6 。得到 nums = [12,7,6] 。 現在,nums 中不存在相鄰的非互質數。 因此,修改后得到的最終數組是 [12,7,6] 。 注意,存在其他方法可以獲得相同的最終數組。示例 2 : 輸入:nums = [2,2,1,1,3,3,3] 輸出:[2,1,1,3] 解釋: - (3, 3) 是一組非互質數,且 LCM(3, 3) = 3 。得到 nums = [2,2,1,1,3,3] 。 - (3, 3) 是一組非互質數,且 LCM(3, 3) = 3 。得到 nums = [2,2,1,1,3] 。 - (2, 2) 是一組非互質數,且 LCM(2, 2) = 2 。得到 nums = [2,1,1,3] 。 現在,nums 中不存在相鄰的非互質數。 因此,修改后得到的最終數組是 [2,1,1,3] 。 注意,存在其他方法可以獲得相同的最終數組。提示: 1 <= nums.length <= 10^5 1 <= nums[i] <= 10^5 生成的測試用例可以保證最終數組中的值 小于或者等于 10^8 。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/replace-non-coprime-numbers-in-array
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
- 題目說了 以 任意 順序替換相鄰的非互質數都可以得到相同的結果
- 使用 棧 放入至少兩個數字,從棧頂開始檢查是否是 非互質數
- 如果是,刪除棧頂2個數,push LCM 到棧頂,重復該過程,直到不滿足,退出
- 再加入下一個數到棧頂
212 ms 129.1 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 2197. 替换数组中的非互质数(栈)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 2097. 合法重新排
- 下一篇: LeetCode 1676. 二叉树的最