• 最小的K个数 牛客网 剑指Offer


    最小的K个数 牛客网 剑指Offer

    • 题目描述
    • 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
    class Solution:
        #run:33ms memory:5732k
        def GetLeastNumbers_Solution(self, tinput, k):
            if tinput == None or len(tinput) < k or len(tinput) <= 0 or k <=0:
                return []
            list_size = len(tinput)
            start = 0
            end = list_size - 1
            index = self.QuickSelect(tinput, list_size, start, end)
            while index != k-1:
                if index > k-1:
                    end = index - 1
                    index = self.QuickSelect(tinput, list_size, start, end)
                else:
                    start = index + 1
                    index = self.QuickSelect(tinput, list_size, start, end)
            output = tinput[:k]
            output.sort()
            return output
        
        def QuickSelect(self,numbers,length,start,end):
            if numbers == None or length <= 0 or start < 0 or end >= length:
                return None
            if end == start:
                return end
            pivotvlue = numbers[start]
            leftmark = start + 1
            rightmark = end
            while True:
                while numbers[leftmark] <= pivotvlue and leftmark <= rightmark:
                    leftmark += 1
                while numbers[rightmark] >= pivotvlue and rightmark >= leftmark:
                    rightmark -= 1
                if leftmark >= rightmark:
                    break
                else:
                    numbers[leftmark], numbers[rightmark] = numbers[rightmark], numbers[leftmark]
            numbers[rightmark], numbers[start] = numbers[start], numbers[rightmark]
            return rightmark
  • 相关阅读:
    14.3.1选择选项
    14.3 选择框表单
    14.2.4HTML5约束API验证
    input标签之外是否一定添加form标签
    14.2.3自动切换焦点
    php设计模式---抽象模式模式
    php设计模式---简单工厂模式
    git基本教程,每天更新
    第5章 卷积神经网络
    第3章 深度学习基础
  • 原文地址:https://www.cnblogs.com/vercont/p/10210368.html
Copyright © 2020-2023  润新知