zoukankan      html  css  js  c++  java
  • 【python刷题】数组链表去重

    数组去重

    def removeDuplicates(nums):
        n = len(nums)
        if n == 0:
            return 0
        slow,fast = 0,1
        while fast < n:
            if nums[fast] != nums[slow]:
                slow += 1
                nums[slow] = nums[fast]
            fast += 1
        return slow + 1
    
    nums = [0,0,1,1,1,1,2,2,3,3,3,4]
    res = removeDuplicates(nums)
    print(nums[:res])
    

    链表去重

    def deleteDuplicates(head):
        if not head:
            return None
        slow = head
        fast = head.next
        while fast != None:
            if fast.val == slow.val:
                slow.next = fast
                slow = slow.next
            fast = fast.next
        slow.next = None
        return head
    

    leetcode 316 去除重复字母

    class Solution:
        def removeDuplicateLetters(self, s: str) -> str:
            from collections import Counter
            stack = []
            instack = {chr(i):-1 for i in range(256)}
            count = Counter(s)
            for c in s:
                count[c] -= 1
                if instack[c] == 1:
                    continue
                while len(stack) > 0 and stack[-1] > c:
                    if count[stack[-1]] == 0:
                        break
                    instack[stack.pop()] = 0
                stack.append(c)
                instack[c] = 1
            return "".join(stack)
    

    leetcode 27 移动元素

    class Solution:
        def removeElement(self, nums: List[int], val: int) -> int:
            slow, fast = 0,0
            while fast < len(nums):
                if nums[fast] != val:
                    nums[slow] = nums[fast]
                    slow += 1
                fast += 1
            return slow
    

    leetcode 283 移动0

    class Solution:
        def moveZeroes(self, nums: List[int]) -> None:
            """
            Do not return anything, modify nums in-place instead.
            """
            slow, fast = 0,0
            while fast < len(nums):
                if nums[fast] != 0:
                    nums[slow],nums[fast] = nums[fast],nums[slow]
                    slow += 1
                fast += 1
    
  • 相关阅读:
    待整理
    字符编码 【ZZ】
    python中的数据类型,存储,实现
    python中的浅拷贝和深拷贝
    算法比较-SVM和logistic回归
    机器学习中的范数规则化之(一)L0、L1与L2范数
    全排列的编码和解码----康托编码
    C++的const类成员函数
    Trie树的简单描述(需后续总结)
    UWP 手绘视频创作工具技术分享系列
  • 原文地址:https://www.cnblogs.com/xiximayou/p/14371505.html
Copyright © 2011-2022 走看看