《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);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)