题解 | #草原牛群集合#
草原牛群集合
https://www.nowcoder.com/practice/6fc74519ff9c44288dbcec5db7345ded
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @param val int整型 * @return int整型 */ public int remove_cows (int[] nums, int val) { // write code here 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; } }
知识点:
数组、双指针
解题分析:
使用两个指针 i
和 j
分别指向当前要处理的元素和下一个要放置元素的位置。在遍历数组时,如果当前元素 nums[i]
不等于 val
,就将其放置到 nums[j]
的位置,并将 j
的值加1。这样,遍历结束后,j
就指向了移动后的数组的长度。
因此时间复杂度为 O(n),其中 n 是数组的长度。由于算法只使用了常数个额外变量,空间复杂度为 O(1)。
解题语言:
java