from collections import deque class Solution(object): def heap_adjust(self, lyst, start, end): temp = lyst[start] i = start j = 2*i while j <= end: if j < end and lyst[j] < lyst[j+1]: j += 1 if temp < lyst[j]: lyst[i] = lyst[j] i = j j = 2*i else: break lyst[i] = temp
def findKthLargest(self, nums, k): """ :type nums: List[int] :type k: int :rtype: int """ nums = deque(nums) nums.appendleft(0)
n = len(nums)-1 f = n / 2 for i in range(f, 0, -1): self.heap_adjust(nums, i, n)
res = None for i in range(n, n-k, -1): res = nums[1] nums[1], nums[i] = nums[i], nums[1] self.heap_adjust(nums, 1, i-1) return res nums = eval(raw_input().strip()) s = Solution() print s.findKthLargest(nums, 3)
N = len(a) for i in range(N): temp = a[i] left, right = 0, i-1 while left <= right: mid = left + (right-right)//2 if a[mid]>temp: right = mid - 1 else: left = mid + 1 a[right+2:i+1] = a[right+1:i] a[right+1] = temp print a[-3]