目录

三个月算法进阶--day12

leetcode第26题删除排序数组中的重复项

class Solution:
    def removeDuplicates(self, nums: List[int]):
        if len(nums) <= 1:
            return len(nums)
        prev, ptr = 0, 1
        while ptr < len(nums):
            while ptr < len(nums) and nums[ptr] == nums[ptr-1]:
                ptr += 1
            if ptr < len(nums):
                nums[prev+1] = nums[ptr]
            else: 
                break
            prev += 1
            ptr += 1
        return prev + 1

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        a = 0
        b = 1
        while b < len(nums):
            if nums[b] == nums[a]:
                b += 1
            else:
                a += 1
                nums[a] = nums[b]
        return a + 1

def moveTower(height, fromPole, withPole, toPole):
    if height >= 1:
        moveTower(height - 1, fromPole, toPole, withPole)
        moveDisk(height, fromPole, toPole)
        moveTower(height - 1, withPole, fromPole, toPole)

def moveDisk(disk, fromPole, toPole):
    print(f"Moving dis[{disk}] from {fromPole} to {toPole}")

moveTower(3, "#1", "#2", "#3")