Skip to content

Commit e003c09

Browse files
Merge pull request youngyangyang04#1003 from xiaofei-2020/ts2
添加(0206.翻转链表.md):增加typescript版本
2 parents 48128fd + d2904c2 commit e003c09

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

problems/0206.翻转链表.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,54 @@ var reverseList = function(head) {
314314
};
315315
```
316316

317+
TypeScript:
318+
319+
```typescript
320+
// 双指针法
321+
function reverseList(head: ListNode | null): ListNode | null {
322+
let preNode: ListNode | null = null,
323+
curNode: ListNode | null = head,
324+
tempNode: ListNode | null;
325+
while (curNode) {
326+
tempNode = curNode.next;
327+
curNode.next = preNode;
328+
preNode = curNode;
329+
curNode = tempNode;
330+
}
331+
return preNode;
332+
};
333+
334+
// 递归(从前往后翻转)
335+
function reverseList(head: ListNode | null): ListNode | null {
336+
function recur(preNode: ListNode | null, curNode: ListNode | null): ListNode | null {
337+
if (curNode === null) return preNode;
338+
let tempNode: ListNode | null = curNode.next;
339+
curNode.next = preNode;
340+
preNode = curNode;
341+
curNode = tempNode;
342+
return recur(preNode, curNode);
343+
}
344+
return recur(null, head);
345+
};
346+
347+
// 递归(从后往前翻转)
348+
function reverseList(head: ListNode | null): ListNode | null {
349+
if (head === null) return null;
350+
let newHead: ListNode | null;
351+
function recur(node: ListNode | null, preNode: ListNode | null): void {
352+
if (node.next === null) {
353+
newHead = node;
354+
newHead.next = preNode;
355+
} else {
356+
recur(node.next, node);
357+
node.next = preNode;
358+
}
359+
}
360+
recur(head, null);
361+
return newHead;
362+
};
363+
```
364+
317365
Ruby:
318366

319367
```ruby

0 commit comments

Comments
 (0)