美文网首页
Total Occurrence of Target

Total Occurrence of Target

作者: 一枚煎餅 | 来源:发表于2016-09-11 11:05 被阅读0次
Total Occurrence of Target.png

===================== 解題思路 =====================

分開兩次找出最先出現跟最後出現的 target 之 index 然後相減再 + 1 得到答案 過程可參考 First Position of Target (找最先出現 反過來做可得到最後出現)
===================== C++ code ====================

<pre><code>
class Solution {

public:

/**
 * @param A an integer array sorted in ascending order
 * @param target an integer
 * @return an integer
 */

int totalOccurrence(vector<int>& A, int target) {
    // Write your code here
    int n = A.size();
    if(n == 0) return 0;
    int small = 0, large = n - 1;
    int left = 0, right = n - 1;
    if(A[left] > target || A[right] < target) return 0;
    while(left + 1 < right)
    {
        int mid = left + (right - left) / 2;
        if(A[mid] >= target) right = mid;
        else left = mid;
    }
    if(A[left] != target && A[right] != target) return 0;
    if(A[left] == target) small = left;
    else if(A[right] == target) small = right;
   
    left = 0; 
    right = n - 1;
    while(left + 1 < right)
    {
        int mid = left + (right - left) / 2;
        if(A[mid] > target) right = mid;
        else left = mid;
    }
    
    if(A[right] == target) large = right;
    else if(A[left] == target) large = left;
    return large - small + 1;
}

};
<code><pre>

相关文章

网友评论

      本文标题:Total Occurrence of Target

      本文链接:https://www.haomeiwen.com/subject/uwjuettx.html