• [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;
    	    }
    }


  • 相关阅读:
    Mysql数据库改名
    查看数据库大小或者表大小
    Bootstarp 水平垂直居中
    Java Collection.sort 排序升序, 降序问题
    Mysql 函数, 存储过程, 任务调度
    Mysql 日期类型 date、datetime、timestamp.
    Mysql 获取当天,昨天,本周,本月,上周,上月的起始时间
    Mysql 事件event_scheduler是OFF
    Java 文件读取
    Spring cron 定时调度配置
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10686130.html
  • Copyright © 2020-2023  润新知