Skip to content

Commit 6a0e6ec

Browse files
committed
feat: add solutions to lc problem: No.1748
No.1748.Sum of Unique Elements
1 parent 05bba40 commit 6a0e6ec

File tree

4 files changed

+172
-0
lines changed

4 files changed

+172
-0
lines changed

solution/1700-1799/1748.Sum of Unique Elements/README.md

+68
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,74 @@ func sumOfUnique(nums []int) int {
120120
}
121121
```
122122

123+
### **TypeScript**
124+
125+
```ts
126+
function sumOfUnique(nums: number[]): number {
127+
let res = 0;
128+
const map = new Map();
129+
for (const num of nums) {
130+
if (map.has(num)) {
131+
if (map.get(num)) {
132+
map.set(num, false);
133+
res -= num;
134+
}
135+
} else {
136+
map.set(num, true);
137+
res += num;
138+
}
139+
}
140+
return res;
141+
}
142+
```
143+
144+
### **Rust**
145+
146+
- 计数
147+
148+
```rust
149+
impl Solution {
150+
pub fn sum_of_unique(nums: Vec<i32>) -> i32 {
151+
let mut arr = [0; 101];
152+
for num in nums {
153+
arr[num as usize] += 1;
154+
}
155+
let mut res = 0;
156+
for i in 1..101 {
157+
if arr[i] == 1 {
158+
res += i;
159+
}
160+
}
161+
res as i32
162+
}
163+
}
164+
```
165+
166+
- 哈希表
167+
168+
```rust
169+
use std::collections::HashMap;
170+
171+
impl Solution {
172+
pub fn sum_of_unique(nums: Vec<i32>) -> i32 {
173+
let mut res = 0;
174+
let mut map = HashMap::new();
175+
for num in nums {
176+
if map.contains_key(&num) {
177+
if *map.get(&num).unwrap() {
178+
map.insert(num, false);
179+
res -= num;
180+
}
181+
} else {
182+
map.insert(num, true);
183+
res += num;
184+
}
185+
}
186+
res
187+
}
188+
}
189+
```
190+
123191
### **...**
124192

125193
```

solution/1700-1799/1748.Sum of Unique Elements/README_EN.md

+68
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,74 @@ func sumOfUnique(nums []int) int {
109109
}
110110
```
111111

112+
### **TypeScript**
113+
114+
```ts
115+
function sumOfUnique(nums: number[]): number {
116+
let res = 0;
117+
const map = new Map();
118+
for (const num of nums) {
119+
if (map.has(num)) {
120+
if (map.get(num)) {
121+
map.set(num, false);
122+
res -= num;
123+
}
124+
} else {
125+
map.set(num, true);
126+
res += num;
127+
}
128+
}
129+
return res;
130+
}
131+
```
132+
133+
### **Rust**
134+
135+
- Count
136+
137+
```rust
138+
impl Solution {
139+
pub fn sum_of_unique(nums: Vec<i32>) -> i32 {
140+
let mut arr = [0; 101];
141+
for num in nums {
142+
arr[num as usize] += 1;
143+
}
144+
let mut res = 0;
145+
for i in 1..101 {
146+
if arr[i] == 1 {
147+
res += i;
148+
}
149+
}
150+
res as i32
151+
}
152+
}
153+
```
154+
155+
- HashMap
156+
157+
```rust
158+
use std::collections::HashMap;
159+
160+
impl Solution {
161+
pub fn sum_of_unique(nums: Vec<i32>) -> i32 {
162+
let mut res = 0;
163+
let mut map = HashMap::new();
164+
for num in nums {
165+
if map.contains_key(&num) {
166+
if *map.get(&num).unwrap() {
167+
map.insert(num, false);
168+
res -= num;
169+
}
170+
} else {
171+
map.insert(num, true);
172+
res += num;
173+
}
174+
}
175+
res
176+
}
177+
}
178+
```
179+
112180
### **...**
113181

114182
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
use std::collections::HashMap;
2+
3+
impl Solution {
4+
pub fn sum_of_unique(nums: Vec<i32>) -> i32 {
5+
let mut res = 0;
6+
let mut map = HashMap::new();
7+
for num in nums {
8+
if map.contains_key(&num) {
9+
if *map.get(&num).unwrap() {
10+
map.insert(num, false);
11+
res -= num;
12+
}
13+
} else {
14+
map.insert(num, true);
15+
res += num;
16+
}
17+
}
18+
res
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function sumOfUnique(nums: number[]): number {
2+
let res = 0;
3+
const map = new Map();
4+
for (const num of nums) {
5+
if (map.has(num)) {
6+
if (map.get(num)) {
7+
map.set(num, false);
8+
res -= num;
9+
}
10+
} else {
11+
map.set(num, true);
12+
res += num;
13+
}
14+
}
15+
return res;
16+
}

0 commit comments

Comments
 (0)