博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 24. Swap Nodes in Pairs 20170424
阅读量:6829 次
发布时间:2019-06-26

本文共 1214 字,大约阅读时间需要 4 分钟。

 

Given a linked list, swap every two adjacent nodes and return its head.

For example,

Given 1->2->3->4, you should return the list as 2->1->4->3.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

 

 to see which companies asked this question.

Show Tags
Show Similar Problems
 题目大意:将链表中的节点两两交换,比如给定1->2->3->4,变换之后变为2->1->4->3.
解题思路:为了计算方便可以加入一个头结点,比如0->1->2->3->4。比较原始列表和变换列表,可知道变换后结果为0->2->1->3,需要将0的结点指向下一个结点的指针指向2结点,1结点指向下一个结点的指针指向3,然后2结点指针指向1结点。此时用一个begin结点代表起点0结点,用before和after表示每对需要调换的对子的第一个结点。第一次变化时,结束该次变换后before标记的结点往右移一位,after的标记的结点往后移两位,后面的变化中before和after标记的结点每次都往后移两位
 

# Definition for singly-linked list.

# class ListNode(object):
  # def __init__(self, x):
    # self.val = x
    # self.next = None

class Solution(object):

  def swapPairs(self, head):
    """
    :type head: ListNode
    :rtype: ListNode
    """
    begin = ListNode(0)
    begin.next = head
    before, after = begin, head
    while after and after.next:
      before.next = after.next
      after.next = before.next.next
      before.next.next = after
      before, after = after,after.next
    return begin.next

 

转载于:https://www.cnblogs.com/fangdai/p/6759858.html

你可能感兴趣的文章
node论坛练手
查看>>
将object强制转换成int效率测试
查看>>
[Python3网络爬虫开发实战] 1.7.3-Appium的安装
查看>>
magento 购物车 首页 显示
查看>>
mapper.xml
查看>>
微信小程序之滚动图片
查看>>
NTP多种模式的配置
查看>>
html5--4-4 audio元素/格式的转换
查看>>
第 10 章 文件和异常
查看>>
获取物理路径相关
查看>>
用 Flask 来写个轻博客 (2) — Hello World!
查看>>
(2/24) 快速上手一个webpack的demo
查看>>
不高兴的o( ̄ヘ ̄o#)JJ
查看>>
ruby 镜像安装
查看>>
BZOJ4555: [Tjoi2016&Heoi2016]求和
查看>>
如何用Axure快速制作APP交互原型
查看>>
微软正式开源Blazor,将.NET带回到浏览器
查看>>
Linux中普通用户配置sudo权限(带密或免密)
查看>>
poj1753-Flip Game BFS+位运算
查看>>
DeDe调用body文章内容
查看>>