您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法

删除有序数组中的重复项(图文)

第十三双眼睛2023-11-23【数据结构与算法】人已围观

简介删除有序数组中的重复项
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:
更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
返回 k 。

思路:如果没有原地删除的条件,那么可以新创建一个数组,然后把不重复的拷贝过去,但是原地删除,就不能这么干了,只能在原来的数组上想办法,弄两个变量,一个指向数组不重复的元素位置,一个往后移,发现两个元素相同后,就用后一个覆盖前一个,等遍历完整个数组,就删除了重复的元素。
public int method2(int[] nums) {
    if (nums.length ==0) {
        return 0;
    }
    //从1开始,是因为要前面一个和后面一个进行比较,怕越界
    int i = 1, j = 1;
    for (;j < nums.length; j++) {
        //如果前面的一个和当前的整个一样,就把后面的一个赋值给当前的
        if (nums[i-1] != nums[j]) {
            nums[i] = nums[j];
            i++;
        }
    }
    return i;
}

Tags:

很赞哦! ()

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

本站推荐

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计242篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们