Kth最大的元素

时间:2018-04-21 01:42:36

标签: python python-3.x

我正在尝试解决Kth Largest Element问题。我不知道为什么会出现bug。 " E:6,16:未定义的变量' quickSelect' (未定义的变量) E:27,19:未定义的变量' quickSelect' (未定义的变量) E:30,19:未定义的变量' quickSelect' (未定义变量)"这是我的代码。

def kthLargestElement(self, k, A):
     return quickSelect(A, 0, len(A) - 1, k)

def quickSelect(self, nums, start, end, k):
    if start == end:
        return nums[start]

    i = start
    j = end
    pivot = (nums[start] + nums[end]) // 2

    while i <= j:
        while i <= j and nums[i] < pivot:
            i += 1
        while i <= j and nums[j] > pivot:
            j -= 1
        if i <=j:
            nums[i], nums[j] = nums[j], nums[i]
            i += 1
            j -= 1

    if start + k - 1 <= j:
        return quickSelect(nums, start, j, k)

    if start + k - 1 >= i:
        return quickSelect(nums, i, end, k - (i - start))

    return nums[j + 1]

1 个答案:

答案 0 :(得分:0)

Python无法找到quickSelect,因为它在全局命名空间中查找它而不是查看您的类。要解决此问题,您可以使用self.quickSelect(...)代替quickSelect(...)调用您的函数。