leetcode简单题7 N.26 删除有序数组中的重复项 rust描述

// [1,1,2] [1,2] 2
// [0,0,1,1,1,2,2,3,3,4] [0,1,2,3,4] 5
// k记录有多少不重复的元素,并且k作为索引将不重复的元素放到数组中
// 因为是升序 k可以从1开始 只要不是空数组 k至少都大于等于1
pub fn remove_duplicates(nums: &mut Vec<i32>) -> i32 {
    if nums.is_empty() {// 空数组
        return 0;
    }

    let mut k = 1;// 记录不重复的元素个数
    // for i in 1..nums.len() {// 遍历数组 如果下面是 i与i+1 k 与 i+1 这里应该是 0到vec长度-1
    //     if nums[i] != nums[i - 1] {
    //         nums[k] = nums[i];
    //         k += 1;
    //     }
    // }
    //
    for i in 0..nums.len() - 1 {// 个人认为遍历还是以0开始比较好
        if nums[i] != nums[i + 1] {
            nums[k] = nums[i + 1];
            k += 1;
        }
    }

    k as i32
}
fn main() {
    assert_eq!(remove_duplicates(&mut vec![1, 1, 2]), 2);
    assert_eq!(remove_duplicates(&mut vec![0, 0, 1, 1, 1, 2, 2, 3, 3, 4]), 5);
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值