public int removeDuplicates(int[] nums) {
时间: 2023-07-01 13:09:18 浏览: 90
这是一个 Java 函数,用于去除一个已排序数组中的重复元素。函数的输入是一个整数数组 nums,返回值是去重后数组的长度。
以下是函数的代码实现:
```
public int removeDuplicates(int[] nums) {
if (nums.length == 0) {
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,初始值为 0,表示去重后数组的末尾位置。然后遍历数组,对于每个位置 j,如果它的值不等于 nums[i],则将其加入去重后数组的末尾,并将 i 向后移动一位。最后返回 i + 1,即去重后数组的长度。
相关问题
class Solution { public int removeDuplicates(int[] nums) { int i=0,j=1; while(j<nums.length){ if(nums[i]==nums[j]){ j++; }else{ nums[i+1]=nums[j]; i++; j++; } } return i+1; } }
这段代码是用来去除一个有序数组中的重复元素。它的时间复杂度为 O(n),其中 n 是数组的长度。具体来说,它使用两个指针 i 和 j 来遍历数组,其中 i 指向当前已经去除重复元素后的数组的最后一个位置,j 指向当前正在考虑的元素。如果 nums[i] 和 nums[j] 相等,则 j 后移一位;否则,将 nums[j] 复制到 nums[i+1] 的位置,并将 i 和 j 都后移一位。最终返回 i+1,即为去重后数组的长度。
class Solution { public: int removeDuplicates(vector<int>& nums) { int n = nums.size(); if (n == 0) { return 0; } int f = 1, s = 1; while (f < n) { if (nums[f] != nums[f - 1]) { nums[s] = nums[f]; ++s; } ++f; } return s; } };解释这段代码
这段代码是一个删除有序数组中重复元素的函数,函数名为removeDuplicates,参数为一个整数数组nums。函数的返回值为一个整数,表示删除重复元素后的数组长度。
首先,获取数组nums的长度n,如果n为0,则直接返回0。
接着,定义两个指针f和s,分别表示快指针和慢指针,初始值都为1。快指针f从数组的第二个元素开始遍历,慢指针s用来保存不重复的元素。
然后,使用while循环遍历整个数组,当快指针f指向的元素与前一个元素不相等时,将快指针f指向的元素覆盖慢指针s指向的位置,并将慢指针s向后移动一位。这样,遍历结束后,慢指针s指向的位置就是删除重复元素后的数组的末尾。
最后,返回慢指针s的值即可。
总的来说,这段代码的思路是基于双指针实现的,通过遍历整个数组,将不重复的元素移到数组的前面,最终得到删除重复元素后的数组。
阅读全文