zoukankan      html  css  js  c++  java
  • [LeetCode]Swap Nodes in Pairs

    版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/yeweiouyang/article/details/37532101

    题目:给定一个单链表,要求对链表每两两节点进行交换,样例: 1->2->3->4, 交换后 2->1->4->3.

    算法:链表操作,设置4个指针

    pre:左边界,维护交换后链表的结构

    swapA:指向要交换的第一个节点

    swapB:指向要交换的第二个节点

    post:右边界,维护交换后链表的结构


    链表:...->1->2->3->4

    相应:pre  swapA  swapB  post

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
        public ListNode swapPairs(ListNode head) {
    	        if (null == head) {
    	        	return null;
    	        }
    	    	
    	    	ListNode pre = head;
    	        ListNode post = null;
    	        ListNode swapA = head;
    	        ListNode swapB = null;
    	        while (null != pre) {
    	        	if (head == pre) {
    	        		// begin with the list head
    	        		if (null != pre.next) {
    	        			swapA = pre;
    	        			swapB = swapA.next;
    	        			post = swapB.next;
    	        			
    	        			// swap node pair
    	        			swapA.next = post;
    	        			swapB.next = swapA;
    	        			head = swapB;
    	        		} else {
    	        			break;
    	        		}
    	        	} else {
    //	        		pre = swapA;  // after swap
    	        		if (null != pre.next) {
    		        		swapA = pre.next;
    		        		if (null != swapA.next) {
    		        			swapB = swapA.next;
    		        			post = swapB.next;
    		        			
    		        			// swap node pair
    		        			pre.next = swapB;
    		            		swapB.next = swapA;
    		            		swapA.next = post;
    		        		} else {
    		        			break;  // last one node, don't swap
    		        		}
    		        	} else {
    		        		break;  // end of the list
    		        	}
    	        	}
    	        	
    	        	pre = swapA;  // after swap
    	        }
    	        
    	        return head;
    	    }
    }


查看全文
  • 相关阅读:
    使用UIImagePickerController时3DTouch引起的Crash问题的解决--备用
    阿帕奇证书配置
    终端编写c程序
    native2ascii 在 Mac终端的转码
    mac 下 配置 阿帕奇
    苹果电脑的坑
    iOS证书快要过期怎么办?
    An unspecified error occurred!
    一个苹果证书怎么多次使用
    多媒体开发之---live555的多线程支持,原本只是单线程,单通道
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10686130.html
  • Copyright © 2011-2022 走看看