https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&tqId=23286&ru=%2Fpractice%2Ff9f78ca89ad643c99701a7142bd59f5d&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D13%26type%3D13
描述
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。
数据范围: 0\leq n\leq10000≤n≤1000
要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。
如当输入链表{1,2,3}时,
经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
以上转换过程如下图所示:
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode ReverseList(ListNode head) { if(head==null)return null; ListNode pre= null; ListNode cur=head; while(cur!=null) { ListNode next=cur.next; cur.next=pre; pre=cur; cur=next; } return pre; } }
示例1
输入:
{1,2,3}
返回值:
{3,2,1}
1.定义空节点
2.定义当前节点
3.定义后续节点
4.每次记录下一个节点,改变当前节点指向,将前一个节点指向当前节点,当前节点指向下一个节点
浙公网安备 33010602011771号