80. 删除排序数组中的重复项 II golang

80. 删除排序数组中的重复项 II

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

示例 1:

给定 nums = [1,1,1,2,2,3],

函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。

你不需要考虑数组中超出新长度后面的元素。
示例 2:

给定 nums = [0,0,1,1,1,1,2,3,3],

函数应返回新长度 length = 7, 并且原数组的前五个元素被修改为 0, 0, 1, 1, 2, 3, 3 。

你不需要考虑数组中超出新长度后面的元素。

Code


func removeDuplicates(nums []int) int {
    i,j :=1,2
    for ;j<len(nums);j++{
        if nums[j]!=nums[i-1]{
            i++
            nums[i]=nums[j]
        }
    }
    return i+1
}
 
### Golang 中对数组进行排序 在 Go 语言中,可以利用内置的 `sort` 包来进行数组或切片的排序操作。对于基本类型的数组(如整数、字符串),可以直接调用相应的接口完成排序;而对于复杂数据类型(比如由结构体组成的数组),则需指定比较逻辑。 #### 对于结构体数组排序 当处理的是结构体数组时,可以通过 `sort.Slice()` 或者 `sort.SliceStable()` 函数来实现基于特定字段的排序[^2]。下面是一个具体的例子: ```go package main import ( "fmt" "sort" ) func main() { slStdnt := []struct { Name string Age int Height int }{ {"Alice", 23, 175}, {"David", 18, 185}, {"Eve", 18, 165}, {"Bob", 25, 170}, } sort.SliceStable(slStdnt, func(i, j int) bool { return slStdnt[i].Age < slStdnt[j].Age }) fmt.Println(slStdnt) } ``` 这段代码展示了如何创建一个包含多个学生信息(姓名、年龄和身高)的结构体数组,并依据学生的年龄从小到大对其进行稳定排序。所谓“稳定”,意味着如果两个元素的关键字相同,则它们相对位置不会改变。 #### 基本类型数组排序 除了结构体外,针对简单的数值型或其他可比较的数据类型构成的一维数组/切片,也可以很方便地应用 `sort.Ints()` 等预定义好的辅助函数直接执行升序排列[^4]。 ```go nums := []int{5, 2, 9, 1, 5, 6} sort.Ints(nums) fmt.Println(nums) // 输出: [1 2 5 5 6 9] ``` 此段程序片段说明了怎样快速有效地对一组整数按递增顺序整理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值