Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 4410451

Browse files
feat: add solutions to lc problem: No.3495 (#4696)
1 parent c151b55 commit 4410451

File tree

7 files changed

+341
-6
lines changed

7 files changed

+341
-6
lines changed

‎solution/3400-3499/3495.Minimum Operations to Make Array Elements Zero/README.md

Lines changed: 115 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,25 +110,137 @@ tags:
110110
#### Python3
111111

112112
```python
113-
113+
class Solution:
114+
def minOperations(self, queries: List[List[int]]) -> int:
115+
def f(x: int) -> int:
116+
res = 0
117+
p = i = 1
118+
while p <= x:
119+
cnt = min(p * 4 - 1, x) - p + 1
120+
res += cnt * i
121+
i += 1
122+
p *= 4
123+
return res
124+
125+
ans = 0
126+
for l, r in queries:
127+
s = f(r) - f(l - 1)
128+
mx = f(r) - f(r - 1)
129+
ans += max((s + 1) // 2, mx)
130+
return ans
114131
```
115132

116133
#### Java
117134

118135
```java
119-
136+
class Solution {
137+
public long minOperations(int[][] queries) {
138+
long ans = 0;
139+
for (int[] q : queries) {
140+
int l = q[0], r = q[1];
141+
long s = f(r) - f(l - 1);
142+
long mx = f(r) - f(r - 1);
143+
ans += Math.max((s + 1) / 2, mx);
144+
}
145+
return ans;
146+
}
147+
148+
private long f(long x) {
149+
long res = 0;
150+
long p = 1;
151+
int i = 1;
152+
while (p <= x) {
153+
long cnt = Math.min(p * 4 - 1, x) - p + 1;
154+
res += cnt * i;
155+
i++;
156+
p *= 4;
157+
}
158+
return res;
159+
}
160+
}
120161
```
121162

122163
#### C++
123164

124165
```cpp
125-
166+
class Solution {
167+
public:
168+
long long minOperations(vector<vector<int>>& queries) {
169+
auto f = [&](long long x) {
170+
long long res = 0;
171+
long long p = 1;
172+
int i = 1;
173+
while (p <= x) {
174+
long long cnt = min(p * 4 - 1, x) - p + 1;
175+
res += cnt * i;
176+
i++;
177+
p *= 4;
178+
}
179+
return res;
180+
};
181+
182+
long long ans = 0;
183+
for (auto& q : queries) {
184+
int l = q[0], r = q[1];
185+
long long s = f(r) - f(l - 1);
186+
long long mx = f(r) - f(r - 1);
187+
ans += max((s + 1) / 2, mx);
188+
}
189+
return ans;
190+
}
191+
};
126192
```
127193

128194
#### Go
129195

130196
```go
197+
func minOperations(queries [][]int) (ans int64) {
198+
f := func(x int64) (res int64) {
199+
var p int64 = 1
200+
i := int64(1)
201+
for p <= x {
202+
cnt := min(p*4-1, x) - p + 1
203+
res += cnt * i
204+
i++
205+
p *= 4
206+
}
207+
return
208+
}
209+
for _, q := range queries {
210+
l, r := int64(q[0]), int64(q[1])
211+
s := f(r) - f(l-1)
212+
mx := f(r) - f(r-1)
213+
ans += max((s+1)/2, mx)
214+
}
215+
return
216+
}
217+
```
131218

219+
#### TypeScript
220+
221+
```ts
222+
function minOperations(queries: number[][]): number {
223+
const f = (x: number): number => {
224+
let res = 0;
225+
let p = 1;
226+
let i = 1;
227+
while (p <= x) {
228+
const cnt = Math.min(p * 4 - 1, x) - p + 1;
229+
res += cnt * i;
230+
i++;
231+
p *= 4;
232+
}
233+
return res;
234+
};
235+
236+
let ans = 0;
237+
for (const [l, r] of queries) {
238+
const s = f(r) - f(l - 1);
239+
const mx = f(r) - f(r - 1);
240+
ans += Math.max(Math.ceil(s / 2), mx);
241+
}
242+
return ans;
243+
}
132244
```
133245

134246
<!-- tabs:end -->

‎solution/3400-3499/3495.Minimum Operations to Make Array Elements Zero/README_EN.md

Lines changed: 115 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,25 +107,137 @@ tags:
107107
#### Python3
108108

109109
```python
110-
110+
class Solution:
111+
def minOperations(self, queries: List[List[int]]) -> int:
112+
def f(x: int) -> int:
113+
res = 0
114+
p = i = 1
115+
while p <= x:
116+
cnt = min(p * 4 - 1, x) - p + 1
117+
res += cnt * i
118+
i += 1
119+
p *= 4
120+
return res
121+
122+
ans = 0
123+
for l, r in queries:
124+
s = f(r) - f(l - 1)
125+
mx = f(r) - f(r - 1)
126+
ans += max((s + 1) // 2, mx)
127+
return ans
111128
```
112129

113130
#### Java
114131

115132
```java
116-
133+
class Solution {
134+
public long minOperations(int[][] queries) {
135+
long ans = 0;
136+
for (int[] q : queries) {
137+
int l = q[0], r = q[1];
138+
long s = f(r) - f(l - 1);
139+
long mx = f(r) - f(r - 1);
140+
ans += Math.max((s + 1) / 2, mx);
141+
}
142+
return ans;
143+
}
144+
145+
private long f(long x) {
146+
long res = 0;
147+
long p = 1;
148+
int i = 1;
149+
while (p <= x) {
150+
long cnt = Math.min(p * 4 - 1, x) - p + 1;
151+
res += cnt * i;
152+
i++;
153+
p *= 4;
154+
}
155+
return res;
156+
}
157+
}
117158
```
118159

119160
#### C++
120161

121162
```cpp
122-
163+
class Solution {
164+
public:
165+
long long minOperations(vector<vector<int>>& queries) {
166+
auto f = [&](long long x) {
167+
long long res = 0;
168+
long long p = 1;
169+
int i = 1;
170+
while (p <= x) {
171+
long long cnt = min(p * 4 - 1, x) - p + 1;
172+
res += cnt * i;
173+
i++;
174+
p *= 4;
175+
}
176+
return res;
177+
};
178+
179+
long long ans = 0;
180+
for (auto& q : queries) {
181+
int l = q[0], r = q[1];
182+
long long s = f(r) - f(l - 1);
183+
long long mx = f(r) - f(r - 1);
184+
ans += max((s + 1) / 2, mx);
185+
}
186+
return ans;
187+
}
188+
};
123189
```
124190

125191
#### Go
126192

127193
```go
194+
func minOperations(queries [][]int) (ans int64) {
195+
f := func(x int64) (res int64) {
196+
var p int64 = 1
197+
i := int64(1)
198+
for p <= x {
199+
cnt := min(p*4-1, x) - p + 1
200+
res += cnt * i
201+
i++
202+
p *= 4
203+
}
204+
return
205+
}
206+
for _, q := range queries {
207+
l, r := int64(q[0]), int64(q[1])
208+
s := f(r) - f(l-1)
209+
mx := f(r) - f(r-1)
210+
ans += max((s+1)/2, mx)
211+
}
212+
return
213+
}
214+
```
128215

216+
#### TypeScript
217+
218+
```ts
219+
function minOperations(queries: number[][]): number {
220+
const f = (x: number): number => {
221+
let res = 0;
222+
let p = 1;
223+
let i = 1;
224+
while (p <= x) {
225+
const cnt = Math.min(p * 4 - 1, x) - p + 1;
226+
res += cnt * i;
227+
i++;
228+
p *= 4;
229+
}
230+
return res;
231+
};
232+
233+
let ans = 0;
234+
for (const [l, r] of queries) {
235+
const s = f(r) - f(l - 1);
236+
const mx = f(r) - f(r - 1);
237+
ans += Math.max(Math.ceil(s / 2), mx);
238+
}
239+
return ans;
240+
}
129241
```
130242

131243
<!-- tabs:end -->
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public:
3+
long long minOperations(vector<vector<int>>& queries) {
4+
auto f = [&](long long x) {
5+
long long res = 0;
6+
long long p = 1;
7+
int i = 1;
8+
while (p <= x) {
9+
long long cnt = min(p * 4 - 1, x) - p + 1;
10+
res += cnt * i;
11+
i++;
12+
p *= 4;
13+
}
14+
return res;
15+
};
16+
17+
long long ans = 0;
18+
for (auto& q : queries) {
19+
int l = q[0], r = q[1];
20+
long long s = f(r) - f(l - 1);
21+
long long mx = f(r) - f(r - 1);
22+
ans += max((s + 1) / 2, mx);
23+
}
24+
return ans;
25+
}
26+
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
func minOperations(queries [][]int) (ans int64) {
2+
f := func(x int64) (res int64) {
3+
var p int64 = 1
4+
i := int64(1)
5+
for p <= x {
6+
cnt := min(p*4-1, x) - p + 1
7+
res += cnt * i
8+
i++
9+
p *= 4
10+
}
11+
return
12+
}
13+
for _, q := range queries {
14+
l, r := int64(q[0]), int64(q[1])
15+
s := f(r) - f(l-1)
16+
mx := f(r) - f(r-1)
17+
ans += max((s+1)/2, mx)
18+
}
19+
return
20+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution {
2+
public long minOperations(int[][] queries) {
3+
long ans = 0;
4+
for (int[] q : queries) {
5+
int l = q[0], r = q[1];
6+
long s = f(r) - f(l - 1);
7+
long mx = f(r) - f(r - 1);
8+
ans += Math.max((s + 1) / 2, mx);
9+
}
10+
return ans;
11+
}
12+
13+
private long f(long x) {
14+
long res = 0;
15+
long p = 1;
16+
int i = 1;
17+
while (p <= x) {
18+
long cnt = Math.min(p * 4 - 1, x) - p + 1;
19+
res += cnt * i;
20+
i++;
21+
p *= 4;
22+
}
23+
return res;
24+
}
25+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution:
2+
def minOperations(self, queries: List[List[int]]) -> int:
3+
def f(x: int) -> int:
4+
res = 0
5+
p = i = 1
6+
while p <= x:
7+
cnt = min(p * 4 - 1, x) - p + 1
8+
res += cnt * i
9+
i += 1
10+
p *= 4
11+
return res
12+
13+
ans = 0
14+
for l, r in queries:
15+
s = f(r) - f(l - 1)
16+
mx = f(r) - f(r - 1)
17+
ans += max((s + 1) // 2, mx)
18+
return ans
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
function minOperations(queries: number[][]): number {
2+
const f = (x: number): number => {
3+
let res = 0;
4+
let p = 1;
5+
let i = 1;
6+
while (p <= x) {
7+
const cnt = Math.min(p * 4 - 1, x) - p + 1;
8+
res += cnt * i;
9+
i++;
10+
p *= 4;
11+
}
12+
return res;
13+
};
14+
15+
let ans = 0;
16+
for (const [l, r] of queries) {
17+
const s = f(r) - f(l - 1);
18+
const mx = f(r) - f(r - 1);
19+
ans += Math.max(Math.ceil(s / 2), mx);
20+
}
21+
return ans;
22+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /