zoukankan      html  css  js  c++  java
  • 删除排序数组中的重复项(leetcode26)

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

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

    示例 1:

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

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

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

    解析:

    双指针法

    数组完成排序后,放置两个指针 i 和 j ,其中 i 是慢指针, j 是快指针。

    只要 nums[i] = nums[j] , 就增加 j 以跳过重复项。

    当遇到 nums[i ] != nums[j] 时,我们必须把nums[j] 的值复制到 nums[i+1]。

    然后递增 i ,接着再次重复相同的过程,直到 j 到达数组的末尾。

    public class leetcode26 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            int[] nums = {1,1,2};
            System.out.println(removeDuplicates(nums));
        }
        /**
         * 双指针法
         * 数组完成排序后,放置两个指针i和j,i是慢指针,j是快指针。
         * 只要nums[i]==nums[j],我们就增加j以跳过重复项。
         * 
         * @param nums
         * @return
         */
        public static int removeDuplicates(int[] nums){
            if(nums.length==0){
                return 0;
            }
            int i=0;
            for(int j=1;j<nums.length;j++){
                if(nums[i]!=nums[j]){
                    i++;
                    nums[i]=nums[j];
                }
            }
            return i+1;
        }
    
    }
  • 相关阅读:
    SpringBoot最新教程IDEA版【狂神说Java系列】
    Mybatis最新完整教程IDEA版【通俗易懂2019.11月】
    freemarker 数字格式化(金额格式化)
    idea皮肤插件
    Spring Security 自定义表单登录页
    Spring Security 用户配置
    Spring Security 初体验
    Tomcat 部署 Spring Boot工程
    服务器安装Ngnix
    java读取配置文件
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/14508483.html
Copyright © 2011-2022 走看看