File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff 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+
317365Ruby:
318366
319367``` ruby
You can’t perform that action at this time.
0 commit comments