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 fb68f57

Browse files
feat: update lc problems (doocs#3045)
1 parent 292ced6 commit fb68f57

File tree

21 files changed

+376
-135
lines changed

21 files changed

+376
-135
lines changed

‎lcof2/剑指 Offer II 025. 链表中的两数相加/README.md‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -222,36 +222,36 @@ func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
222222
* init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
223223
* }
224224
*/
225-
225+
226226
class Solution {
227227
func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> ListNode? {
228228
var s1: [Int] = []
229229
var s2: [Int] = []
230-
230+
231231
var node1 = l1
232232
var node2 = l2
233-
233+
234234
while let n1 = node1 {
235235
s1.append(n1.val)
236236
node1 = n1.next
237237
}
238-
238+
239239
while let n2 = node2 {
240240
s2.append(n2.val)
241241
node2 = n2.next
242242
}
243-
243+
244244
var carry = 0
245245
let dummy: ListNode? = ListNode(0)
246-
246+
247247
while !s1.isEmpty || !s2.isEmpty || carry != 0 {
248248
carry += (s1.isEmpty ? 0 : s1.removeLast()) + (s2.isEmpty ? 0 : s2.removeLast())
249249
let node = ListNode(carry % 10)
250250
node.next = dummy?.next
251251
dummy?.next = node
252252
carry /= 10
253253
}
254-
254+
255255
return dummy?.next
256256
}
257257
}

‎lcof2/剑指 Offer II 026. 重排链表/README.md‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -305,15 +305,15 @@ func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
305305
class Solution {
306306
func reorderList(_ head: ListNode?) {
307307
guard let head = head else { return }
308-
308+
309309
let mid = middleNode(head)
310-
310+
311311
let secondHalf = reverseList(mid.next)
312312
mid.next = nil
313-
313+
314314
mergeTwoLists(head, secondHalf)
315315
}
316-
316+
317317
private func middleNode(_ head: ListNode?) -> ListNode {
318318
var slow = head
319319
var fast = head
@@ -323,7 +323,7 @@ class Solution {
323323
}
324324
return slow!
325325
}
326-
326+
327327
private func reverseList(_ head: ListNode?) -> ListNode? {
328328
var prev: ListNode? = nil
329329
var curr = head
@@ -335,20 +335,20 @@ class Solution {
335335
}
336336
return prev
337337
}
338-
338+
339339
private func mergeTwoLists(_ l1: ListNode?, _ l2: ListNode?) {
340340
var l1 = l1
341341
var l2 = l2
342342
while l1 != nil && l2 != nil {
343343
let l1Next = l1?.next
344344
let l2Next = l2?.next
345-
345+
346346
l1?.next = l2
347347
if l1Next == nil {
348348
break
349349
}
350350
l2?.next = l1Next
351-
351+
352352
l1 = l1Next
353353
l2 = l2Next
354354
}

‎lcof2/剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器/README.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,12 +223,12 @@ public:
223223
class RandomizedSet {
224224
private var m: [Int: Int]
225225
private var a: [Int]
226-
226+
227227
init() {
228228
self.m = [Int: Int]()
229229
self.a = [Int]()
230230
}
231-
231+
232232
func insert(_ val: Int) -> Bool {
233233
if m[val] != nil {
234234
return false
@@ -237,7 +237,7 @@ class RandomizedSet {
237237
a.append(val)
238238
return true
239239
}
240-
240+
241241
func remove(_ val: Int) -> Bool {
242242
if let idx = m[val] {
243243
let last = a.count - 1
@@ -251,7 +251,7 @@ class RandomizedSet {
251251
}
252252
return false
253253
}
254-
254+
255255
func getRandom() -> Int {
256256
return a[Int.random(in: 0..<a.count)]
257257
}

‎lcof2/剑指 Offer II 032. 有效的变位词/README.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,20 +180,20 @@ class Solution {
180180
if m != n || s == t {
181181
return false
182182
}
183-
183+
184184
var cnt = [Int](repeating: 0, count: 26)
185-
185+
186186
for (sc, tc) in zip(s, t) {
187187
cnt[Int(sc.asciiValue! - Character("a").asciiValue!)] += 1
188188
cnt[Int(tc.asciiValue! - Character("a").asciiValue!)] -= 1
189189
}
190-
190+
191191
for x in cnt {
192192
if x != 0 {
193193
return false
194194
}
195195
}
196-
196+
197197
return true
198198
}
199199
}

‎lcof2/剑指 Offer II 033. 变位词组/README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,15 +164,15 @@ function groupAnagrams(strs: string[]): string[][] {
164164
class Solution {
165165
func groupAnagrams(_ strs: [String]) -> [[String]] {
166166
var d = [String: [String]]()
167-
167+
168168
for s in strs {
169169
let sortedStr = String(s.sorted())
170170
if d[sortedStr] == nil {
171171
d[sortedStr] = [String]()
172172
}
173173
d[sortedStr]!.append(s)
174174
}
175-
175+
176176
return Array(d.values)
177177
}
178178
}

‎lcof2/剑指 Offer II 034. 外星语言是否排序/README.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,21 +205,21 @@ function isAlienSorted(words: string[], order: string): boolean {
205205
class Solution {
206206
func isAlienSorted(_ words: [String], _ order: String) -> Bool {
207207
var index = [Character: Int]()
208-
208+
209209
for (i, char) in order.enumerated() {
210210
index[char] = i
211211
}
212-
212+
213213
for i in 0..<words.count - 1 {
214214
let w1 = Array(words[i])
215215
let w2 = Array(words[i + 1])
216216
let l1 = w1.count
217217
let l2 = w2.count
218-
218+
219219
for j in 0..<max(l1, l2) {
220220
let i1 = j >= l1 ? -1 : index[w1[j]]!
221221
let i2 = j >= l2 ? -1 : index[w2[j]]!
222-
222+
223223
if i1 > i2 {
224224
return false
225225
}

‎lcof2/剑指 Offer II 035. 最小时间差/README.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,22 +175,22 @@ class Solution {
175175
if timePoints.count > 24 * 60 {
176176
return 0
177177
}
178-
178+
179179
var mins = [Int]()
180-
180+
181181
for t in timePoints {
182182
let time = t.split(separator: ":").map { Int(0ドル)! }
183183
mins.append(time[0] * 60 + time[1])
184184
}
185-
185+
186186
mins.sort()
187187
mins.append(mins[0] + 24 * 60)
188-
188+
189189
var ans = Int.max
190190
for i in 1..<mins.count {
191191
ans = min(ans, mins[i] - mins[i - 1])
192192
}
193-
193+
194194
return ans
195195
}
196196
}

‎solution/0000-0099/0088.Merge Sorted Array/README.md‎

Lines changed: 13 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -157,46 +157,24 @@ function merge(nums1: number[], m: number, nums2: number[], n: number): void {
157157
}
158158
```
159159

160-
#### TypeScript
161-
162-
```ts
163-
/**
164-
Do not return anything, modify nums1 in-place instead.
165-
*/
166-
function merge(nums1: number[], m: number, nums2: number[], n: number): void {
167-
nums1.length = m;
168-
nums2.length = n;
169-
nums1.push(...nums2);
170-
nums1.sort((a, b) => a - b);
171-
}
172-
```
173-
174160
#### Rust
175161

176162
```rust
177163
impl Solution {
178164
pub fn merge(nums1: &mut Vec<i32>, m: i32, nums2: &mut Vec<i32>, n: i32) {
179-
let (mut m, mut n) = (m as usize, n as usize);
180-
for i in (0..m + n).rev() {
181-
nums1[i] = match (m == 0, n == 0) {
182-
(true, false) => {
183-
n -= 1;
184-
nums2[n]
185-
}
186-
(false, true) => {
187-
m -= 1;
188-
nums1[m]
189-
}
190-
(_, _) => {
191-
if nums1[m - 1] > nums2[n - 1] {
192-
m -= 1;
193-
nums1[m]
194-
} else {
195-
n -= 1;
196-
nums2[n]
197-
}
198-
}
199-
};
165+
let mut k = (m + n - 1) as usize;
166+
let mut i = (m - 1) as isize;
167+
let mut j = (n - 1) as isize;
168+
169+
while j >= 0 {
170+
if i >= 0 && nums1[i as usize] > nums2[j as usize] {
171+
nums1[k] = nums1[i as usize];
172+
i -= 1;
173+
} else {
174+
nums1[k] = nums2[j as usize];
175+
j -= 1;
176+
}
177+
k -= 1;
200178
}
201179
}
202180
}

‎solution/0000-0099/0088.Merge Sorted Array/README_EN.md‎

Lines changed: 13 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -154,46 +154,24 @@ function merge(nums1: number[], m: number, nums2: number[], n: number): void {
154154
}
155155
```
156156

157-
#### TypeScript
158-
159-
```ts
160-
/**
161-
Do not return anything, modify nums1 in-place instead.
162-
*/
163-
function merge(nums1: number[], m: number, nums2: number[], n: number): void {
164-
nums1.length = m;
165-
nums2.length = n;
166-
nums1.push(...nums2);
167-
nums1.sort((a, b) => a - b);
168-
}
169-
```
170-
171157
#### Rust
172158

173159
```rust
174160
impl Solution {
175161
pub fn merge(nums1: &mut Vec<i32>, m: i32, nums2: &mut Vec<i32>, n: i32) {
176-
let (mut m, mut n) = (m as usize, n as usize);
177-
for i in (0..m + n).rev() {
178-
nums1[i] = match (m == 0, n == 0) {
179-
(true, false) => {
180-
n -= 1;
181-
nums2[n]
182-
}
183-
(false, true) => {
184-
m -= 1;
185-
nums1[m]
186-
}
187-
(_, _) => {
188-
if nums1[m - 1] > nums2[n - 1] {
189-
m -= 1;
190-
nums1[m]
191-
} else {
192-
n -= 1;
193-
nums2[n]
194-
}
195-
}
196-
};
162+
let mut k = (m + n - 1) as usize;
163+
let mut i = (m - 1) as isize;
164+
let mut j = (n - 1) as isize;
165+
166+
while j >= 0 {
167+
if i >= 0 && nums1[i as usize] > nums2[j as usize] {
168+
nums1[k] = nums1[i as usize];
169+
i -= 1;
170+
} else {
171+
nums1[k] = nums2[j as usize];
172+
j -= 1;
173+
}
174+
k -= 1;
197175
}
198176
}
199177
}
Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,18 @@
11
impl Solution {
22
pub fn merge(nums1: &mut Vec<i32>, m: i32, nums2: &mut Vec<i32>, n: i32) {
3-
let (mut m, mut n) = (m as usize, n as usize);
4-
for i in (0..m + n).rev() {
5-
nums1[i] = match (m == 0, n == 0) {
6-
(true, false) => {
7-
n -= 1;
8-
nums2[n]
9-
}
10-
(false, true) => {
11-
m -= 1;
12-
nums1[m]
13-
}
14-
(_, _) => {
15-
if nums1[m - 1] > nums2[n - 1] {
16-
m -= 1;
17-
nums1[m]
18-
} else {
19-
n -= 1;
20-
nums2[n]
21-
}
22-
}
23-
};
3+
let mut k = (m + n - 1) as usize;
4+
let mut i = (m - 1) as isize;
5+
let mut j = (n - 1) as isize;
6+
7+
while j >= 0 {
8+
if i >= 0 && nums1[i as usize] > nums2[j as usize] {
9+
nums1[k] = nums1[i as usize];
10+
i -= 1;
11+
} else {
12+
nums1[k] = nums2[j as usize];
13+
j -= 1;
14+
}
15+
k -= 1;
2416
}
2517
}
2618
}

0 commit comments

Comments
(0)

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