《LeetCode力扣练习》代码随想录——双指针法(反转链表—Java)
刷题思路来源于 代码随想录
206. 反转链表
-
双指针
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode reverseList(ListNode head) { if(head==null){ return null; } ListNode slow=null; ListNode fast=head; while(fast!=null){ ListNode temp=fast.next; fast.next=slow; slow=fast; fast=temp; } return slow; } }
-
递归
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode reverseList(ListNode head) { if(head==null){ return null; } return recursion(null,head); } private ListNode recursion(ListNode slow,ListNode fast){ if(fast==null){ return slow; } ListNode temp=fast.next; fast.next=slow; return recursion(fast,temp); } }