1-100範圍中,有1000個可重複的數,以出現次數的多少排序,返回乙個新陣列?
/**
* 根據物件的乙個屬性排序
* @param data 原始陣列(陣列單個元素為物件)
* @param sortkey 要根據排序的key
* @param type desc 倒序, asc 正序
*/function
sortobjarrbykey
(data, sortkey, type)
else
if(type ===
'desc'
)return arr;
}/**
* 以數字出現的次數排序
* @param 原始陣列
*/function
sortarrbycount
(arr)
;var origincountarr =
; arr.
foreach
(item =>);
console.
log(
'countobj'
, countobj)
; origincountarr = object.
keys
(countobj)
.map
(key =>;}
);var sortedcountarr =
sortobjarrbykey
( origincountarr,
'value'
,'desc');
let sortedcountnumarr = sortedcountarr.
map(item =>
+item.key)
; console.
log(
'result:'
, sortedcountnumarr)
;return sortedcountnumarr;
}// 用少量數量模擬一下
var arr =[1
,4,2
,1,5
,7,8
,10,25
,11,10
,7,100,7
,20];
let resultarr =
sortarrbycount
(arr)
;
輸出結果:
應該還有其他更精妙的解法,想到了補充。
乙個演算法題
題目描述 某省會城市街道縱橫交錯,為了監控路燈的執行狀況,每條街道使用乙個數字字串標識該街道上所有路燈的執行狀況。假設路燈只有如下 3種狀態 分別用數字 0,1,2標識,一盞路燈只對應其中一種狀態 0 標識路燈熄滅 1 標識路燈開啟 2 標識路燈故障 請根據輸入的字串,找出該街道上連續的處於相同狀態...
乙個演算法題
關鍵字 演算法 有101塊金幣,其中一塊是假的,要求用無砝碼的天平稱兩次,判斷是真的金幣重還是假的重 答案 分三份,第乙份份五十個,第二份五十個,第三份份乙個。第一次 將兩份五十個分別放到天平兩端。如果天平是平的,證明第三份是假的。這時只要從真的裡拿出乙個,和假的分別放到天平兩端,就能知道假的是輕是...
乙個有趣的演算法題
今天看到一道很有意思的演算法面試題,因為之前很少研究演算法,好奇心加上暴躁的脾氣,就決定一定要乾掉這道題 5個小姐站成一列 他們的姓不同 衣服顏色不同 和不同的飲料 樣不同的寵物 吃不同的水果 1錢小姐穿紅色的衣服,2翁小姐養乙隻狗,3陳小姐喝茶。4穿綠衣服的站在白衣服的左邊,5綠衣服的再喝咖啡,6...