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


查看全文
  • 相关阅读:
    Angular Universal 学习笔记
    SAP Spartacus 如何获得当前渲染页面的 CMS 元数据
    Angular 服务器端渲染的学习笔记(二)
    Angular 服务器端渲染的学习笔记(一)
    第三方外部 Saas提供商如何跟使用 SAP 系统的客户进行对接接口集成
    如何从 SAP Spartacus Product Detail 页面,找到其 Angular 实现 Component 的位置
    具备自动刷新功能的 SAP ABAP ALV 报表
    C++学习目录
    c--条件编译
    c--文件读写--二进制
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10686130.html
  • Copyright © 2011-2022 走看看