[前端刷題]JS的Array 重新排列 sort()取差異值個數

閱讀時間約 3 分鐘
本文題目來自網站codesignal,它是個可依自己選取的程式語言進行測驗,測驗難易程度會逐題增加,可透過解題來獲得分數以及徽章,相當有趣味性。在sumbit後可在左欄看到票選最高的解法,這些解法來自不同語言,當然你可以在上面篩選自己撰寫的程式語言。沒有所謂的最好的解法,只有最適合的方式。

題目
Ratiorg got statues of different sizes as a present from CodeMaster for his birthday, each statue having an non-negative integer size. Since he likes to make things perfect, he wants to arrange them from smallest to largest so that each statue will be bigger than the previous one exactly by 1. He may need some additional statues to be able to accomplish that. Help him figure out the minimum number of additional statues needed.

範例
For statues = [6, 2, 3, 8], the output should be
solution(statues) = 3.
Ratiorg needs statues of sizes 4, 5 and 7.
解題方式
function solution(statues) {
let num = 0;
const seq = statues.sort(function(a,b) {
return a-b
})
for(let i =0; i < seq.length; i++){
if(seq[i]-seq[i-1] >= 2){
num+=seq[i]-seq[i-1] -1
}}
return num
}
想法
首先宣告解題答案為num,並將重新用sort()方程式依小到大排序而產生的陣列宣告為seq。並讓seq陣列透過跑for迴圈,套入if條件,如果選取值減掉前一個值大於等於2的話,就讓num等於選取值減掉前一個值所產生的差異值,在減以1就等於中間的差異值個數,並讓這些差異值個數進行加總,即是答案。
這邊要介紹一下,一開始所使用的sort()方法。
它是個可將陣列重新依照大小進行排列函式,但有幾個使用要點需要注意,它只取每個字串的第一個字進行比較,無論是阿拉伯數字或是英文字母皆是如此。假設你的陣列字串都是單位數,例如arr=[2,6,7,3,4]
那使用該函式後,arr.sort()=[2,3,4,6,7]
有順利的依值數大小進行順利排列
但如果你的陣列字串包含雙位數者,例如arr=[26,13,5,6,49]
那使用該函式後,arr.sort()=[13,26,49,5,6]
這和我們內心想地的大小排序不同
如果雙位數者要進行大小排序,需要使用以下兩個方式:
升冪排序
numbers.sort(function(a, b) {
return a - b; });
降冪排序
numbers.sort(function(a, b) {
return b - a; });
為什麼會看到廣告
avatar-img
51會員
34內容數
紀錄所閱讀過的書籍,並經將書中精華寫成摘要,希望有助於大家對該書的快速的了解。更能迅速找到自己所喜愛的類型,用最簡短的時間了解作者欲傳達得意思。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Describe a time when you had to work with others to overcome a challenge. You should say: what the challenge was who you worked with what
Thumbnail
Describe an occasion when you had to make time for someone. You should say: what the situation was how you rearranged your plans what
Thumbnail
Describe an occasion when your offer to help was not accepted. You should say: who you offered to help what kind of help you offered why
Thumbnail
Describe an event where you met someone you had lost contact with. You should say: 描述一個你與曾失去聯繫的人重逢的經歷 when and where it happened 發生的時間和地點
Thumbnail
集雅思輔考十餘年之大成,賦予考生活學活用的能力。 Describe an event you attended where there was a lot of food. You should say: what type of event it was what kinds o
Thumbnail
前端工程師為了讓網頁呈現在使用者面前時更加美觀,經常需要透過圖表及文字的調整達到前述美觀目的。本篇文章將分別介紹測試圖片網站「Dynamic Dummy Image Generator」及測試文字網站「Lipsum generator:Lorem Ipsum」,讓身為前端工程師或有意成為前端工程師的
Thumbnail
前端工程師可能會隨著工作經驗的累積,而開始想要寫出更好的網頁架構,又或者是能有一套方法讓組織間的溝通、工作模式更加順暢。
Thumbnail
Firebase Realtime Database 是一個 NoSQL 即時雲端資料庫,支援多平台(JavaScript SDKs、Android、iOS),可以讓使用者即時取得資料庫的資料。
Thumbnail
Functional Programming 中文譯作函式程式設計,或是功能性程式設計,常簡稱為:FP,是一種透過使用純函式(Pure Funciton)進行軟體開發,且避免副作用的程式設計典範,比起宣告式的流程控制,在 FP 採用主要以表達式的方式撰寫程式碼。
Thumbnail
在跟社群朋友私訊時,他說我可以考慮分享「我的前端之路」之類的啊。覺得這真是一個很不錯的主題,每個人都有自己的故事!不愧是個老師,會因材施教XD 本科系畢業、碰前端之前 憧憬前端工作,但沒自信、不敢 設計與美感 - 一生從沒碰過的東西 Vue 比 React 簡單? 與設計師的合作 跨足APP
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Describe a time when you had to work with others to overcome a challenge. You should say: what the challenge was who you worked with what
Thumbnail
Describe an occasion when you had to make time for someone. You should say: what the situation was how you rearranged your plans what
Thumbnail
Describe an occasion when your offer to help was not accepted. You should say: who you offered to help what kind of help you offered why
Thumbnail
Describe an event where you met someone you had lost contact with. You should say: 描述一個你與曾失去聯繫的人重逢的經歷 when and where it happened 發生的時間和地點
Thumbnail
集雅思輔考十餘年之大成,賦予考生活學活用的能力。 Describe an event you attended where there was a lot of food. You should say: what type of event it was what kinds o
Thumbnail
前端工程師為了讓網頁呈現在使用者面前時更加美觀,經常需要透過圖表及文字的調整達到前述美觀目的。本篇文章將分別介紹測試圖片網站「Dynamic Dummy Image Generator」及測試文字網站「Lipsum generator:Lorem Ipsum」,讓身為前端工程師或有意成為前端工程師的
Thumbnail
前端工程師可能會隨著工作經驗的累積,而開始想要寫出更好的網頁架構,又或者是能有一套方法讓組織間的溝通、工作模式更加順暢。
Thumbnail
Firebase Realtime Database 是一個 NoSQL 即時雲端資料庫,支援多平台(JavaScript SDKs、Android、iOS),可以讓使用者即時取得資料庫的資料。
Thumbnail
Functional Programming 中文譯作函式程式設計,或是功能性程式設計,常簡稱為:FP,是一種透過使用純函式(Pure Funciton)進行軟體開發,且避免副作用的程式設計典範,比起宣告式的流程控制,在 FP 採用主要以表達式的方式撰寫程式碼。
Thumbnail
在跟社群朋友私訊時,他說我可以考慮分享「我的前端之路」之類的啊。覺得這真是一個很不錯的主題,每個人都有自己的故事!不愧是個老師,會因材施教XD 本科系畢業、碰前端之前 憧憬前端工作,但沒自信、不敢 設計與美感 - 一生從沒碰過的東西 Vue 比 React 簡單? 與設計師的合作 跨足APP