24. Swap Nodes in Pairs 交换相邻链表节点
思路:情况可以分为三类:A:输入没有节点;B:输入1个节点;C:输入多个结点;其中情况C:在用了思考了交换节点,两两分组之后可以规约成:(1):奇数节点,也就是交换完成后,剩下一个前面的情况B;(2)偶数节点:刚好交完完成;
分别从这两个大类型出发设计算法如下:
public class Solution { public ListNode swapPairs(ListNode head) { if(head == null) return null; ListNode dump = new ListNode(-1); ListNode index = dump; while(head != null) { if(head.next == null) { index.next = head; index = index.next; head = head.next; } else { ListNode tmp = head; head = head.next.next; index.next = tmp.next; tmp.next.next = tmp; tmp.next = null; index = index.next.next; } } return dump.next; } }

浙公网安备 33010602011771号