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


    题目来源自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
  • 相关阅读:
    数字方法_toLocaleString方法
    JS 逆向高阶之 - nodejs 常用的几个加密, 解密的库
    知识蒸馏6: yolov5知识蒸馏训练
    Jaeger系统实现对Harbor的链路追踪
    关于重构的基本步骤与注意事项
    渗透测试学习day2
    【Java编程进阶之路--数组】
    MAUI新生-XAML语法基础:语法入门Element&Property&Event&Command
    国开现代汉语专题,形考答案形考任务
    计算机网络-应用层了解
  • 原文地址:https://blog.csdn.net/qq_35668477/article/details/126148442