zoukankan      html  css  js  c++  java
  • 【每日一题-leetcode】26.删除排序数组中的重复项

    26.删除排序数组中的重复项

    给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

    不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

    示例 1:

    给定数组 nums = [1,1,2],

    函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。

    你不需要考虑数组中超出新长度后面的元素。

    1.双指针法

    th: 一个快指针 一个慢指针 慢指针记录不重复的个数以及下标的作用,而快指针如果和慢指针中元素中出现相等的情况 不用添加直接跳过。

    时间复杂度:O(n)

    空间复杂度:只是用到了 临时变量 所以O(1)

    public int removeDuplicates(int[] nums) {
       if(nums.length == 0 || nums.length <2){
         return 0;
       }
            //双指针法
            int i =0;
            for(int j=1;j<nums.length;j++){
                if(nums[j] != nums[i]){  
                    i++;
                    nums[i] = nums[j];
                }
            }
            return i+1;//因为i从零 所以实际上不重复的个数为i+1
        }
    
  • 相关阅读:
    176. Second Highest Salary
    175. Combine Two Tables
    172. Factorial Trailing Zeroes
    171. Excel Sheet Column Number
    169. Majority Element
    168. Excel Sheet Column Title
    167. Two Sum II
    160. Intersection of Two Linked Lists
    个人博客记录
    <meta>标签
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860688.html
Copyright © 2011-2022 走看看