Binary Search With Runtime Complexity of O(log n):

```
class Solution(object):
def hIndex(self, citations):
"""
:type citations: List[int]
:rtype: int
"""
N = len(citations)
low, high = 0, N - 1
while low <= high:
mid = (low + high) / 2
if N - mid > citations[mid]:
low = mid + 1
else:
high = mid - 1
return N - low
```

Ref: http://bookshadow.com/weblog/2015/09/04/leetcode-h-index-ii/