Total Occurrence of Target
public class Solution { /** * @param A an integer array sorted in ascending order * @param target an integer * @return an integer */ public int totalOccurrence(int[] A, int target) { // Write your code here if (A == null || A.length == 0) { return 0; } int first = findFirstIndex(A, target); if (first == -1) { return 0; } int last = findLastIndex(A, target); if (first == -1) { return 0; } return last - first + 1; } private int findFirstIndex(int[] A, int target) { int start = 0; int end = A.length - 1; while (start + 1 < end) { int mid = start + (end - start) / 2; if (A[mid] == target) { end = mid; } else if (A[mid] < target) { start = mid; } else { end = mid; } } if (A[start] == target) { return start; } if (A[end] == target) { return end; } return -1; } private int findLastIndex(int[] A, int target) { int start = 0; int end = A.length - 1; while (start + 1 < end) { int mid = start + (end - start) / 2; if (A[mid] == target) { start = mid; } else if (A[mid] < target) { start = mid; } else { end = mid; } } if (A[end] == target) { return end; } if (A[start] == target) { return start; } return -1; } }
posted on 2017-05-02 07:57 codingEskimo 阅读(115) 评论(0) 编辑 收藏 举报