题解 | #第k轻的牛牛#

第k轻的牛牛

https://www.nowcoder.com/practice/7676478b46794456b145e8e48b0e2763

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param weights int整型一维数组 
# @param k int整型 
# @return int整型
#
class Solution:
    def findKthSmallest(self , weights: List[int], k: int) -> int:
        # write code here
        max_w, min_w = weights[0], weights[0]
        min_ws = [min_w]
        # 时间复杂度为O(n),则意味着只能遍历一次数组
        # 用一个长度为k的数组来记录最小的k个体重,每找到一个按顺序插入
        for w in weights[1:]:
            if len(min_ws) < k:
            # 结果数组数量不足k个,则直接找位置插入数据
            # 大于当前最大的,则直接插入队尾
                if w >= max_w:
                    min_ws.append(w)
                # 小于当前最小的,则插入队首
                elif w <= min_w:
                    min_ws.insert(0, w)
                # 否则在队里找到第一个比当前值大的位置插入
                else:
                    for j in range(len(min_ws)):
                        if min_ws[j] > w:
                            min_ws.insert(j,w)
                            break
            else:
            # 结果数量等于k个,则每个数都要与结果数组里的值比较
            # 如果是居间的一个值,则把最大的值pop掉,然后在里边找到第一个比它大的位置插入
                if w < max_w and w > min_w:
                    min_ws.pop()
                    for j in range(len(min_ws)):
                        if min_ws[j] > w:
                            min_ws.insert(j, w)
                            break
            # 如果比最小值更小,则把队尾的值pop掉,把当前值插入队首
                elif w < min_w:
                    min_ws.pop()
                    min_ws.insert(0, w)
            # 最大值与最小值始终在结果数组的队尾和队首
            max_w = min_ws[-1]
            min_w = min_ws[0]
        
        return min_ws[-1]

全部评论

相关推荐

Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 12:31
以前小时候我最痛恨出轨、偷情的人,无论男女,为什么会出轨?现在我成了自己最讨厌的人,没想到分享的东西在牛客会被这么多人看,大家的评价都很中肯,我也认同,想过一一回复,但我还是收声了,我想我应该说说这件事,这件事一直压在我心里,是个很大的心结,上面说了人为什么出轨,我大概能明白了。我们大一下半年开始恋爱,开始恋爱,我给出了我铭记3年的承诺,我对她好一辈子,我永远不会背叛,我责任心太重,我觉得跟了我,我就要照顾她一辈子,我们在一起3年我都没有碰过她,她说往东我就往东,她说什么我做什么,她要我干什么,我就干什么!在学校很美好,中途也出过一些小插曲,比如男闺蜜、男闺蜜2号等等等。但我都强迫她改掉了,我...
牛客刘北:两个缺爱的人是没有办法好好在一起的,但世界上哪有什么是非对错?你后悔你们在一起了,但是刚刚在一起的美好也是真的呀,因为其他人的出现,你开始想要了最开始的自己,你的确对不起自己,21岁的你望高物远,你完全可以不谈恋爱,去过你想要的生活,你向往自由,在一起之后,你要想的不是一个人,而是两个人,你不是变心了,就像你说的,你受够了,你不想包容了,冷静几天是你最优的选择,爱人先爱己。
社会教会你的第一课
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务