题解 | #草原上的牛群#

草原上的牛群

https://www.nowcoder.com/practice/0661aa40ac8e48f4906df7aa24c3db90?tpId=354&tqId=10587749&ru=/exam/oj/ta&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D354

一、知识点:

数组、双指针

二、文字分析:

使用两个指针 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;
    }
}

全部评论

相关推荐

04-17 18:32
门头沟学院 Java
野猪不是猪🐗:他跟你一个学校,你要是进来之后待遇比他好,他受得了?
点赞 评论 收藏
分享
05-05 21:45
已编辑
广州大学 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务