# 1356. Sort Integers by The Number of 1 Bits ###### tags: `Leetcode` `Easy` `Bit Manipulation` Link: https://leetcode.com/problems/sort-integers-by-the-number-of-1-bits/ ## 思路 先用```Integer.bitCount()```算出每个数字的the number of 1 bits 然后排序 ## Code ```java= class Solution { public int[] sortByBits(int[] arr) { int n = arr.length; int[][] cnt = new int[n][2]; for(int i=0; i<n; i++){ int num = arr[i]; cnt[i][0] = num; cnt[i][1] = Integer.bitCount(num); } Arrays.sort(cnt, new Comparator<int[]>(){ public int compare(int[] a, int[] b){ if(a[1] != b[1]) { return a[1]-b[1]; } else { return a[0]-b[0]; } } }); for(int i=0; i<n; i++) arr[i] = cnt[i][0]; return arr; } } ``` c++ ```cpp= class Solution { public: static int count1s(int num){ int cnt = 0; while(num){ cnt += num&1; num = num >> 1; } return cnt; } static bool compare(int a, int b){ int n1 = count1s(a); int n2 = count1s(b); if(n1==n2) return a<b; else return n1<n2; } vector<int> sortByBits(vector<int>& arr) { sort(arr.begin(), arr.end(), compare); return arr; } }; ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up