题解 | #草原上的牛群#
草原上的牛群
https://www.nowcoder.com/practice/0661aa40ac8e48f4906df7aa24c3db90
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int remove_duplicates (int[] nums) { // write code here // 和移除值相等的奶牛一样的道理 这次移除的是重复的 int slow = 0; int fast = 1; // 测试用例有空数组,所以我加上去了这个情况,面向测试用例编程 if (nums.length == 0) { return 0; } // fast快指针遍历数组 while (fast < nums.length) { if (nums[slow] != nums[fast]) { // 如果nums[slow]!=nums[fast] 此时先++slow再赋值,因为找到的不重复元素,必须放在索引为1开始的位置,索引为0的位置已经默认不重复 nums[++slow] = nums[fast]; } fast++; } return slow + 1; } }
知识点:
1.数组索引和遍历
2.快慢指针运用
3.画图模拟
解题思路:
1.和移除值相等的奶牛一样的道理 这次移除的是重复的
2.fast快指针遍历数组
3.如果nums[slow]!=nums[fast] 此时先++slow再赋值,因为找到的不重复元素,必须放在索引为1开始的位置,索引为0的位置已经默认不重复
总结:利用双指针进行前后移动,关键:先++slow再赋值,想一想数组怎么赋值的就行了