1502. Can Make Arithmetic Progression From Sequence (判斷能否形成等

更新於 2024/10/05閱讀時間約 2 分鐘


英文版點我中文版點我


↑看個小廣告,支持好內容↑


從結果來看,如果能組成等差數列,整組數字必定存在公差,使得排序後相鄰兩項的差值相同。


Sorting

所以直觀的解法已經出爐:我們就實地排一次,檢查每兩項的差是否唯一。一旦違反必代表無法滿足條件,複雜度 nlogn+n ≈ nlogn


❷ Set

當然,能不排的話還是盡量避免,另一種思路是從等差數列的兩端著手,在已知最大、最小值和項數後,其實已經能推出等差數列的樣貌了:

// arr=[22,15,7,18,2]

1. 以迴圈找出數列中的最大、最小值 (222)
2. ​數列共有五項,公差應為 (22-2)/(5-1)=5
3. 得到等差數列 [2,7,12,17,22]


倘若每個數字都有出現,就能湊出一個等差數列。我們當然可以依序檢查 arr.indexOf(2)!=-1arr.indexOf(7)!=-1 ...,但每次都要重翻陣列,更好的辦法是轉成集合 (Set)

// 陣列是否有某個數:O(n)
arr.indexOf(x) // 有則回傳 index,否則回傳 -1

// 集合是否有某個數:O(1)
set.has(x) // true/false


參考程式碼:

var canMakeArithmeticProgression = function(arr) {
// 取得最大、最小值及公差
let min=Infinity, max=-Infinity;
for(let i=0; i<arr.length; i++){
min=Math.min(min, arr[i]);
max=Math.max(max, arr[i]);
}
let diff=(max-min)/(arr.length-1);

// 依序檢查每個數是否出現
let set=new Set(arr);
while(min<max){
min+=diff;
if(!set.has(min)){return false};
}
return true;
};



  • 本題分類標籤:ArraySorting
  • 本題正解率=69.9%

❤️ 若內容對你實用,歡迎追蹤本專題,或小額贊助支持~
⭐ 這是我的第 6 篇刷題筆記,完整解題索引看這裡 → Here

avatar-img
54會員
59內容數
我要成為 LeetCode 王!快跟我一起踏上旅程!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
LeetCode King 的其他內容
% 這個符號在 SQL 能做什麼,你都記得嗎?
班上闖來了一個陌生人!該如何快狠準揪出他?這道經典考題的解法,遠比你想的還要多種 ......
文字處理 101!把輸入內容做小寫轉換是很常見的應用唷~
動一步要花錢,動兩步卻免費,這其中藏了什麼詐?聰明的你想到了嗎?
環狀的公車路線圖,題目讀懂後會發現是個腦筋急轉彎!XD
% 這個符號在 SQL 能做什麼,你都記得嗎?
班上闖來了一個陌生人!該如何快狠準揪出他?這道經典考題的解法,遠比你想的還要多種 ......
文字處理 101!把輸入內容做小寫轉換是很常見的應用唷~
動一步要花錢,動兩步卻免費,這其中藏了什麼詐?聰明的你想到了嗎?
環狀的公車路線圖,題目讀懂後會發現是個腦筋急轉彎!XD
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
 離開了農場,卡諾蘿斯看到在不遠處有一個小村莊  「看,下一個目的地快到囉」我微笑著,柏德愉快的唱著歌
Thumbnail
Introduction The tempation of starting an online business is undeniable. However, building a store from scratch can be time-consuming and resource-
Thumbnail
本篇文章提供清晰的步驟與代碼,指導開發者如何在實際項目中設置和使用 CandyPay。無論是新手還是有經驗的開發者,您都可以輕鬆掌握如何將這一強大的支付工具無縫整合到應用中,並實現加密貨幣支付功能。文章中還介紹了 NFT-Based Discount 的設置方法,幫助商家擴展客戶忠誠度。
Thumbnail
CandyPay 是一個使用 Solana 區塊鏈的 Payment solution,企業只需撰寫幾行程式碼,即可將這個支付基礎設施整合到自己的應用中,並開始接受 Solana Payments。這使得企業能夠輕鬆利用 Solana 提供的快速、低成本的去中心化支付網路。 值得一提的是,Cand
Thumbnail
指數今天仍開在18000附近,但到九點現貨開盤後,一路往上漲到10點,來到18100後才出現回檔,在高檔震盪後,尾盤再度續創高,最後收在18125,上漲126點。今天櫃買也同步走強,一路上漲收最高,即將挑戰前波高點。 個股部分,今天長榮航受到罷工事件告一段落,因此期貨一開盤漲5%以上,當下判斷有有
Thumbnail
I've recently met someone. I've known him for not too long, not too short, 365 days. There's something about the time we spent together. It's so
Thumbnail
你能否愛你的瘋狂 你能否愛你的清醒 你能否愛你的愚昧 你能否愛你的混亂 在你之內有個苦悶的自己 有個緊張焦慮之自己 你可否兩個同時都愛 還有那個不斷盡力的自己 我其實已經疲乏於「愛自己」的標題,受不了動輒「愛自己」的消費催敗,也不明白為何類似的雞湯文總是愛如潮水。
Thumbnail
We are on the apex of the fourth industrial revolution.
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
 離開了農場,卡諾蘿斯看到在不遠處有一個小村莊  「看,下一個目的地快到囉」我微笑著,柏德愉快的唱著歌
Thumbnail
Introduction The tempation of starting an online business is undeniable. However, building a store from scratch can be time-consuming and resource-
Thumbnail
本篇文章提供清晰的步驟與代碼,指導開發者如何在實際項目中設置和使用 CandyPay。無論是新手還是有經驗的開發者,您都可以輕鬆掌握如何將這一強大的支付工具無縫整合到應用中,並實現加密貨幣支付功能。文章中還介紹了 NFT-Based Discount 的設置方法,幫助商家擴展客戶忠誠度。
Thumbnail
CandyPay 是一個使用 Solana 區塊鏈的 Payment solution,企業只需撰寫幾行程式碼,即可將這個支付基礎設施整合到自己的應用中,並開始接受 Solana Payments。這使得企業能夠輕鬆利用 Solana 提供的快速、低成本的去中心化支付網路。 值得一提的是,Cand
Thumbnail
指數今天仍開在18000附近,但到九點現貨開盤後,一路往上漲到10點,來到18100後才出現回檔,在高檔震盪後,尾盤再度續創高,最後收在18125,上漲126點。今天櫃買也同步走強,一路上漲收最高,即將挑戰前波高點。 個股部分,今天長榮航受到罷工事件告一段落,因此期貨一開盤漲5%以上,當下判斷有有
Thumbnail
I've recently met someone. I've known him for not too long, not too short, 365 days. There's something about the time we spent together. It's so
Thumbnail
你能否愛你的瘋狂 你能否愛你的清醒 你能否愛你的愚昧 你能否愛你的混亂 在你之內有個苦悶的自己 有個緊張焦慮之自己 你可否兩個同時都愛 還有那個不斷盡力的自己 我其實已經疲乏於「愛自己」的標題,受不了動輒「愛自己」的消費催敗,也不明白為何類似的雞湯文總是愛如潮水。
Thumbnail
We are on the apex of the fourth industrial revolution.