美文网首页
27. 移除元素 Remove Element

27. 移除元素 Remove Element

作者: 滨岩 | 来源:发表于2020-11-07 23:09 被阅读0次

    27. 移除元素 Remove Element

    https://leetcode-cn.com/problems/remove-element/

    给定一个数组nums和一个数值val,将数组中所有等于val的元素删除,并返回剩余的元素个数。
    -如何定义删除?从数组中去除?还是放在数组末尾?
    -剩余元素的排列是否要保证原有的相对顺序?
    -是否有空间复杂度的要求?O(1)

    解决方法类似 283. 移动零 MoveZeros

    
        //时间复杂度O(n)
        //空间复杂度O(1)
        public int removeElement(int[] nums, int val) {
            int  noValIndex=0;
    
            //遍历到第i个元素,保证[0..i]中的所有非val 元素
            // 都顺序的排列在[0..noValIndex)后
            //同时保证[noValIndex,i)均是val 元素
            for(int i=0;i<nums.length;i++){
                if(nums[i]==val){
                    continue;
                }
    
                //每个元素都不相等 就不用切换
                if(noValIndex!=i){
                    swap(nums,i,noValIndex);
                }
                noValIndex++;
            }
    
            return noValIndex;
        }
    
    
    
    
        private void swap(int[] nums,int source,int target){
            int temp=nums[source];
            nums[source]=nums[target];
            nums[target]=temp;
        }
    
    

    相关文章

      网友评论

          本文标题:27. 移除元素 Remove Element

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