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

更新於 發佈於 閱讀時間約 4 分鐘

本文題目來自網站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
留言分享你的想法!
avatar-img
Anya 安雅的雜談室
52會員
35內容數
紀錄所閱讀過的書籍,並經將書中精華寫成摘要,希望有助於大家對該書的快速的了解。更能迅速找到自己所喜愛的類型,用最簡短的時間了解作者欲傳達得意思。
2023/09/14
今天要來開箱介紹頂規等級的俗稱大F的FILCO最新版無線式機械鍵盤,就外觀以及功能方面做個簡單就體驗說明,有興趣的朋友們趕快來看看吧!
Thumbnail
2023/09/14
今天要來開箱介紹頂規等級的俗稱大F的FILCO最新版無線式機械鍵盤,就外觀以及功能方面做個簡單就體驗說明,有興趣的朋友們趕快來看看吧!
Thumbnail
2023/04/27
我是一名30歲轉職工程師的女子,希望能將我的轉職經驗分享給同樣有此想法的朋友們,大家互相交流其中的辛酸甜苦辣!
Thumbnail
2023/04/27
我是一名30歲轉職工程師的女子,希望能將我的轉職經驗分享給同樣有此想法的朋友們,大家互相交流其中的辛酸甜苦辣!
Thumbnail
2023/04/11
一起來透過Java Script來解題二為陣列的躲鬼屋小遊戲吧!
Thumbnail
2023/04/11
一起來透過Java Script來解題二為陣列的躲鬼屋小遊戲吧!
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
題目敘述 題目會給定我們兩個整數陣列作為輸入nums1, nums2,要求我們找出兩個陣列的差異值。 找出在nums1但是不在nums2的元素,以陣列的形式放在answer[0]輸出。 找出在nums2但是不在nums1的元素,以陣列的形式放在answer[1]輸出。 題目的原文敘述
Thumbnail
題目敘述 題目會給定我們兩個整數陣列作為輸入nums1, nums2,要求我們找出兩個陣列的差異值。 找出在nums1但是不在nums2的元素,以陣列的形式放在answer[0]輸出。 找出在nums2但是不在nums1的元素,以陣列的形式放在answer[1]輸出。 題目的原文敘述
Thumbnail
題目會給我們一個陣列nums,要求我們以每個陣列元素分別當作軸心點,計算差值的絕對值總和,最後以陣列的形式,返回答案。 測試範例 Example 1: Input: nums = [2,3,5] Output: [4,3,5]
Thumbnail
題目會給我們一個陣列nums,要求我們以每個陣列元素分別當作軸心點,計算差值的絕對值總和,最後以陣列的形式,返回答案。 測試範例 Example 1: Input: nums = [2,3,5] Output: [4,3,5]
Thumbnail
題目會給定一個存有整數的陣列,要求我們依照下列規則進行排序,由小排到大,升序排列。
Thumbnail
題目會給定一個存有整數的陣列,要求我們依照下列規則進行排序,由小排到大,升序排列。
Thumbnail
題目會給定一個陣列,要求我們把裡面的數字依照奇偶數去排序, 偶數的排在前面,奇數的排在後面。
Thumbnail
題目會給定一個陣列,要求我們把裡面的數字依照奇偶數去排序, 偶數的排在前面,奇數的排在後面。
Thumbnail
題目:建立一個函數,該函數返回給定最小 4 個正整數的數組的兩個最低正數的總和。不會傳入浮點數或非正整數。例如,當一個數組像 [19, 5, 42, 2, 77], 輸出應該是 7。 [10, 343445353, 3453445, 3453545353453] 應該回來 3453
Thumbnail
題目:建立一個函數,該函數返回給定最小 4 個正整數的數組的兩個最低正數的總和。不會傳入浮點數或非正整數。例如,當一個數組像 [19, 5, 42, 2, 77], 輸出應該是 7。 [10, 343445353, 3453445, 3453545353453] 應該回來 3453
Thumbnail
這題就是經典的考排序驗算法, 不管在教科書、上機考、面試白板題都是一個很基本又滿熱門的題目。 題目會給定一個輸入陣列,要求我們實作一個排序演算法,把陣列元素從小到大排好。
Thumbnail
這題就是經典的考排序驗算法, 不管在教科書、上機考、面試白板題都是一個很基本又滿熱門的題目。 題目會給定一個輸入陣列,要求我們實作一個排序演算法,把陣列元素從小到大排好。
Thumbnail
Codewars 是個程式練習網站,筆者主要練習的是 JavaScript,會記錄自己的解法,並參考其他人的寫法來改善自己的程式碼,那麼我們就開始吧!
Thumbnail
Codewars 是個程式練習網站,筆者主要練習的是 JavaScript,會記錄自己的解法,並參考其他人的寫法來改善自己的程式碼,那麼我們就開始吧!
Thumbnail
Remove Duplicates from Sorted Array : 將陣列中的重複值移除,並回傳陣列裡的元素總數。
Thumbnail
Remove Duplicates from Sorted Array : 將陣列中的重複值移除,並回傳陣列裡的元素總數。
Thumbnail
本文題目來自網站codesignal,它是個可依自己選取的程式語言進行測驗,測驗難易程度會逐題增加,可透過解題來獲得分數以及徽章,相當有趣味性。在sumbit後可在左欄看到票選最高的解法,這些解法來自不同語言,當然你可以在上面篩選自己撰寫的程式語言。沒有所謂的最好的解法,只有最適合的方式。
Thumbnail
本文題目來自網站codesignal,它是個可依自己選取的程式語言進行測驗,測驗難易程度會逐題增加,可透過解題來獲得分數以及徽章,相當有趣味性。在sumbit後可在左欄看到票選最高的解法,這些解法來自不同語言,當然你可以在上面篩選自己撰寫的程式語言。沒有所謂的最好的解法,只有最適合的方式。
Thumbnail
比今天的題目示例如下: Input: nums = [-4,-1,0,3,10] Output: [0,1,9,16,100] 簡單來說,要的輸出結果是把陣列內每個數字取平方後,對陣列做排序。
Thumbnail
比今天的題目示例如下: Input: nums = [-4,-1,0,3,10] Output: [0,1,9,16,100] 簡單來說,要的輸出結果是把陣列內每個數字取平方後,對陣列做排序。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News