525. Contiguous Array解題報(bào)告

Description:

Given a binary array, find the maximum length of a contiguous subarray with equal number of 0 and 1.

Example:

Example 1:

Input: [0,1]
Output: 2

Explanation: [0, 1] is the longest contiguous subarray with equal number of 0 and 1.
Example 2:

Input: [0,1,0]
Output: 2

Explanation: [0, 1] (or [1, 0]) is a longest contiguous subarray with equal number of 0 and 1.
Note: The length of the given binary array will not exceed 50,000.

Link:

https://leetcode.com/problems/contiguous-array/description/

解題方法:

遍歷數(shù)組,記錄當(dāng)前位置之前出現(xiàn)了多少個(gè)1(0被視為出現(xiàn)了-1個(gè)1),用哈希表存下來出現(xiàn)1的次數(shù)和對(duì)應(yīng)的index,如果出現(xiàn)兩個(gè)相同的次數(shù),那么這中間的一段被視為我們所求的subarray。
注意:當(dāng)哈希表里面已經(jīng)存在的鍵值對(duì)再次出現(xiàn),不需要更新index的值。

Tips:

Time Complexity:

O(N)

完整代碼:

int findMaxLength(vector<int>& nums) {
    int len = nums.size();
    if(!len)
        return 0;
    unordered_map<int, int> hash;
    hash[0] = 0;
    int last = 0;
    int ones = 0;
    int result = 0;
    for(int i = 0; i <= len; i++) {
        ones += last;
        if(hash.find(ones) != hash.end()) {
            result = max(result, i - hash[ones]);
        }
        else {
            hash[ones] = i;
        }
        if(i == len)
            break;
        else {
            last = nums[i] == 0 ? -1 : 1;
        }
    }
    return result;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,921評(píng)論 0 33
  • 在六點(diǎn)47分的傍晚醒來感到非常滿意一如多年以前合著暮色、廚房的飯香、絮語讓人安神寧靜 空氣中顫動(dòng)著快樂
    咸叔說閱讀 258評(píng)論 1 1
  • Help me stay organised on holidays. Plan Make a plan for ...
    Liming_Liu閱讀 248評(píng)論 0 0
  • 這個(gè)故事還得接上次故事說起。上次老道士用黑狗公雞血幫著石老漢一家破了鬼聚會(huì)驅(qū)走了石老漢家廚房盤踞的孤魂野鬼并且?guī)ё?..
    蘑菇花園閱讀 959評(píng)論 0 1
  • 當(dāng)你在因?yàn)槲?,向別人傾訴時(shí),其實(shí)你不只是在傾訴,除了想得到同情和理解之外,其實(shí)也想真正得到讓你可以釋懷的東西,那...
    半夏長(zhǎng)安閱讀 389評(píng)論 0 0

友情鏈接更多精彩內(nèi)容