您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法
删除有序数组中的重复项(图文)
第十三双眼睛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:
很赞哦! ()
上一篇:合并两个有序链表(图文)
下一篇:移除元素(图文)