计算机基础

leetcode题目-删除有序数组中的重复项

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素, 使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

go语言实现
/**
 * @Description: 删除重复元素 双指针法
 */
func removeDuplicates(nums []int) int {
	var newLen = 1 // 至少一个元素 默认长度 为1
	var index1 int = 0
	var index2 int = 0
	for index2 < len(nums) {
		if nums[index1] == nums[index2] {
			index2++
		} else {
			index1++
			nums[index1] = nums[index2]
			newLen++
		}
	}

	return newLen
}

func removeDuplicates2(nums []int) int {
	var newLen = 1 // 至少一个元素 默认长度 为1
	var index int = 0

	for _, num := range nums {
		if num != nums[index] {
			index++
			nums[index] = num
			newLen++
		}
	}

	return newLen
}

关于作者

程序员,软件工程师,java, golang, rust, c, python,vue, Springboot, mybatis, mysql,elasticsearch, docker, maven, gcc, linux, ubuntu, centos, axum,llm, paddlepaddle, onlyoffice,minio,银河麒麟,中科方德,rpm