zoukankan      html  css  js  c++  java
  • 最小的k个数-Python版

    题目

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。(牛客网上要求结果有序)

    解法1,使用快排思想

     1 # -*- coding:utf-8 -*-
     2 class Solution:
     3     def GetLeastNumbers_Solution(self, tinput, k):
     4         # write code here
     5         smallk=[]
     6         length = len(tinput)
     7         if k<=0 or k>length or length==0:
     8             return smallk
     9         if k==length:
    10             return sorted(tinput)
    11         left =0
    12         right=length-1
    13         while left <= right: # 要<=
    14             small = self.quicksort(tinput,left,right)
    15             if small == k:
    16                 for i in range(k):
    17                     smallk.append(tinput[i])
    18                 break
    19             if small >k:
    20                 right = small-1
    21             if small <k:
    22                 left = small+1
    23         return sorted(smallk)
    24     def quicksort(self,tinput,left,right):
    25             small =left -1
    26             temp = tinput[right]
    27             for index in range(left,right,1):
    28                 if tinput[index]<temp:
    29                     small+=1
    30                     if small != index:
    31                         tinput[small],tinput[index] = tinput[index] ,tinput[small]
    32             small +=1
    33             # tinput[small],temp = temp,tinput[small]不能交换tinput[right]
    34             tinput[small], tinput[right] = tinput[right], tinput[small]
    35             return small

    解法2,创建一个k大小的容器(略),适合海量数据

  • 相关阅读:
    ble_app_hrs心率程序 nrf51822
    2019.05.08 《Linux驱动开发入门与实战》
    函数指针
    typedef
    回调函数
    android2
    android1
    每周总结2
    HTML
    数组(续)
  • 原文地址:https://www.cnblogs.com/shuangcao/p/12762369.html
Copyright © 2011-2022 走看看