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 d250132

Browse files
Merge branch 'youngyangyang04:master' into master
2 parents 82ab170 + c855948 commit d250132

File tree

51 files changed

+864
-169
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+864
-169
lines changed

‎problems/0039.组合总和.md‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,34 @@ var combinationSum = function(candidates, target) {
392392
};
393393
```
394394

395+
## TypeScript
396+
397+
```typescript
398+
function combinationSum(candidates: number[], target: number): number[][] {
399+
const resArr: number[][] = [];
400+
function backTracking(
401+
candidates: number[], target: number,
402+
startIndex: number, route: number[], curSum: number
403+
): void {
404+
if (curSum > target) return;
405+
if (curSum === target) {
406+
resArr.push(route.slice());
407+
return
408+
}
409+
for (let i = startIndex, length = candidates.length; i < length; i++) {
410+
let tempVal: number = candidates[i];
411+
route.push(tempVal);
412+
backTracking(candidates, target, i, route, curSum + tempVal);
413+
route.pop();
414+
}
415+
}
416+
backTracking(candidates, target, 0, [], 0);
417+
return resArr;
418+
};
419+
```
420+
395421
## C
422+
396423
```c
397424
int* path;
398425
int pathTop;

‎problems/0040.组合总和II.md‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,7 @@ var combinationSum2 = function(candidates, target) {
532532
};
533533
```
534534
**使用used去重**
535+
535536
```js
536537
var combinationSum2 = function(candidates, target) {
537538
let res = [];
@@ -562,6 +563,37 @@ var combinationSum2 = function(candidates, target) {
562563
};
563564
```
564565

566+
## TypeScript
567+
568+
```typescript
569+
function combinationSum2(candidates: number[], target: number): number[][] {
570+
candidates.sort((a, b) => a - b);
571+
const resArr: number[][] = [];
572+
function backTracking(
573+
candidates: number[], target: number,
574+
curSum: number, startIndex: number, route: number[]
575+
) {
576+
if (curSum > target) return;
577+
if (curSum === target) {
578+
resArr.push(route.slice());
579+
return;
580+
}
581+
for (let i = startIndex, length = candidates.length; i < length; i++) {
582+
if (i > startIndex && candidates[i] === candidates[i - 1]) {
583+
continue;
584+
}
585+
let tempVal: number = candidates[i];
586+
route.push(tempVal);
587+
backTracking(candidates, target, curSum + tempVal, i + 1, route);
588+
route.pop();
589+
590+
}
591+
}
592+
backTracking(candidates, target, 0, 0, []);
593+
return resArr;
594+
};
595+
```
596+
565597
## C
566598

567599
```c

‎problems/0046.全排列.md‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,34 @@ var permute = function(nums) {
331331

332332
```
333333

334+
## TypeScript
335+
336+
```typescript
337+
function permute(nums: number[]): number[][] {
338+
const resArr: number[][] = [];
339+
const helperSet: Set<number> = new Set();
340+
backTracking(nums, []);
341+
return resArr;
342+
function backTracking(nums: number[], route: number[]): void {
343+
if (route.length === nums.length) {
344+
resArr.push(route.slice());
345+
return;
346+
}
347+
let tempVal: number;
348+
for (let i = 0, length = nums.length; i < length; i++) {
349+
tempVal = nums[i];
350+
if (!helperSet.has(tempVal)) {
351+
route.push(tempVal);
352+
helperSet.add(tempVal);
353+
backTracking(nums, route);
354+
route.pop();
355+
helperSet.delete(tempVal);
356+
}
357+
}
358+
}
359+
};
360+
```
361+
334362
### C
335363

336364
```c

‎problems/0047.全排列II.md‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,34 @@ var permuteUnique = function (nums) {
292292

293293
```
294294

295+
### TypeScript
296+
297+
```typescript
298+
function permuteUnique(nums: number[]): number[][] {
299+
nums.sort((a, b) => a - b);
300+
const resArr: number[][] = [];
301+
const usedArr: boolean[] = new Array(nums.length).fill(false);
302+
backTracking(nums, []);
303+
return resArr;
304+
function backTracking(nums: number[], route: number[]): void {
305+
if (route.length === nums.length) {
306+
resArr.push(route.slice());
307+
return;
308+
}
309+
for (let i = 0, length = nums.length; i < length; i++) {
310+
if (i > 0 && nums[i] === nums[i - 1] && usedArr[i - 1] === false) continue;
311+
if (usedArr[i] === false) {
312+
route.push(nums[i]);
313+
usedArr[i] = true;
314+
backTracking(nums, route);
315+
usedArr[i] = false;
316+
route.pop();
317+
}
318+
}
319+
}
320+
};
321+
```
322+
295323
### Swift
296324

297325
```swift

‎problems/0063.不同路径II.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,8 @@ public:
184184
};
185185
```
186186

187-
* 时间复杂度:$O(n ×ばつ m)$,n、m 分别为obstacleGrid 长度和宽度
188-
* 空间复杂度:$O(m)$
187+
* 时间复杂度:O(n ×ばつ m),n、m 分别为obstacleGrid 长度和宽度
188+
* 空间复杂度:O(m)
189189

190190

191191
## 总结

‎problems/0078.子集.md‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,28 @@ var subsets = function(nums) {
272272
};
273273
```
274274

275+
## TypeScript
276+
277+
```typescript
278+
function subsets(nums: number[]): number[][] {
279+
const resArr: number[][] = [];
280+
backTracking(nums, 0, []);
281+
return resArr;
282+
function backTracking(nums: number[], startIndex: number, route: number[]): void {
283+
resArr.push(route.slice());
284+
let length = nums.length;
285+
if (startIndex === length) return;
286+
for (let i = startIndex; i < length; i++) {
287+
route.push(nums[i]);
288+
backTracking(nums, i + 1, route);
289+
route.pop();
290+
}
291+
}
292+
};
293+
```
294+
275295
## C
296+
276297
```c
277298
int* path;
278299
int pathTop;

‎problems/0090.子集II.md‎

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,28 @@ var subsetsWithDup = function(nums) {
318318

319319
```
320320

321+
### TypeScript
322+
323+
```typescript
324+
function subsetsWithDup(nums: number[]): number[][] {
325+
nums.sort((a, b) => a - b);
326+
const resArr: number[][] = [];
327+
backTraking(nums, 0, []);
328+
return resArr;
329+
function backTraking(nums: number[], startIndex: number, route: number[]): void {
330+
resArr.push(route.slice());
331+
let length: number = nums.length;
332+
if (startIndex === length) return;
333+
for (let i = startIndex; i < length; i++) {
334+
if (i > startIndex && nums[i] === nums[i - 1]) continue;
335+
route.push(nums[i]);
336+
backTraking(nums, i + 1, route);
337+
route.pop();
338+
}
339+
}
340+
};
341+
```
342+
321343
### C
322344

323345
```c
@@ -387,7 +409,7 @@ int** subsetsWithDup(int* nums, int numsSize, int* returnSize, int** returnColum
387409
}
388410
```
389411
390-
## Swift
412+
### Swift
391413
392414
```swift
393415
func subsetsWithDup(_ nums: [Int]) -> [[Int]] {

‎problems/0093.复原IP地址.md‎

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,45 @@ var restoreIpAddresses = function(s) {
455455
};
456456
```
457457

458+
## TypeScript
459+
460+
```typescript
461+
function isValidIpSegment(str: string): boolean {
462+
let resBool: boolean = true;
463+
let tempVal: number = Number(str);
464+
if (
465+
str.length === 0 || isNaN(tempVal) ||
466+
tempVal > 255 || tempVal < 0 ||
467+
(str.length > 1 && str[0] === '0')
468+
) {
469+
resBool = false;
470+
}
471+
return resBool;
472+
}
473+
function restoreIpAddresses(s: string): string[] {
474+
const resArr: string[] = [];
475+
backTracking(s, 0, []);
476+
return resArr;
477+
function backTracking(s: string, startIndex: number, route: string[]): void {
478+
let length: number = s.length;
479+
if (route.length === 4 && startIndex >= length) {
480+
resArr.push(route.join('.'));
481+
return;
482+
}
483+
if (route.length === 4 || startIndex >= length) return;
484+
let tempStr: string = '';
485+
for (let i = startIndex + 1; i <= Math.min(length, startIndex + 3); i++) {
486+
tempStr = s.slice(startIndex, i);
487+
if (isValidIpSegment(tempStr)) {
488+
route.push(s.slice(startIndex, i));
489+
backTracking(s, i, route);
490+
route.pop();
491+
}
492+
}
493+
}
494+
};
495+
```
496+
458497
## Go
459498

460499
回溯(对于前导 0的IP(特别注意s[startIndex]=='0'的判断,不应该写成s[startIndex]==0,因为s截取出来不是数字))

‎problems/0098.验证二叉搜索树.md‎

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,28 @@ class Solution:
408408
return True
409409

410410
```
411-
## Go
411+
```python
412+
# 遵循Carl的写法,只添加了节点判断的部分
413+
class Solution:
414+
def isValidBST(self, root: TreeNode) -> bool:
415+
# method 2
416+
que, pre = [], None
417+
while root or que:
418+
while root:
419+
que.append(root)
420+
root = root.left
421+
root = que.pop()
422+
# 对第一个节点只做记录,对后面的节点进行比较
423+
if pre is None:
424+
pre = root.val
425+
else:
426+
if pre >= root.val: return False
427+
pre = root.val
428+
root = root.right
429+
return True
430+
```
431+
432+
## Go
412433

413434
```Go
414435
import "math"

‎problems/0101.对称二叉树.md‎

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -437,41 +437,6 @@ class Solution:
437437
return True
438438
```
439439

440-
层序遍历
441-
442-
```python
443-
class Solution:
444-
def isSymmetric(self, root: TreeNode) -> bool:
445-
if not root: return True
446-
que, cnt = [[root.left, root.right]], 1
447-
while que:
448-
nodes, tmp, sign = que.pop(), [], False
449-
for node in nodes:
450-
if not node:
451-
tmp.append(None)
452-
tmp.append(None)
453-
else:
454-
if node.left:
455-
tmp.append(node.left)
456-
sign = True
457-
else:
458-
tmp.append(None)
459-
if node.right:
460-
tmp.append(node.right)
461-
sign = True
462-
else:
463-
tmp.append(None)
464-
p1, p2 = 0, len(nodes) - 1
465-
while p1 < p2:
466-
if (not nodes[p1] and nodes[p2]) or (nodes[p1] and not nodes[p2]): return False
467-
elif nodes[p1] and nodes[p2] and nodes[p1].val != nodes[p2].val: return False
468-
p1 += 1
469-
p2 -= 1
470-
if sign: que.append(tmp)
471-
cnt += 1
472-
return True
473-
```
474-
475440
## Go
476441

477442
```go

0 commit comments

Comments
(0)

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