存储数据:List/LinkedList

Python的List是用连续数组实现的。所以直接用List来作为存储数据的数组就OK了。

链表的实现也很简单,下面是链表的形式。下一节我们看如何用链表简单实现栈和队列。

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

class LinkedList:
    def __init__(self):
        self.tail = ListNode()
        self.head = ListNode(next=self.tail)

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,
并返回移除后数组的新长度。

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
def removeElement(nums, val):
    l, r = 0, len(nums)-1
    while l<=r:
        if nums[l]==val:
            nums[l] = nums[r]
            r -= 1
        else:
            l += 1
    return l

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,
使每个元素 最多出现两次 ,返回删除后数组的新长度。

输入:nums = [1,1,1,2,2,3]
输出:5, nums = [1,1,2,2,3]
def removeDuplicates(nums):
    j = 2
    for i in range(2, len(nums)):
        if nums[i] != nums[j - 2]:
            nums[j] = nums[i]
            j += 1
    return j

Last updated

Was this helpful?