美文网首页
2022-02-20最小的k个数

2022-02-20最小的k个数

作者: 羲牧 | 来源:发表于2022-02-20 21:24 被阅读0次

1.快排划分思路的解法

特别注意k=0的情况

class Solution:
    def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:
        if not arr or k == 0:
            return []
        self.partitionK(arr, 0, len(arr)-1, k)
        return arr[:k]

    def partitionK(self, nums, l, r, k):
        index = self.partition(nums, l, r)
        length = index - l + 1
        # print("index,nums,l,r,k, length",index,nums,l,r,k, length)
        if k > length:
            self.partitionK(nums, index+1, r, k-length)
        if k < length:
            self.partitionK(nums, l, index-1, k)

    def partition(self, nums, l, r):
        self.swap(nums, l, l+(r-l)//2)
        # print("partition,nums", nums)
        pivot = l
        index = l+1
        for i in range(index, r+1):
            # print('i,index,nums', i,index,nums)
            if nums[i] < nums[pivot]:
                self.swap(nums, index, i)
                index += 1
        # print("partition2,nums", nums)
        self.swap(nums, pivot, index-1)
        return index-1

    def swap(self, nums, i, j):
        nums[i],nums[j] = nums[j], nums[i]

相关文章

  • 2022-02-20最小的k个数

    1.快排划分思路的解法 特别注意k=0的情况

  • 算法-数组(三)

    最小的k个数 求子数组的最大和 把数组排成最小的数字 1.最小的k个数 问题描述:输入n个数字,找到数组中最小的k...

  • 最小的k个数

    问题描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是...

  • 最小的k个数

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3...

  • 最小的K个数

    题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1...

  • 最小的k个数

    参考: [1] https://www.nowcoder.com/questionTerminal/6a296eb...

  • 最小的K个数

    输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。

  • 最小的K个数

    题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是...

  • 最小的k个数

    问题:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,...

  • 最小的k个数

    题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1...

网友评论

      本文标题:2022-02-20最小的k个数

      本文链接:https://www.haomeiwen.com/subject/gvgvlrtx.html