前言
猛起更新。
正文
问题来源
今天被人问到一个问题。
问题描述
给你一个数组,给出去重并排序。
示例 1:
输入: [20,15,80,20,100,15,100]
输出: [15,20,80,100] 4
分析:
双指针+选择排序
func sort(nums []int) int {
m := nums[0]
mi := 0
for i := 1; i < len(nums); i++ {
if m > nums[i] {
m = nums[i]
mi = i
}
}
nums[0], nums[mi] = nums[mi], nums[0]
i, j := 1, 1
for j < len(nums) {
mi = j
m = nums[j]
for k := j+1; k < len(nums); k++ {
if m > nums[k] {
m = nums[k]
mi = k
}
}
nums[i] = nums[mi]
nums[mi] = nums[j]
if nums[i-1] == nums[i] {
j++
} else {
i++
j++
}
}
return i
}
总结:
勤思考。
结语
不管怎么样好好加油。