Skip to content

Commit 7e52a6d

Browse files
committed
feat: add solutions to lc problems: No.2154,2155
* No.2154.Keep Multiplying Found Values by Two * No.2155.All Divisions With the Highest Score of a Binary Array
1 parent 9409697 commit 7e52a6d

File tree

12 files changed

+444
-7
lines changed

12 files changed

+444
-7
lines changed

solution/2100-2199/2154.Keep Multiplying Found Values by Two/README.md

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,32 @@
6161
<!-- 这里可写当前语言的特殊实现逻辑 -->
6262

6363
```python
64-
64+
class Solution:
65+
def findFinalValue(self, nums: List[int], original: int) -> int:
66+
s = set(nums)
67+
while original in s:
68+
original <<= 1
69+
return original
6570
```
6671

6772
### **Java**
6873

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

7176
```java
77+
class Solution {
78+
79+
public int findFinalValue(int[] nums, int original) {
80+
Set<Integer> s = new HashSet<>();
81+
for (int num : nums) {
82+
s.add(num);
83+
}
84+
while (s.contains(original)) {
85+
original <<= 1;
86+
}
87+
return original;
88+
}
89+
}
7290

7391
```
7492

@@ -81,9 +99,38 @@ function findFinalValue(nums: number[], original: number): number {
8199
original *= 2;
82100
}
83101
return original;
102+
}
103+
```
104+
105+
### **C++**
106+
107+
```cpp
108+
class Solution {
109+
public:
110+
int findFinalValue(vector<int>& nums, int original) {
111+
unordered_set<int> s;
112+
for (int num : nums) s.insert(num);
113+
while (s.count(original)) original <<= 1;
114+
return original;
115+
}
84116
};
85117
```
86118
119+
### **Go**
120+
121+
```go
122+
func findFinalValue(nums []int, original int) int {
123+
s := make(map[int]bool)
124+
for _, num := range nums {
125+
s[num] = true
126+
}
127+
for s[original] {
128+
original <<= 1
129+
}
130+
return original
131+
}
132+
```
133+
87134
### **...**
88135

89136
```

solution/2100-2199/2154.Keep Multiplying Found Values by Two/README_EN.md

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,29 @@
5353
### **Python3**
5454

5555
```python
56-
56+
class Solution:
57+
def findFinalValue(self, nums: List[int], original: int) -> int:
58+
s = set(nums)
59+
while original in s:
60+
original <<= 1
61+
return original
5762
```
5863

5964
### **Java**
6065

6166
```java
62-
67+
class Solution {
68+
public int findFinalValue(int[] nums, int original) {
69+
Set<Integer> s = new HashSet<>();
70+
for (int num : nums) {
71+
s.add(num);
72+
}
73+
while (s.contains(original)) {
74+
original <<= 1;
75+
}
76+
return original;
77+
}
78+
}
6379
```
6480

6581
### **TypeScript**
@@ -74,6 +90,36 @@ function findFinalValue(nums: number[], original: number): number {
7490
};
7591
```
7692

93+
94+
### **C++**
95+
96+
```cpp
97+
class Solution {
98+
public:
99+
int findFinalValue(vector<int>& nums, int original) {
100+
unordered_set<int> s;
101+
for (int num : nums) s.insert(num);
102+
while (s.count(original)) original <<= 1;
103+
return original;
104+
}
105+
};
106+
```
107+
108+
### **Go**
109+
110+
```go
111+
func findFinalValue(nums []int, original int) int {
112+
s := make(map[int]bool)
113+
for _, num := range nums {
114+
s[num] = true
115+
}
116+
for s[original] {
117+
original <<= 1
118+
}
119+
return original
120+
}
121+
```
122+
77123
### **...**
78124

79125
```
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution {
2+
public:
3+
int findFinalValue(vector<int>& nums, int original) {
4+
unordered_set<int> s;
5+
for (int num : nums) s.insert(num);
6+
while (s.count(original)) original <<= 1;
7+
return original;
8+
}
9+
};
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
func findFinalValue(nums []int, original int) int {
2+
s := make(map[int]bool)
3+
for _, num := range nums {
4+
s[num] = true
5+
}
6+
for s[original] {
7+
original <<= 1
8+
}
9+
return original
10+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution {
2+
public int findFinalValue(int[] nums, int original) {
3+
Set<Integer> s = new HashSet<>();
4+
for (int num : nums) {
5+
s.add(num);
6+
}
7+
while (s.contains(original)) {
8+
original <<= 1;
9+
}
10+
return original;
11+
}
12+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
class Solution:
2+
def findFinalValue(self, nums: List[int], original: int) -> int:
3+
s = set(nums)
4+
while original in s:
5+
original <<= 1
6+
return original

solution/2100-2199/2155.All Divisions With the Highest Score of a Binary Array/README.md

Lines changed: 108 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,63 @@
7777
<!-- 这里可写当前语言的特殊实现逻辑 -->
7878

7979
```python
80-
80+
class Solution:
81+
def maxScoreIndices(self, nums: List[int]) -> List[int]:
82+
left, right = 0, sum(nums)
83+
mx = right
84+
ans = [0]
85+
for i, num in enumerate(nums):
86+
if num == 0:
87+
left += 1
88+
else:
89+
right -= 1
90+
t = left + right
91+
if mx == t:
92+
ans.append(i + 1)
93+
elif mx < t:
94+
mx = t
95+
ans = [i + 1]
96+
return ans
8197
```
8298

8399
### **Java**
84100

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

87103
```java
104+
class Solution {
105+
106+
public List<Integer> maxScoreIndices(int[] nums) {
107+
int left = 0, right = sum(nums);
108+
int mx = right;
109+
List<Integer> ans = new ArrayList<>();
110+
ans.add(0);
111+
for (int i = 0; i < nums.length; ++i) {
112+
if (nums[i] == 0) {
113+
++left;
114+
} else {
115+
--right;
116+
}
117+
int t = left + right;
118+
if (mx == t) {
119+
ans.add(i + 1);
120+
} else if (mx < t) {
121+
mx = t;
122+
ans.clear();
123+
ans.add(i + 1);
124+
}
125+
}
126+
return ans;
127+
}
128+
129+
private int sum(int[] nums) {
130+
int s = 0;
131+
for (int num : nums) {
132+
s += num;
133+
}
134+
return s;
135+
}
136+
}
88137

89138
```
90139

@@ -94,7 +143,8 @@
94143
function maxScoreIndices(nums: number[]): number[] {
95144
const n = nums.length;
96145
const total = nums.reduce((a, c) => a + c, 0);
97-
let left = 0, right = total;
146+
let left = 0,
147+
right = total;
98148
let record: Array<number> = [total];
99149
for (const num of nums) {
100150
if (num == 0) {
@@ -112,9 +162,65 @@ function maxScoreIndices(nums: number[]): number[] {
112162
}
113163
}
114164
return ans;
165+
}
166+
```
167+
168+
### **C++**
169+
170+
```cpp
171+
class Solution {
172+
public:
173+
vector<int> maxScoreIndices(vector<int>& nums) {
174+
int left = 0, right = accumulate(nums.begin(), nums.end(), 0);
175+
int mx = right;
176+
vector<int> ans;
177+
ans.push_back(0);
178+
for (int i = 0; i < nums.size(); ++i)
179+
{
180+
if (nums[i] == 0) ++left;
181+
else --right;
182+
int t = left + right;
183+
if (mx == t) ans.push_back(i + 1);
184+
else if (mx < t)
185+
{
186+
mx = t;
187+
ans.clear();
188+
ans.push_back(i + 1);
189+
}
190+
}
191+
return ans;
192+
}
115193
};
116194
```
117195
196+
### **Go**
197+
198+
```go
199+
func maxScoreIndices(nums []int) []int {
200+
left, right := 0, 0
201+
for _, num := range nums {
202+
right += num
203+
}
204+
mx := right
205+
ans := []int{0}
206+
for i, num := range nums {
207+
if num == 0 {
208+
left++
209+
} else {
210+
right--
211+
}
212+
t := left + right
213+
if mx == t {
214+
ans = append(ans, i+1)
215+
} else if mx < t {
216+
mx = t
217+
ans = []int{i + 1}
218+
}
219+
}
220+
return ans
221+
}
222+
```
223+
118224
### **...**
119225

120226
```

0 commit comments

Comments
 (0)