数据结构与算法 —— 链表linked list(03)
2018-06-18 02:18:57来源:未知 阅读 ()
继续关于linked list的算法题:
删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素使得每个元素只留下一个。
案例:
给定 1->1->2
,返回 1->2
给定 1->1->2->3->3
,返回 1->2->3
解题思路:
这道题很简单,只需要比较当前节点和下一个节点,相同,则当前节点的指针指向下一节点的下一节点,不相同,递归下一节点。还是要注意同样的问题,单向链表是只能向后不能向前的,所以,要保留首节点。
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def deleteDuplicates(self, head): """ :type head: ListNode :rtype: ListNode """ if not head: return None pre = head while pre.next: if pre.val == pre.next.val: pre.next = pre.next.next else: pre = pre.next return head
我们继续来看另外一道题目
交换相邻结点
给定一个链表,对每两个相邻的结点作交换并返回头节点。
例如:
给定 1->2->3->4
,你应该返回 2->1->4->3
。
你的算法应该只使用额外的常数空间。不要修改列表中的值,只有节点本身可以??更改。
解题思路:
这里思路很明确,每次循环两个变量,在循环中维护两个变量,temp1和temp2,分别代表每当前次循环的第一个节点和第二个节点,交换他们的位置,并把原来的pre指针指向调整位置后的第一个节点,第二个节点的指针指向后续指针。dump代表新列表的头元素,pre代表每次循环的前置指针元素。代码如下:
# 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 """ dump = pre = ListNode(-1) if not (head and head.next): return head while head and head.next: temp1 = head temp2 = head.next temp1.next = temp2.next temp2.next = temp1 pre.next = temp2 pre = temp1 head = temp1.next return dump.next
递归的实现代码如下:
# 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 not (head and head.next): return head new_head = head.next head.next = self.swapPairs(head.next.next) new_head.next=head return new_head
coding交流群:226704167,郑州程序员群:59236263愿和各位一起进步!
微信公众号:欢迎关注
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:SVM算法简单应用
- Python 数据结构理解分享 2019-07-24
- django修改表数据结构后报错的解决办法 2019-07-24
- 20190710-汉诺塔算法 2019-07-24
- Python用摘要算法生成token及检验token 2019-07-24
- Python-04-数据结构 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash