一、知识点:
数组、双指针
二、文字分析:
使用两个指针 i
和 j
分别指向当前要处理的元素和下一个要放置元素的位置。在遍历数组时,如果当前元素 nums[i]
与上一个元素不相同,就将其放置到 nums[j]
的位置,并将 j
的值加1。最后返回 j
作为不同位置牛群的数量。
复杂度分析:该算法只需要对数组进行一次遍历,因此时间复杂度为 O(n),其中 n 是数组的长度。由于算法只使用了常数个额外变量,空间复杂度为 O(1)。
三、编程语言:
java
四、正确代码:
import java.util.*; public class Solution { /** * 计算草原上不同位置的牛群数量,并修改数组为只包含这些不同位置的牛群位置并保持顺序 * * @param nums int整型一维数组,表示牛的位置坐标数组 * @return int整型,草原上不同位置的牛群数量 */ public int remove_duplicates(int[] nums) { int n = nums.length; if (n <= 1) { return n; } int i = 0; // 指向当前要处理的元素 int j = 0; // 指向下一个要放置元素的位置 while (i < n) { // 如果当前元素与上一个元素不相同,则将其放置到 nums[j] 的位置,并将 j 的值加1 if (i == 0 || nums[i] != nums[i - 1]) { nums[j] = nums[i]; j++; } i++; } return j; } }