用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 用于遍历数组。如果 nums[j] 与 nums[i] 不相等,则将 nums[j] 移到 nums[i+1] 的位置,并将 i 向前移动一步。最后返回 i+1,即为删除重复元素后的新长度。

参考资料

[1]

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

本文由mdnice多平台发布

相关推荐
AskHarries2 小时前
Spring Cloud OpenFeign快速入门demo
spring boot·后端
isolusion3 小时前
Springboot的创建方式
java·spring boot·后端
zjw_rp3 小时前
Spring-AOP
java·后端·spring·spring-aop
TodoCoder4 小时前
【编程思想】CopyOnWrite是如何解决高并发场景中的读写瓶颈?
java·后端·面试
凌虚4 小时前
Kubernetes APF(API 优先级和公平调度)简介
后端·程序员·kubernetes
机器之心5 小时前
图学习新突破:一个统一框架连接空域和频域
人工智能·后端
.生产的驴6 小时前
SpringBoot 对接第三方登录 手机号登录 手机号验证 微信小程序登录 结合Redis SaToken
java·spring boot·redis·后端·缓存·微信小程序·maven
顽疲6 小时前
springboot vue 会员收银系统 含源码 开发流程
vue.js·spring boot·后端
机器之心6 小时前
AAAI 2025|时间序列演进也是种扩散过程?基于移动自回归的时序扩散预测模型
人工智能·后端
hanglove_lucky7 小时前
本地摄像头视频流在html中打开
前端·后端·html