我正在運行CodeFight上的挑戰,除了1個「隱藏測試」,我無法看到插入的測試數據,所有測試都會通過... 我正在尋找幫助指出我錯過了或者我的解決方案失敗的測試用例。數字根分類算法
問題:
一些正整數的位數根被定義爲所有的 其位數的總和。我們給你一個整數數組。將它排序的方式是,如果 在b之前,則a的數字根小於或等於b的 數字根。如果兩個數字具有相同的數字根,則應該先排列較小的一個(按照常規意義)。例如4和13 具有相同的數字根,但是4 < 13因此4在任何 數字根分類中都出現在13之前,其中兩者都存在。
例
對於A = [13,20,7,4],輸出應該是[20,4,13,7]。
[時限] 4000ms(JS)[輸入] array.integer正整數的一個
陣列。
[輸出] array.integer
我的解決方案:
function digitRootSort(a) {
"use strict";
function getDigitalRoot(n) {
let _dr = n
.toString()
.split('')
.reduce((acc, val, i) => {
return acc += parseInt(val)
}, 0)
.toString()
if (_dr.length > 1) {
return getDigitalRoot(_dr)
}
return parseInt(_dr)
}
const digitalRootSorted = a.sort((a,b) => {
const _a = getDigitalRoot(a)
const _b = getDigitalRoot(b)
return _a < _b
? -1
: _a > _b
? 1
: a < b
? -1
: a === b
? 0
: 1
})
return digitalRootSorted
}
哇,這是一個大'getDigitalRoot'函數,你可以寫:'getDigitalRoot = n =>(n%9)|| 9;' –
您是否收到「隱藏測試失敗」以外的任何消息 - 例如這可能是你的解決方案超過了時間限制嗎? –
@WashingtonGuedes您的建議正確計算了數字根長至9 - 以上所有內容都需要進一步處理。 –