2197. Replace Non-Coprime Numbers in Array | LeetCode

vc7-avatar-img
發佈於LeetCode
更新 發佈閱讀 4 分鐘

題目

https://leetcode.com/problems/replace-non-coprime-numbers-in-array/?envType=daily-question&envId=2025-09-16

日期

2025/09/16

想法

資料結構:Stack

根據題意,操作 Array 會有連鎖反應 (chain reaction) ,所以宜用 stack 儲存運算結果。每一次的核心演算法結束後,就把結果推進這個 stack 。

條件:相鄰兩元素

根據題意需要針對相鄰兩元素運算。所以不只要對下一個元素進行 GCD (最大公因數)判斷以及 LCM (最小公倍數)運算,也要對前一個元素進行運算。

這邊的「前一個元素」就是指 stack 的 top 元素。

核心演算法的地方就可以簡化成一率和 stack top 比對,比對直到沒有元素可以 pop 出來或是兩者最大公因數為 1

程式碼

class Solution {
func replaceNonCoprimes(_ nums: [Int]) -> [Int] {
var stack = [Int]()

for num in nums {
var current = num

// 核心處理
while let last = stack.last,
getGcd(current, last) > 1 {
let top = stack.removeLast()
current = getLcm(current, top)
}

stack.append(current)
}

return stack
}

private func getGcd(_ a: Int, _ b: Int) -> Int {
var a = a
var b = b
while b != 0 {
let temp = b
b = a % b
a = temp
}
return a
}

private func getLcm(_ a: Int, _ b: Int) -> Int {
a * b / getGcd(a, b)
}
}


留言
avatar-img
留言分享你的想法!
avatar-img
萱寫寫
2會員
17內容數
讀書心得、活動參加心得
你可能也想看
Thumbnail
LeetCode 是一個程式語言版的線上題庫平臺,提供題目描述、程式碼區塊、解題者分享的解法和疑問討論。藉由這篇文章分享我在 LeetCode 上的使用經驗和觀點,包括刷題的重要性、解題心態和練習目標。
Thumbnail
LeetCode 是一個程式語言版的線上題庫平臺,提供題目描述、程式碼區塊、解題者分享的解法和疑問討論。藉由這篇文章分享我在 LeetCode 上的使用經驗和觀點,包括刷題的重要性、解題心態和練習目標。
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
題目敘述 Patching Array 題目給定一個整數陣列, 請問還要補上多少個數字,才能用這些數字的和拼湊出所有1~n的整數。
Thumbnail
題目敘述 Patching Array 題目給定一個整數陣列, 請問還要補上多少個數字,才能用這些數字的和拼湊出所有1~n的整數。
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
高中數學主題練習—C計算(一)
Thumbnail
高中數學主題練習—C計算(一)
Thumbnail
題目敘述 題目會給定我們一個輸入陣列nums,要求我們掃描美個陣列元素nums[i],計算除了nums[i]以外的陣列元素連乘積。 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4] Output: [24,12,8,6] nums[0] 以
Thumbnail
題目敘述 題目會給定我們一個輸入陣列nums,要求我們掃描美個陣列元素nums[i],計算除了nums[i]以外的陣列元素連乘積。 題目的原文敘述 測試範例 Example 1: Input: nums = [1,2,3,4] Output: [24,12,8,6] nums[0] 以
Thumbnail
題目敘述 題目會給定我們一個整數陣列nums,要求我們把裡面的0做元素交換,把0都搬到陣列的右邊。題目要求必須in-place在原本的陣列裡面做操作,不可以額外建立新的陣列。 題目的原文敘述 測試範例 Example 1: Input: nums = [0,1,0,3,12] Outpu
Thumbnail
題目敘述 題目會給定我們一個整數陣列nums,要求我們把裡面的0做元素交換,把0都搬到陣列的右邊。題目要求必須in-place在原本的陣列裡面做操作,不可以額外建立新的陣列。 題目的原文敘述 測試範例 Example 1: Input: nums = [0,1,0,3,12] Outpu
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News