• 代码随想录一一一数组一一一移除元素


    题目来源自leetcode与代码随想录

    (1)27.移除元素

    题目:
    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
    解题思路:
    确定当前非val值,先前覆盖,尾指针位置自增即可

    class Solution:
        def removeElement(self, nums: List[int], val: int) -> int:
            len_ = len(nums)
            if len_ == 0:
                return 0
    
            idx = 0
            for i in range(len_):
                if nums[i] != val:
                    nums[idx] = nums[i]
                    idx += 1
    
            return idx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    (2)26.移除元素中的重复项

    题目:
    给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
    思路:
    同(1),还是一个指针确定当前不重复的尾部位置,另一个指针去找寻符合条件的值。

    class Solution:
        def removeDuplicates(self, nums: List[int]) -> int:
            len_nums = len(nums)
            if len_nums <= 1:
                return len_nums
            
            idx = 0
            for i in range(1, len_nums):
                if nums[idx] != nums[i]:
                    idx += 1
                    nums[idx] = nums[i]
                    
            return idx+1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    class Solution(object):
        def removeDuplicates(self, nums):
            for i in range(len(nums) - 1, 0, -1):
    
                if nums[i] == nums[i - 1]:
                    del nums[i]
                    
            return len(nums)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    (3)283.移动零

    题目:
    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
    解题思路:
    找出所有非零值向前移动,记录尾指针位置,将尾指针之后所有元素置零

    class Solution:
        def moveZeroes(self, nums: List[int]) -> None:
            len_nums = len(nums)
            if len_nums <= 1:
                return
    
            idx = 0
            for i in range(len_nums):
                if nums[i] != 0:
                    nums[idx] = nums[i]
                    idx += 1
    
            while idx < len_nums:
                nums[idx] = 0
                idx += 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    (4)844.比较含退格的字符串

    题目:
    给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。
    注意:如果对空文本输入退格字符,文本继续为空。
    解题思路:
    异常处理前端无用"#",然后处理字符串即可

    class Solution:
        def backspaceCompare(self, s: str, t: str) -> bool:
            s_list, t_list = [], []
            s, t = s.lstrip("#"), t.lstrip("#")
            
            for i in s:
                if i != "#":
                    s_list.append(i)
                else:
                    s_list = s_list[:-1]
            for i in t:
                if i != "#":
                    t_list.append(i)
                else:
                    t_list = t_list[:-1]
    
            return True if t_list == s_list else False
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    (5)有序数组的平方

    题目:
    给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
    解题思路:
    lambda的妙用,绝对值大小排序即可

    class Solution:
        def sortedSquares(self, nums: List[int]) -> List[int]:
            nums.sort(key = lambda x:abs(x), reverse = False)
            for i in range(len(nums)):
                nums[i] = nums[i] ** 2
    
            return nums
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    vs中pygame窗口不显示
    模型(model)和扩散模型(diffusion)
    ESP32(一):使用记录
    探究MYSQL之索引
    详解 Redis 中 big keys 发现和解决
    Java实现图书持久化
    C语言学习记录(九)之结构体
    49 多个 classloader 加载的同类限定名的Class 在 jhat 中显示不全
    TDengine 3.1.1.0 来啦!更新如下
    R语言dplyr包distinct函数基于dataframe数据中指定单个变量移除重复数据行、keep_all函数用于保留输出数据框中的所有其它变量
  • 原文地址:https://blog.csdn.net/qq_35668477/article/details/126148442