Skip to content

Commit 490d842

Browse files
committed
feat: add solutions to lc problem: No.0327
No.0327.Count of Range Sum
1 parent 7a8da22 commit 490d842

File tree

6 files changed

+216
-0
lines changed

6 files changed

+216
-0
lines changed

solution/0300-0399/0327.Count of Range Sum/README.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,105 @@
4444

4545
<!-- 这里可写通用的实现逻辑 -->
4646

47+
离散化。
48+
4749
<!-- tabs:start -->
4850

4951
### **Python3**
5052

5153
<!-- 这里可写当前语言的特殊实现逻辑 -->
5254

5355
```python
56+
class Solution:
57+
def arrayRankTransform(self, arr: List[int]) -> List[int]:
58+
def find(x):
59+
left, right = 0, len(t) - 1
60+
while left < right:
61+
mid = (left + right) >> 1
62+
if t[mid] >= x:
63+
right = mid
64+
else:
65+
left = mid + 1
66+
return left + 1
67+
68+
t = sorted(set(arr))
69+
return [find(x) for x in arr]
70+
```
5471

72+
```python
73+
class Solution:
74+
def arrayRankTransform(self, arr: List[int]) -> List[int]:
75+
m = {v: i for i, v in enumerate(sorted(set(arr)), 1)}
76+
return [m[v] for v in arr]
5577
```
5678

5779
### **Java**
5880

5981
<!-- 这里可写当前语言的特殊实现逻辑 -->
6082

6183
```java
84+
class Solution {
85+
public int[] arrayRankTransform(int[] arr) {
86+
Set<Integer> s = new HashSet<>();
87+
for (int v : arr) {
88+
s.add(v);
89+
}
90+
List<Integer> alls = new ArrayList<>(s);
91+
alls.sort((a, b) -> a - b);
92+
Map<Integer, Integer> m = new HashMap<>();
93+
for (int i = 0; i < alls.size(); ++i) {
94+
m.put(alls.get(i), i + 1);
95+
}
96+
int[] ans = new int[arr.length];
97+
for (int i = 0; i < arr.length; ++i) {
98+
ans[i] = m.get(arr[i]);
99+
}
100+
return ans;
101+
}
102+
}
103+
```
104+
105+
### **C++**
106+
107+
```cpp
108+
class Solution {
109+
public:
110+
vector<int> arrayRankTransform(vector<int>& arr) {
111+
unordered_set<int> s(arr.begin(), arr.end());
112+
vector<int> alls(s.begin(), s.end());
113+
sort(alls.begin(), alls.end());
114+
unordered_map<int, int> m;
115+
for (int i = 0; i < alls.size(); ++i) m[alls[i]] = i + 1;
116+
vector<int> ans;
117+
for (int v : arr) ans.push_back(m[v]);
118+
return ans;
119+
}
120+
};
121+
```
62122
123+
### **Go**
124+
125+
```go
126+
func arrayRankTransform(arr []int) []int {
127+
s := make(map[int]bool)
128+
for _, v := range arr {
129+
s[v] = true
130+
}
131+
var alls []int
132+
for v := range s {
133+
alls = append(alls, v)
134+
}
135+
sort.Ints(alls)
136+
m := make(map[int]int)
137+
for i, v := range alls {
138+
m[v] = i + 1
139+
}
140+
var ans []int
141+
for _, v := range arr {
142+
ans = append(ans, m[v])
143+
}
144+
return ans
145+
}
63146
```
64147

65148
### **...**

solution/0300-0399/0327.Count of Range Sum/README_EN.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,94 @@
4343
### **Python3**
4444

4545
```python
46+
class Solution:
47+
def arrayRankTransform(self, arr: List[int]) -> List[int]:
48+
def find(x):
49+
left, right = 0, len(t) - 1
50+
while left < right:
51+
mid = (left + right) >> 1
52+
if t[mid] >= x:
53+
right = mid
54+
else:
55+
left = mid + 1
56+
return left + 1
57+
58+
t = sorted(set(arr))
59+
return [find(x) for x in arr]
60+
```
4661

62+
```python
63+
class Solution:
64+
def arrayRankTransform(self, arr: List[int]) -> List[int]:
65+
m = {v: i for i, v in enumerate(sorted(set(arr)), 1)}
66+
return [m[v] for v in arr]
4767
```
4868

4969
### **Java**
5070

5171
```java
72+
class Solution {
73+
public int[] arrayRankTransform(int[] arr) {
74+
Set<Integer> s = new HashSet<>();
75+
for (int v : arr) {
76+
s.add(v);
77+
}
78+
List<Integer> alls = new ArrayList<>(s);
79+
alls.sort((a, b) -> a - b);
80+
Map<Integer, Integer> m = new HashMap<>();
81+
for (int i = 0; i < alls.size(); ++i) {
82+
m.put(alls.get(i), i + 1);
83+
}
84+
int[] ans = new int[arr.length];
85+
for (int i = 0; i < arr.length; ++i) {
86+
ans[i] = m.get(arr[i]);
87+
}
88+
return ans;
89+
}
90+
}
91+
```
92+
93+
### **C++**
94+
95+
```cpp
96+
class Solution {
97+
public:
98+
vector<int> arrayRankTransform(vector<int>& arr) {
99+
unordered_set<int> s(arr.begin(), arr.end());
100+
vector<int> alls(s.begin(), s.end());
101+
sort(alls.begin(), alls.end());
102+
unordered_map<int, int> m;
103+
for (int i = 0; i < alls.size(); ++i) m[alls[i]] = i + 1;
104+
vector<int> ans;
105+
for (int v : arr) ans.push_back(m[v]);
106+
return ans;
107+
}
108+
};
109+
```
52110
111+
### **Go**
112+
113+
```go
114+
func arrayRankTransform(arr []int) []int {
115+
s := make(map[int]bool)
116+
for _, v := range arr {
117+
s[v] = true
118+
}
119+
var alls []int
120+
for v := range s {
121+
alls = append(alls, v)
122+
}
123+
sort.Ints(alls)
124+
m := make(map[int]int)
125+
for i, v := range alls {
126+
m[v] = i + 1
127+
}
128+
var ans []int
129+
for _, v := range arr {
130+
ans = append(ans, m[v])
131+
}
132+
return ans
133+
}
53134
```
54135

55136
### **...**
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution {
2+
public:
3+
vector<int> arrayRankTransform(vector<int>& arr) {
4+
unordered_set<int> s(arr.begin(), arr.end());
5+
vector<int> alls(s.begin(), s.end());
6+
sort(alls.begin(), alls.end());
7+
unordered_map<int, int> m;
8+
for (int i = 0; i < alls.size(); ++i) m[alls[i]] = i + 1;
9+
vector<int> ans;
10+
for (int v : arr) ans.push_back(m[v]);
11+
return ans;
12+
}
13+
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
func arrayRankTransform(arr []int) []int {
2+
s := make(map[int]bool)
3+
for _, v := range arr {
4+
s[v] = true
5+
}
6+
var alls []int
7+
for v := range s {
8+
alls = append(alls, v)
9+
}
10+
sort.Ints(alls)
11+
m := make(map[int]int)
12+
for i, v := range alls {
13+
m[v] = i + 1
14+
}
15+
var ans []int
16+
for _, v := range arr {
17+
ans = append(ans, m[v])
18+
}
19+
return ans
20+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
public int[] arrayRankTransform(int[] arr) {
3+
Set<Integer> s = new HashSet<>();
4+
for (int v : arr) {
5+
s.add(v);
6+
}
7+
List<Integer> alls = new ArrayList<>(s);
8+
alls.sort((a, b) -> a - b);
9+
Map<Integer, Integer> m = new HashMap<>();
10+
for (int i = 0; i < alls.size(); ++i) {
11+
m.put(alls.get(i), i + 1);
12+
}
13+
int[] ans = new int[arr.length];
14+
for (int i = 0; i < arr.length; ++i) {
15+
ans[i] = m.get(arr[i]);
16+
}
17+
return ans;
18+
}
19+
}

solution/0300-0399/0327.Count of Range Sum/Solution.py

Whitespace-only changes.

0 commit comments

Comments
 (0)