Skip to content

Commit 34ee939

Browse files
committed
feat: add solutions to lc problem: No.1356
No.1356.Sort Integers by The Number of 1 Bits
1 parent 3d9d716 commit 34ee939

File tree

7 files changed

+192
-14
lines changed

7 files changed

+192
-14
lines changed

solution/1300-1399/1356.Sort Integers by The Number of 1 Bits/README.md

+85-4
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@
6363

6464
<!-- 这里可写通用的实现逻辑 -->
6565

66+
**方法一:自定义排序**
67+
68+
将数组 `arr` 按照题目要求排序,即按照二进制表示中数字 $1$ 的数目升序排序,如果存在多个数字二进制中 $1$ 的数目相同,则必须将它们按照数值大小升序排列。
69+
70+
时间复杂度 $O(n \times \log n)$,其中 $n$ 是数组 `arr` 的长度。
71+
6672
<!-- tabs:start -->
6773

6874
### **Python3**
@@ -72,8 +78,7 @@
7278
```python
7379
class Solution:
7480
def sortByBits(self, arr: List[int]) -> List[int]:
75-
arr.sort(key=lambda x: (x.bit_count(), x))
76-
return arr
81+
return sorted(arr, key=lambda x: (x.bit_count(), x))
7782
```
7883

7984
### **Java**
@@ -84,18 +89,94 @@ class Solution:
8489
class Solution {
8590
public int[] sortByBits(int[] arr) {
8691
int n = arr.length;
87-
for (int i = 0; i < n; i++) {
92+
for (int i = 0; i < n; ++i) {
8893
arr[i] += Integer.bitCount(arr[i]) * 100000;
8994
}
9095
Arrays.sort(arr);
91-
for (int i = 0; i < n; i++) {
96+
for (int i = 0; i < n; ++i) {
9297
arr[i] %= 100000;
9398
}
9499
return arr;
95100
}
96101
}
97102
```
98103

104+
```java
105+
class Solution {
106+
public int[] sortByBits(int[] arr) {
107+
int n = arr.length;
108+
Integer[] t = new Integer[n];
109+
for (int i = 0; i < n; ++i) {
110+
t[i] = arr[i];
111+
}
112+
Arrays.sort(t, (a, b) -> {
113+
int x = Integer.bitCount(a), y = Integer.bitCount(b);
114+
return x == y ? a - b : x - y;
115+
});
116+
for (int i = 0; i < n; ++i) {
117+
arr[i] = t[i];
118+
}
119+
return arr;
120+
}
121+
}
122+
```
123+
124+
### **C++**
125+
126+
```cpp
127+
class Solution {
128+
public:
129+
vector<int> sortByBits(vector<int>& arr) {
130+
for (int& v : arr) {
131+
v += __builtin_popcount(v) * 100000;
132+
}
133+
sort(arr.begin(), arr.end());
134+
for (int& v : arr) {
135+
v %= 100000;
136+
}
137+
return arr;
138+
}
139+
};
140+
```
141+
142+
```cpp
143+
class Solution {
144+
public:
145+
vector<int> sortByBits(vector<int>& arr) {
146+
sort(arr.begin(), arr.end(), [&](auto& a, auto& b) -> bool {
147+
int x = __builtin_popcount(a), y = __builtin_popcount(b);
148+
return x < y || (x == y && a < b);
149+
});
150+
return arr;
151+
}
152+
};
153+
```
154+
155+
### **Go**
156+
157+
```go
158+
func sortByBits(arr []int) []int {
159+
for i, v := range arr {
160+
arr[i] += bits.OnesCount(uint(v)) * 100000
161+
}
162+
sort.Ints(arr)
163+
for i := range arr {
164+
arr[i] %= 100000
165+
}
166+
return arr
167+
}
168+
```
169+
170+
```go
171+
func sortByBits(arr []int) []int {
172+
sort.Slice(arr, func(i, j int) bool {
173+
a, b := bits.OnesCount(uint(arr[i])), bits.OnesCount(uint(arr[j]))
174+
return a < b || (a == b && arr[i] < arr[j])
175+
})
176+
return arr
177+
}
178+
```
179+
99180
### **TypeScript**
100181

101182
```ts

solution/1300-1399/1356.Sort Integers by The Number of 1 Bits/README_EN.md

+79-4
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ The sorted array by bits is [0,1,2,4,8,3,5,6,7]
4646
```python
4747
class Solution:
4848
def sortByBits(self, arr: List[int]) -> List[int]:
49-
arr.sort(key=lambda x: (x.bit_count(), x))
50-
return arr
49+
return sorted(arr, key=lambda x: (x.bit_count(), x))
5150
```
5251

5352
### **Java**
@@ -56,18 +55,94 @@ class Solution:
5655
class Solution {
5756
public int[] sortByBits(int[] arr) {
5857
int n = arr.length;
59-
for (int i = 0; i < n; i++) {
58+
for (int i = 0; i < n; ++i) {
6059
arr[i] += Integer.bitCount(arr[i]) * 100000;
6160
}
6261
Arrays.sort(arr);
63-
for (int i = 0; i < n; i++) {
62+
for (int i = 0; i < n; ++i) {
6463
arr[i] %= 100000;
6564
}
6665
return arr;
6766
}
6867
}
6968
```
7069

70+
```java
71+
class Solution {
72+
public int[] sortByBits(int[] arr) {
73+
int n = arr.length;
74+
Integer[] t = new Integer[n];
75+
for (int i = 0; i < n; ++i) {
76+
t[i] = arr[i];
77+
}
78+
Arrays.sort(t, (a, b) -> {
79+
int x = Integer.bitCount(a), y = Integer.bitCount(b);
80+
return x == y ? a - b : x - y;
81+
});
82+
for (int i = 0; i < n; ++i) {
83+
arr[i] = t[i];
84+
}
85+
return arr;
86+
}
87+
}
88+
```
89+
90+
### **C++**
91+
92+
```cpp
93+
class Solution {
94+
public:
95+
vector<int> sortByBits(vector<int>& arr) {
96+
for (int& v : arr) {
97+
v += __builtin_popcount(v) * 100000;
98+
}
99+
sort(arr.begin(), arr.end());
100+
for (int& v : arr) {
101+
v %= 100000;
102+
}
103+
return arr;
104+
}
105+
};
106+
```
107+
108+
```cpp
109+
class Solution {
110+
public:
111+
vector<int> sortByBits(vector<int>& arr) {
112+
sort(arr.begin(), arr.end(), [&](auto& a, auto& b) -> bool {
113+
int x = __builtin_popcount(a), y = __builtin_popcount(b);
114+
return x < y || (x == y && a < b);
115+
});
116+
return arr;
117+
}
118+
};
119+
```
120+
121+
### **Go**
122+
123+
```go
124+
func sortByBits(arr []int) []int {
125+
for i, v := range arr {
126+
arr[i] += bits.OnesCount(uint(v)) * 100000
127+
}
128+
sort.Ints(arr)
129+
for i := range arr {
130+
arr[i] %= 100000
131+
}
132+
return arr
133+
}
134+
```
135+
136+
```go
137+
func sortByBits(arr []int) []int {
138+
sort.Slice(arr, func(i, j int) bool {
139+
a, b := bits.OnesCount(uint(arr[i])), bits.OnesCount(uint(arr[j]))
140+
return a < b || (a == b && arr[i] < arr[j])
141+
})
142+
return arr
143+
}
144+
```
145+
71146
### **TypeScript**
72147

73148
```ts
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
vector<int> sortByBits(vector<int>& arr) {
4+
for (int& v : arr) {
5+
v += __builtin_popcount(v) * 100000;
6+
}
7+
sort(arr.begin(), arr.end());
8+
for (int& v : arr) {
9+
v %= 100000;
10+
}
11+
return arr;
12+
}
13+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
func sortByBits(arr []int) []int {
2+
for i, v := range arr {
3+
arr[i] += bits.OnesCount(uint(v)) * 100000
4+
}
5+
sort.Ints(arr)
6+
for i := range arr {
7+
arr[i] %= 100000
8+
}
9+
return arr
10+
}

solution/1300-1399/1356.Sort Integers by The Number of 1 Bits/Solution.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
class Solution {
22
public int[] sortByBits(int[] arr) {
33
int n = arr.length;
4-
for (int i = 0; i < n; i++) {
4+
for (int i = 0; i < n; ++i) {
55
arr[i] += Integer.bitCount(arr[i]) * 100000;
66
}
77
Arrays.sort(arr);
8-
for (int i = 0; i < n; i++) {
8+
for (int i = 0; i < n; ++i) {
99
arr[i] %= 100000;
1010
}
1111
return arr;
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
class Solution:
22
def sortByBits(self, arr: List[int]) -> List[int]:
3-
arr.sort(key=lambda x: (x.bit_count(), x))
4-
return arr
3+
return sorted(arr, key=lambda x: (x.bit_count(), x))

solution/main.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,8 @@ def save(result):
206206

207207

208208
if __name__ == '__main__':
209-
cookie_cn = 'gr_user_id=7b94d263-adfc-4e00-90e5-f980bf076eed; csrftoken=pOMbXbvcVSqNKAaq8fhn1rgvYuPoPEBS1iJ4EC8jp8cPGqvcPoadtU9lTaHhvW21; a2873925c34ecbd2_gr_last_sent_cs1=lcbin; p_h5_u=404F51F8-3F22-4F82-9D76-B7E13CBEF3CE; selectedStreamLevel=HD; __atuvc=0|39,0|40,0|41,0|42,9|43; _bl_uid=vClzU9L3pyL0sFj7025nbLe3C8mX; _gid=GA1.2.1428750873.1672015943; cf_clearance=bQh04yiBHSknIdFoYPuUxUVTjqR_UnAuLoDhbrXASaw-1672370774-0-160; Hm_lvt_fa218a3ff7179639febdb15e372f411c=1672300277,1672393046,1672449807,1672485292; Hm_lvt_f0faad39bcf8471e3ab3ef70125152c3=1672469061,1672539807,1672540097,1672544860; _gat_gtag_UA_131851415_1=1; aliyungf_tc=32159deca782532138ea6c5c0d3b6c4c88841da791d8853c1cc7bd73c266e009; a2873925c34ecbd2_gr_session_id=82c6187e-e4df-4955-a51b-086a76656532; a2873925c34ecbd2_gr_last_sent_sid_with_cs1=82c6187e-e4df-4955-a51b-086a76656532; a2873925c34ecbd2_gr_session_id_82c6187e-e4df-4955-a51b-086a76656532=true; LEETCODE_SESSION=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuZXh0X2FmdGVyX29hdXRoIjoiLyIsIl9hdXRoX3VzZXJfaWQiOiIyNTQwMyIsIl9hdXRoX3VzZXJfYmFja2VuZCI6ImRqYW5nby5jb250cmliLmF1dGguYmFja2VuZHMuTW9kZWxCYWNrZW5kIiwiX2F1dGhfdXNlcl9oYXNoIjoiYTkwOWQwNTQzODU2NDgyYzhhNTA3ZDhiYjY4OTdlNTM1Y2EyZGYyOTU2ZTc5MzBiZjMwNzViMGMyZTNmYWIzZiIsImlkIjoyNTQwMywiZW1haWwiOiJjb250YWN0QHlhbmdsaWJpbi5pbmZvIiwidXNlcm5hbWUiOiJsY2JpbiIsInVzZXJfc2x1ZyI6ImxjYmluIiwiYXZhdGFyIjoiaHR0cHM6Ly9hc3NldHMubGVldGNvZGUuY24vYWxpeXVuLWxjLXVwbG9hZC91c2Vycy9iaW5nb29vL2F2YXRhcl8xNTIyNjQ5NDc3LnBuZyIsInBob25lX3ZlcmlmaWVkIjp0cnVlLCJfdGltZXN0YW1wIjoxNjcxMTA4ODMwLjA1OTYzNCwiZXhwaXJlZF90aW1lXyI6MTY3MzYzNjQwMCwidmVyc2lvbl9rZXlfIjowLCJsYXRlc3RfdGltZXN0YW1wXyI6MTY3MjU0NDg2MH0.2mTlBEAH_55kxFiRusp-rlS_Jzof36dGgV0VD1GqCFs; Hm_lpvt_f0faad39bcf8471e3ab3ef70125152c3=1672544916; _ga_PDVPZYN3CW=GS1.1.1672544860.34.1.1672544916.0.0.0; _ga=GA1.2.39301968.1671108818; a2873925c34ecbd2_gr_cs1=lcbin'
210-
cookie_en = 'gr_user_id=726c2dd2-240d-4971-b0f5-37744121657c; 87b5a3c3f1a55520_gr_last_sent_cs1=bingooo; _ga_DKXQ03QCVK=GS1.1.1628508904.1.1.1628508911.53; __stripe_mid=06148a1f-c255-4f92-9dc2-3b44dec7ef05c9325f; __atuvc=0|40,0|41,0|42,1|43,2|44; csrftoken=VtIXu4RRj643YogcwVe9UM31JoEFnEQeQaVhFADQ5yFTkhkU0TT3HM1Xe6PxYyCX; _ga=GA1.1.848882851.1671189525; _ga_CDRWKZTDEX=GS1.1.1672281807.3.0.1672281889.0.0.0; LEETCODE_SESSION=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJfYXV0aF91c2VyX2lkIjoiMTE4NzEwNyIsIl9hdXRoX3VzZXJfYmFja2VuZCI6ImFsbGF1dGguYWNjb3VudC5hdXRoX2JhY2tlbmRzLkF1dGhlbnRpY2F0aW9uQmFja2VuZCIsIl9hdXRoX3VzZXJfaGFzaCI6ImEyM2FkMWMyOTBhNDY1MTliNDg2YjMwNjljNDFjMjg3ZjVhYzI4YWUiLCJpZCI6MTE4NzEwNywiZW1haWwiOiJjb250YWN0QHlhbmdsaWJpbi5pbmZvIiwidXNlcm5hbWUiOiJiaW5nb29vIiwidXNlcl9zbHVnIjoiYmluZ29vbyIsImF2YXRhciI6Imh0dHBzOi8vYXNzZXRzLmxlZXRjb2RlLmNvbS91c2Vycy9iaW5nb29vL2F2YXRhcl8xNTIyNjgxMzQwLnBuZyIsInJlZnJlc2hlZF9hdCI6MTY3MjU0NDkzNywiaXAiOiIxMDMuMTUyLjIyMC4xOCIsImlkZW50aXR5IjoiYTgxOGFiMzU5ODA0NTE3ZjI1NDllOTRjODhkMDNjMGIiLCJzZXNzaW9uX2lkIjozMjMxMjA3NH0.UUo59hhOPJdURA4lAzR5fI3HDvQeq-zff08_B5lgSXk; _dd_s=rum=1&id=0840fa9b-a8a9-41fb-b996-1ca09836171a&created=1672544939251&expire=1672545839251'
209+
cookie_cn = ''
210+
cookie_en = ''
211211
spider = Spider(cookie_cn, cookie_en)
212212
res = spider.run()
213213
save(res)

0 commit comments

Comments
 (0)