美文网首页
7.LeetCode刷题For Swift·27. Remove

7.LeetCode刷题For Swift·27. Remove

作者: 富城 | 来源:发表于2020-12-24 09:28 被阅读0次

    1、原题

    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
    不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并「原地」修改输入数组。
    元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

    示例 1:

    给定 nums = [3,2,2,3], val = 3,
    函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。
    你不需要考虑数组中超出新长度后面的元素。
    

    示例 2:

    给定 nums = [0,1,2,2,3,0,4,2], val = 2,
    函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。
    
    「你不需要考虑数组中超出新长度后面的元素。」
    

    2、思路

    3、代码

    class Solution {
        func removeElement(_ nums: inout [Int], _ val: Int) -> Int {
            // 这个题使用快慢指针的方法,与283题移动零一个类型
            // 定义慢指针
            var j = 0
            for i in 0..<nums.count {
                // 相当于把不是目标值的元素移到慢指针索引的数组中
                if nums[i] != val {
                    nums[j] = nums[i]
                    j+=1
                }            
            }
            return j
        }
    }
    

    相关文章

      网友评论

          本文标题:7.LeetCode刷题For Swift·27. Remove

          本文链接:https://www.haomeiwen.com/subject/bjdynktx.html