DAY12:leetcode #24 Swap Nodes in Pairs
2016-07-27 11:04
465 查看
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
Subscribe to see which companies asked this question
# 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
"""
if head == None:
return None
if head.next == None:
return head
temp = head.next
head.next = head.next.next
temp.next = head
head = temp
pointer_list = [head,head.next,head.next.next]
if pointer_list[2]:
pointer_list.append(pointer_list[2].next)
del pointer_list[0]
else:
return head
while pointer_list[2]:
temp = pointer_list[0].next
temp.next = pointer_list[2].next
pointer_list[0].next = pointer_list[2]
pointer_list[2].next = temp
pointer_list.append(pointer_list[1].next)
del pointer_list[0]
if pointer_list[2]:
pointer_list.append(pointer_list[2].next)
del pointer_list[1]
else:
break
return 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.
Subscribe to see which companies asked this question
# 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
"""
if head == None:
return None
if head.next == None:
return head
temp = head.next
head.next = head.next.next
temp.next = head
head = temp
pointer_list = [head,head.next,head.next.next]
if pointer_list[2]:
pointer_list.append(pointer_list[2].next)
del pointer_list[0]
else:
return head
while pointer_list[2]:
temp = pointer_list[0].next
temp.next = pointer_list[2].next
pointer_list[0].next = pointer_list[2]
pointer_list[2].next = temp
pointer_list.append(pointer_list[1].next)
del pointer_list[0]
if pointer_list[2]:
pointer_list.append(pointer_list[2].next)
del pointer_list[1]
else:
break
return head
代码比较啰嗦,有机会简化一下
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法