LeetCode 27:移除元素

导读:本篇文章讲解 LeetCode 27:移除元素,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

移除元素

题目:
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
示例:
输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]

思路:快慢指针

只要数组有序,就应该想到双指针技巧
若fast指针=val,则fast++跳过
若fast指针不等于val时,先将fast指的值赋给nums[slow],然后再slow++, 这样等于val的就全被删除,且返回的是slow 而不是slow+1;

注意: 这里 先赋值再slow++,保证nums[0…slow-1]中不包含val的值!而在LeetCode 26中,是先slow++再赋值,这样可以保留一个重复元素的值

Java实现:

class Solution {
    public int removeElement(int[] nums, int val) {
        int slow=0;
        int fast=0;
        int n=nums.length;
        while(fast<n){
            if(nums[fast]==val){ // fast遇到要删除的元素,则跳过
                fast++;
            }else{
                nums[slow]=nums[fast]; // 先赋值,再 ++  !
                slow++;
                fast++;
            }
        }
        return slow;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89312.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!