用Rust刷LeetCode之26 删除有序数组中的重复项

  1. 删除排序数组中的重复项[1]

难度: 简单

老的描述:

新的描述:


注意是 排序数组 ,非严格递增排列,即已经是排好序的,只不过有重复元素

复制代码
func removeDuplicates(nums []int) int {
    if len(nums) == 0 {
        return 0
    }
    i := 0
    for j := 1; j < len(nums); j++ {

      // 判断是否为重复元素
        if nums[j]!= nums[i] {
            i++
            nums[i] = nums[j]
        }
    }
    return i + 1
}

Rust版本:

复制代码
fn main() {
    let mut nums = vec![1, 1, 2, 3, 3];
    // let mut nums= vec![0,0,1,1,1,2,2,3,3,4];
    let len = remove_duplicates(&mut nums);
    println!("去重后vec的长度为: {:?}", len); // 输出: 3
}

fn remove_duplicates(nums: &mut Vec<i32>) -> usize {
    if nums.is_empty() {
        return 0;
    }

    let mut i = 0;

    for j in 1..nums.len() {
        if nums[j] != nums[i] {
            i += 1;
            nums[i] = nums[j];
        }
    }

    i + 1
}

remove_duplicates 函数使用双指针的方法来原地删除重复元素。指针 i 指向当前已处理的非重复元素的最后一个位置,指针 j 用于遍历数组。如果 numsj 与 numsi 不相等,则将 numsj 移到 numsi+1 的位置,并将 i 向前移动一步。最后返回 i+1,即为删除重复元素后的新长度。

参考资料

1

  1. 删除排序数组中的重复项: https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

本文由mdnice多平台发布

相关推荐
实名上网宋凯宣4 小时前
Django
后端·python·django
利威尔xu5 小时前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
逃逸线LOF6 小时前
Ribbon负载均衡原理(Irule组件、源码分析)
后端·spring cloud·ribbon
慢云智慧空间6 小时前
从设备智能到空间理解,空间智能终端解决方案商如何重新定义行业标准
后端
利威尔xu6 小时前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
薛定谔的猫-菜鸟程序员7 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
IT_陈寒9 小时前
SpringBoot多环境配置把我坑惨了,这个踩坑经验你最好看看
前端·人工智能·后端
码事漫谈9 小时前
DeepSeek 搞了个 "Super-agent",但不是超级智能
后端
吴凡wudianmei9 小时前
从 0 搭一个 AI Agent(四):SSE 跑通之后,三处“契约错配”与它们的修复边界
前端·后端·aigc
小兔子9 小时前
defer 的参数在写下那一刻就求值了,循环里这样写会踩坑
后端