版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。版权
算法相关专栏收录该内容
7 篇文章0 订阅
订阅专栏
LeetCode
递归
使用递归的3个条件大问题可以拆解成两个子问题子问题的求解方式和大问题一样存在最小子问题public ListNodereverseList(ListNode head){//最小子问题,结束if(head==null|| head.next==null)return head;//递的过程,一次次拆解问题 ListNode newHead=reverseList(head.next);//归的过程,反转 head.next.next= head; head.next=null;return newHead;}
迭代
public static ListNodereverseListIterative(ListNode head){ ListNode prev=null;//前指针节点 ListNode curr= head;//当前指针节点 ListNode next;//每次循环,都将当前节点指向它前面的节点//然后当前节点和前节点后移while(curr!=null){//临时节点,暂存当前节点的下一节点,用于后移//因为接下来curr.next进行赋值后将会断链 next= curr.next;//将当前节点指向它前面的节点 curr.next= prev;//前指针后移 prev= curr;//当前指针后移 curr= next;}return prev;}
参考资料