ListNode单链表结构
创建一个ListNode:
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 12 23:13:38 2019
"""
class Node(object):
def __init__(self):
self.val = None
self.next = None
class Node_handle():
def __init__(self):
self.cur_node = None
def add(self,data):
node = Node()
node.val = data
node.next = self.cur_node
self.cur_node = node
return node
l1 = Node()
ListNode_ = Node_handle()
l1 = ListNode_.add(2)
l1 = ListNode_.add(4)
l1 = ListNode_.add(3)
while l1:
print ('\nnode: ', l1, ' value: ', l1.val, ' next: ', l1.next)
l1 = l1.next输出如下:
node:<__main__.Node object at 0x08BF2930>value:3next:<__main__.Node object at 0x08BF2350>
node:<__main__.Node object at 0x08BF2350>value:4next:<__main__.Node object at 0x08BF2830>
node:<__main__.Node object at 0x08BF2830>value:2next:None
参考:
【1】ListNode的Python实现
【2】使用python实现链表操作
【3】https://leetcode-cn.com/problems/add-two-numbers/submissions/
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 12 23:13:38 2019
"""
class Node(object):
def __init__(self):
self.val = None
self.next = None
class Node_handle():
def __init__(self):
self.cur_node = None
def add(self,data):
node = Node()
node.val = data
node.next = self.cur_node
self.cur_node = node
return node
l1 = Node()
ListNode_1 = Node_handle()
l1 = ListNode_1.add(2)
l1 = ListNode_1.add(4)
l1 = ListNode_1.add(3)
while l1:
print ('\nnode: ', l1, ' value: ', l1.val, ' next: ', l1.next)
l1 = l1.next
l2 = Node()
ListNode_2 = Node_handle()
l2 = ListNode_2.add(5)
l2 = ListNode_2.add(6)
l2 = ListNode_2.add(4)
while l2:
print ('\nnode: ', l2, ' value: ', l2.val, ' next: ', l2.next)
l2 = l2.next (1)删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
答题代码如下:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def deleteDuplicates(self, head: ListNode) -> ListNode:
if head is None:
return None
pre = ListNode(-100000)
pre.next = head
slow = pre
fast = pre.next
while fast :
if slow.val == fast.val:
fast = fast.next
slow.next = fast
else:
slow = slow.next
fast = fast.next
return pre.next
(2)合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
答题代码如下:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
l3 = ListNode(-1);
l4 = l3;
if not l1:
return l2
if not l2:
return l1
while(l1 is not None and l2 is not None):
if(l1.val<l2.val):
l4.next = l1
l1=l1.next
else:
l4.next = l2
l2=l2.next
l4 = l4.next
if(l1 is None):
l4.next = l2
else:
l4.next = l1
return l3.next
页:
[1]