FTPrep, 24 Swap Nodes in Pairs

来源:互联网 发布:ubuntu怎么删除目录 编辑:程序博客网 时间:2024/06/08 11:01

很简单一道题,平铺直述的做法就是按照list的数据结构来做。之后按照递归的做法做一下,受前面merge2List的递归的启发,充分挖掘list的深层的结构特点,也就是说list的处理一般都可以用递归,就看你能不能凑齐递归的三要素。

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode swapPairs(ListNode head) {        if(head==null || head.next ==null) return head;        ListNode dummy = new ListNode(0);        dummy.next = head;        ListNode curr= dummy;        ListNode first, second;        while(curr.next!=null&& curr.next.next!=null){            first = curr.next;            second=first.next;            first.next=second.next;            second.next=first;            curr.next=second;            curr=first;        }        return dummy.next;    }}
以上代码:3 minutes bug-free

下面是递归代码,找出三要素,方法论是:处理好当前状态即可:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode swapPairs(ListNode head) {        if(head==null || head.next== null) return head;        ListNode first=head;        ListNode second=first.next;        first.next=swapPairs(second.next);        second.next=first;        return second;    }}
果然代码更加容易了,就是只关心当面状态的处理,把未知的部分看成一个整体,这个整体就是要递归的部分,即调用自身函数的部分。

同样也是3min bug-free



原创粉丝点击