每天一到算法题-链表
白话描述:反转一个单链表。进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnnhm6/
白话实现:傻瓜解法很臃肿,官方的迭代或递归确实没想到
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null){
return null;
}
else{
ListNode tmp=head;
int count=1;
while(tmp.next!=null){
tmp=tmp.next;
count++;
}
int[] s=new int[count];
for(int i=0;i<count;i++){
s[i]=head.val;
head=head.next;
}
ListNode head2=new ListNode(s[count-1]);
if(count==1){
return head2;
}
else{
ListNode tmp2=head2;
for(int i=count-2;i>=0;i--){
ListNode node=new ListNode(s[i]);
tmp2.next=node;
tmp2=tmp2.next;
}
return head2;
}
}
}
}