JAVA练习27-删除有序数组中的重复项

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

 

目录

 

前言

一、题目-删除有序数组中的重复项

1.题目描述

2.思路与代码

2.1思路

2.2 代码

总结


前言

提示:这里可以添加本文要记录的大概内容:

1月21日练习内容


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目-删除有序数组中的重复项

1.题目描述

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。

由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。

将最终结果插入 nums 的前 k 个位置后返回 k 。

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

 

题目来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-array

2.思路与代码

2.1思路

1.判断数组长度是否为0,当数组长度为0时,直接输出0

2.遍历数组找到有序数组里面的重复值,当有重复值时,计数器加1,当没有重复值时,使用覆盖的方法对重复的数据进行覆盖删除

3.输出题目要求的删除后的数组长度

2.2 代码

代码如下(示例):

class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length == 0) 
            return 0;
        //计数器
        int count = 0;

        //遍历数组
        //i不能从0开始,因为当i等于nums。length时,i+1会超出数组的范围,
        //当i= 0时,i-1时就等于-1,所以直接使用i=1
        for(int i = 1;i < nums.length;i ++){
            //判断是否相等
            if(nums[i] == nums[i - 1])
                //相等时计数器加1
                count ++;
            else
                //使用覆盖的方法删除数据
                nums[i - count] = nums[i];
        }

        //根据题目返回删除后的数组长度
        return nums.length - count;
    }
}

 


总结

提示:这里对文章进行总结:
 

 

你可能感兴趣的:(java练习,java)