本文主要是介绍LeetCode 题解(208) : H-Index II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
Follow up for H-Index: What if the citations
array is sorted in ascending order? Could you optimize your algorithm?
题解:
二分法。
c++版:
class Solution {
public:int hIndex(vector<int>& citations) {int l = citations.size();int start = 0, end = l - 1;while(start <= end) {int mid = (start + end) * 0.5;if(citations[mid] == l - mid)return l - mid;else if(citations[mid] > l - mid)end = mid - 1;elsestart = mid + 1;}return l - start;}
};
Java版:
public class Solution {public int hIndex(int[] citations) {int l = citations.length;int start = 0, end = l - 1;while(start <= end) {int mid = (start + end) / 2;if(citations[mid] == l - mid)return l - mid;else if(citations[mid] > l - mid)end = mid - 1;elsestart = mid + 1;}return l - start;}
}
Python版:
class Solution(object):def hIndex(self, citations):""":type citations: List[int]:rtype: int"""N = len(citations)if N == 0:return 0if citations[N-1] == 0:return 0low, high = 0, N - 1while low <= high:mid = (low + high) / 2if N - mid > citations[mid]:low = mid + 1else:high = mid - 1return N - low
这篇关于LeetCode 题解(208) : H-Index II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!