Skip to content

Commit 6205ee5

Browse files
authored
feat: add solutions to lc problems: No.3038,3039 (doocs#2353)
1 parent cc6d8a8 commit 6205ee5

File tree

14 files changed

+404
-12
lines changed

14 files changed

+404
-12
lines changed

solution/3000-3099/3038.Maximum Number of Operations With the Same Score I/README.md

+48-3
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,64 @@
5656
<!-- tabs:start -->
5757

5858
```python
59-
59+
class Solution:
60+
def maxOperations(self, nums: List[int]) -> int:
61+
s = nums[0] + nums[1]
62+
ans, n = 0, len(nums)
63+
for i in range(0, n, 2):
64+
if i + 1 == n or nums[i] + nums[i + 1] != s:
65+
break
66+
ans += 1
67+
return ans
6068
```
6169

6270
```java
63-
71+
class Solution {
72+
public int maxOperations(int[] nums) {
73+
int s = nums[0] + nums[1];
74+
int ans = 0, n = nums.length;
75+
for (int i = 0; i + 1 < n && nums[i] + nums[i + 1] == s; i += 2) {
76+
++ans;
77+
}
78+
return ans;
79+
}
80+
}
6481
```
6582

6683
```cpp
67-
84+
class Solution {
85+
public:
86+
int maxOperations(vector<int>& nums) {
87+
int s = nums[0] + nums[1];
88+
int ans = 0, n = nums.size();
89+
for (int i = 0; i + 1 < n && nums[i] + nums[i + 1] == s; i += 2) {
90+
++ans;
91+
}
92+
return ans;
93+
}
94+
};
6895
```
6996
7097
```go
98+
func maxOperations(nums []int) (ans int) {
99+
s, n := nums[0]+nums[1], len(nums)
100+
for i := 0; i+1 < n && nums[i]+nums[i+1] == s; i += 2 {
101+
ans++
102+
}
103+
return
104+
}
105+
```
71106

107+
```ts
108+
function maxOperations(nums: number[]): number {
109+
const s = nums[0] + nums[1];
110+
const n = nums.length;
111+
let ans = 0;
112+
for (let i = 0; i + 1 < n && nums[i] + nums[i + 1] === s; i += 2) {
113+
++ans;
114+
}
115+
return ans;
116+
}
72117
```
73118

74119
<!-- tabs:end -->

solution/3000-3099/3038.Maximum Number of Operations With the Same Score I/README_EN.md

+48-3
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,64 @@ We are unable to perform any more operations as the score of the next operation
5252
<!-- tabs:start -->
5353

5454
```python
55-
55+
class Solution:
56+
def maxOperations(self, nums: List[int]) -> int:
57+
s = nums[0] + nums[1]
58+
ans, n = 0, len(nums)
59+
for i in range(0, n, 2):
60+
if i + 1 == n or nums[i] + nums[i + 1] != s:
61+
break
62+
ans += 1
63+
return ans
5664
```
5765

5866
```java
59-
67+
class Solution {
68+
public int maxOperations(int[] nums) {
69+
int s = nums[0] + nums[1];
70+
int ans = 0, n = nums.length;
71+
for (int i = 0; i + 1 < n && nums[i] + nums[i + 1] == s; i += 2) {
72+
++ans;
73+
}
74+
return ans;
75+
}
76+
}
6077
```
6178

6279
```cpp
63-
80+
class Solution {
81+
public:
82+
int maxOperations(vector<int>& nums) {
83+
int s = nums[0] + nums[1];
84+
int ans = 0, n = nums.size();
85+
for (int i = 0; i + 1 < n && nums[i] + nums[i + 1] == s; i += 2) {
86+
++ans;
87+
}
88+
return ans;
89+
}
90+
};
6491
```
6592
6693
```go
94+
func maxOperations(nums []int) (ans int) {
95+
s, n := nums[0]+nums[1], len(nums)
96+
for i := 0; i+1 < n && nums[i]+nums[i+1] == s; i += 2 {
97+
ans++
98+
}
99+
return
100+
}
101+
```
67102

103+
```ts
104+
function maxOperations(nums: number[]): number {
105+
const s = nums[0] + nums[1];
106+
const n = nums.length;
107+
let ans = 0;
108+
for (let i = 0; i + 1 < n && nums[i] + nums[i + 1] === s; i += 2) {
109+
++ans;
110+
}
111+
return ans;
112+
}
68113
```
69114

70115
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution {
2+
public:
3+
int maxOperations(vector<int>& nums) {
4+
int s = nums[0] + nums[1];
5+
int ans = 0, n = nums.size();
6+
for (int i = 0; i + 1 < n && nums[i] + nums[i + 1] == s; i += 2) {
7+
++ans;
8+
}
9+
return ans;
10+
}
11+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
func maxOperations(nums []int) (ans int) {
2+
s, n := nums[0]+nums[1], len(nums)
3+
for i := 0; i+1 < n && nums[i]+nums[i+1] == s; i += 2 {
4+
ans++
5+
}
6+
return
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class Solution {
2+
public int maxOperations(int[] nums) {
3+
int s = nums[0] + nums[1];
4+
int ans = 0, n = nums.length;
5+
for (int i = 0; i + 1 < n && nums[i] + nums[i + 1] == s; i += 2) {
6+
++ans;
7+
}
8+
return ans;
9+
}
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def maxOperations(self, nums: List[int]) -> int:
3+
s = nums[0] + nums[1]
4+
ans, n = 0, len(nums)
5+
for i in range(0, n, 2):
6+
if i + 1 == n or nums[i] + nums[i + 1] != s:
7+
break
8+
ans += 1
9+
return ans
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
function maxOperations(nums: number[]): number {
2+
const s = nums[0] + nums[1];
3+
const n = nums.length;
4+
let ans = 0;
5+
for (let i = 0; i + 1 < n && nums[i] + nums[i + 1] === s; i += 2) {
6+
++ans;
7+
}
8+
return ans;
9+
}

solution/3000-3099/3039.Apply Operations to Make String Empty/README.md

+88-3
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,104 @@
5656
<!-- tabs:start -->
5757

5858
```python
59-
59+
class Solution:
60+
def lastNonEmptyString(self, s: str) -> str:
61+
cnt = Counter(s)
62+
mx = cnt.most_common(1)[0][1]
63+
last = {c: i for i, c in enumerate(s)}
64+
return "".join(c for i, c in enumerate(s) if cnt[c] == mx and last[c] == i)
6065
```
6166

6267
```java
63-
68+
class Solution {
69+
public String lastNonEmptyString(String s) {
70+
int[] cnt = new int[26];
71+
int[] last = new int[26];
72+
int n = s.length();
73+
int mx = 0;
74+
for (int i = 0; i < n; ++i) {
75+
int c = s.charAt(i) - 'a';
76+
mx = Math.max(mx, ++cnt[c]);
77+
last[c] = i;
78+
}
79+
StringBuilder ans = new StringBuilder();
80+
for (int i = 0; i < n; ++i) {
81+
int c = s.charAt(i) - 'a';
82+
if (cnt[c] == mx && last[c] == i) {
83+
ans.append(s.charAt(i));
84+
}
85+
}
86+
return ans.toString();
87+
}
88+
}
6489
```
6590

6691
```cpp
67-
92+
class Solution {
93+
public:
94+
string lastNonEmptyString(string s) {
95+
int cnt[26]{};
96+
int last[26]{};
97+
int n = s.size();
98+
int mx = 0;
99+
for (int i = 0; i < n; ++i) {
100+
int c = s[i] - 'a';
101+
mx = max(mx, ++cnt[c]);
102+
last[c] = i;
103+
}
104+
string ans;
105+
for (int i = 0; i < n; ++i) {
106+
int c = s[i] - 'a';
107+
if (cnt[c] == mx && last[c] == i) {
108+
ans.push_back(s[i]);
109+
}
110+
}
111+
return ans;
112+
}
113+
};
68114
```
69115
70116
```go
117+
func lastNonEmptyString(s string) string {
118+
cnt := [26]int{}
119+
last := [26]int{}
120+
mx := 0
121+
for i, c := range s {
122+
c -= 'a'
123+
cnt[c]++
124+
last[c] = i
125+
mx = max(mx, cnt[c])
126+
}
127+
ans := []rune{}
128+
for i, c := range s {
129+
if cnt[c-'a'] == mx && last[c-'a'] == i {
130+
ans = append(ans, c)
131+
}
132+
}
133+
return string(ans)
134+
}
135+
```
71136

137+
```ts
138+
function lastNonEmptyString(s: string): string {
139+
const cnt: number[] = Array(26).fill(0);
140+
const last: number[] = Array(26).fill(0);
141+
const n = s.length;
142+
let mx = 0;
143+
for (let i = 0; i < n; ++i) {
144+
const c = s.charCodeAt(i) - 97;
145+
mx = Math.max(mx, ++cnt[c]);
146+
last[c] = i;
147+
}
148+
const ans: string[] = [];
149+
for (let i = 0; i < n; ++i) {
150+
const c = s.charCodeAt(i) - 97;
151+
if (cnt[c] === mx && last[c] === i) {
152+
ans.push(String.fromCharCode(c + 97));
153+
}
154+
}
155+
return ans.join('');
156+
}
72157
```
73158

74159
<!-- tabs:end -->

0 commit comments

Comments
 (0)