美文网首页
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