题解 | #草原牛群集合#
草原牛群集合
https://www.nowcoder.com/practice/6fc74519ff9c44288dbcec5db7345ded?tpId=354&tqId=10587746&ru=/exam/oj/ta&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D354
一、知识点:
数组、双指针
二、文字分析:
使用两个指针 i 和 j 分别指向当前要处理的元素和下一个要放置元素的位置。在遍历数组时,如果当前元素 nums[i] 不等于 val,就将其放置到 nums[j] 的位置,并将 j 的值加1。这样,遍历结束后,j 就指向了移动后的数组的长度。
因此时间复杂度为 O(n),其中 n 是数组的长度。由于算法只使用了常数个额外变量,空间复杂度为 O(1)。
三、编程语言:
java
四、正确代码:
import java.util.*;
public class Solution {
/**
* 移除数组中与 val 相同的元素,并返回移动后的数组的长度
*
* @param nums 整型数组,表示牛的位置坐标
* @param val 整数,表示牧犬的位置
* @return 移动后的数组的长度
*/
public int remove_cows(int[] nums, int val) {
int i = 0; // 指向当前要处理的元素
int j = 0; // 指向下一个要放置元素的位置
int n = nums.length;
while (i < n) {
if (nums[i] != val) {
nums[j] = nums[i];
j++;
}
i++;
}
return j;
}
}
