欣迪

出處: https://leetcode.com/problems/sort-integers-by-the-number-of-1-bits/

You are given an integer array arr. Sort the integers in the array in ascending order by the number of 1‘s in their binary representation and in case of two or more integers have the same number of 1‘s you have to sort them in ascending order.

Return the array after sorting it.

Example 1:

Input: arr = [0,1,2,3,4,5,6,7,8]
Output: [0,1,2,4,8,3,5,6,7]
Explantion: [0] is the only integer with 0 bits.
[1,2,4,8] all have 1 bit.
[3,5,6] have 2 bits.
[7] has 3 bits.
The sorted array by bits is [0,1,2,4,8,3,5,6,7]

Example 2:

Input: arr = [1024,512,256,128,64,32,16,8,4,2,1]
Output: [1,2,4,8,16,32,64,128,256,512,1024]
Explantion: All integers have 1 bit in the binary representation, you should just sort them in ascending order.

Constraints:

  • 1 <= arr.length <= 500
  • 0 <= arr[i] <= 104
/**
 * @param {number[]} arr
 * @return {number[]}
 */
var sortByBits = function(arr) {
    return arr.sort((a, b) => {
        const aBits = a === 0 ? 0 : a.toString(2).match(/1/g).length
        const bBits = b === 0 ? 0 : b.toString(2).match(/1/g).length
        return aBits - bBits || a - b  
    })
};

toString()

這個 api 可以帶一個變數 radix,預設是轉換為 10 進位。 如果帶入 2 則是轉換為 2 進位。

這邊的做法轉成 2 進位的字串,然後計算字串內 1 的數量,進行排序。

訂閱 IT-Monk

訂閱最新文章的發布消息! 😚😚😚
Loading

作者介紹 - 欣迪

欣迪

從設計到寫程式,發現自己有追求前端技巧的自虐傾向。不斷的踩坑,再從坑裡爬出來,慢慢對攀岩有點心得。 目前在多間公司擔任網站設計顧問。 同時也是網站架設公司負責人。