最强解析面试题:最小 K 个数
Posted 魏小言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最强解析面试题:最小 K 个数相关的知识,希望对你有一定的参考价值。
文章目录
最强解析面试题:最小 K 个数
文章讲解 “ 最小 K 个数 ” 经典面试题,包含思路及源码,及解惑!
题目
给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。
思路
1、直接使用 sort 库排序进行,时间复杂度 O(logn)
sort.Ints(tar)
2、使用快排思路做数据的拆分,时间复杂度 O(n)
代码
package main
import "fmt"
func main()
tar := []int4, 5, 1, 6, 2, 7, 3, 8
k, l := 2, len(tar)-1
index := IndexSort(tar, 0, len(tar)-1)
for index != k-1
if index > k-1
index = IndexSort(tar, 0, index-1)
else
index = IndexSort(tar, index+1, l)
fmt.Println(“res :", tar[:k])
func IndexSort(t []int, s, e int) int
m := t[s]
for s < e
for s < e && t[e] >= m
e--
t[s] = t[e]
for s < e && t[s] <= m
s++
t[e] = t[s]
t[s] = m
return s
附录
一切用数据说话,围绕核心指标,做定性分析和定量分析!
以上是关于最强解析面试题:最小 K 个数的主要内容,如果未能解决你的问题,请参考以下文章