LeetCode 974.和可被K整除的子數(shù)組

題目

給定一個整數(shù)數(shù)組 A,返回其中元素之和可被 K 整除的(連續(xù)玩荠、非空)子數(shù)組的數(shù)目辛块。

示例

輸入:A = [4,5,0,-2,-3,1], K = 5
輸出:7
解釋:
有 7 個子數(shù)組滿足其元素之和可被 K = 5 整除:
[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]

題目鏈接

題目分析

前綴和雙層遍歷

最直觀的思路是先求出前綴和數(shù)組,然后遍歷前綴和數(shù)組:

int subarraysDivByK(int* A, int ASize, int K){
    int* ans = (int*)calloc(ASize, sizeof(int));
    int count = 0;
    int temp = 0;
    for (int i = 0; i < ASize; i++) {
        temp += A[i];
        ans[count++] = temp;
    }
    int res = 0;
    for (int i = 0; i < ASize - 1; i++) {
        if (ans[i] % K == 0) res++;
        for (int j = i + 1; j < ASize; j++) {
            if ((ans[j] - ans[i]) % K == 0) res++;
        }
    }
    if (ans[ASize - 1] % K == 0) res++;
    return res;
}

這樣的時間復(fù)雜度是O(n^2)槐沼,會超時曙蒸。

前綴和+哈希表(同余定理)

同余定理:給定一個正整數(shù)m,如果兩個整數(shù)ab滿足a-b能夠被m整除岗钩,即(a-b)/m得到一個整數(shù)纽窟,那么就稱整數(shù)ab對模m同余,記作a≡b(mod m)兼吓。對模m同余是整數(shù)的一個等價關(guān)系臂港。

也就是說,如果兩個數(shù)對K的余數(shù)相同视搏,則兩數(shù)之差能被K整除审孽。

因此,我們可以用哈希表儲存數(shù)組中每個數(shù)字對K的余數(shù)浑娜,遇到相同余數(shù)則結(jié)果+1佑力。

class Solution {
public:
    int subarraysDivByK(vector<int>& A, int K) {
        unordered_map<int, int> m = {{0, 1}};
        int sum = 0, ans = 0;
        for (auto a : A) {
            sum += a;
            int mod = (sum % K + K) % K;
            if (m.count(mod)) {
                ans += m[mod];
            }
            m[mod]++;
        }
        return ans;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市筋遭,隨后出現(xiàn)的幾起案子打颤,更是在濱河造成了極大的恐慌,老刑警劉巖漓滔,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件编饺,死亡現(xiàn)場離奇詭異,居然都是意外死亡响驴,警方通過查閱死者的電腦和手機(jī)透且,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來豁鲤,“玉大人秽誊,你說我怎么就攤上這事罕邀。” “怎么了养距?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵诉探,是天一觀的道長。 經(jīng)常有香客問我棍厌,道長肾胯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任耘纱,我火速辦了婚禮敬肚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘束析。我一直安慰自己艳馒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布员寇。 她就那樣靜靜地躺著弄慰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝶锋。 梳的紋絲不亂的頭發(fā)上陆爽,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機(jī)與錄音扳缕,去河邊找鬼慌闭。 笑死,一個胖子當(dāng)著我的面吹牛躯舔,可吹牛的內(nèi)容都是我干的驴剔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼粥庄,長吁一口氣:“原來是場噩夢啊……” “哼丧失!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起飒赃,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤利花,失蹤者是張志新(化名)和其女友劉穎科侈,沒想到半個月后载佳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡臀栈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年蔫慧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片权薯。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡姑躲,死狀恐怖睡扬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情黍析,我是刑警寧澤卖怜,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站阐枣,受9級特大地震影響马靠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蔼两,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一甩鳄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧额划,春花似錦妙啃、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抑胎,卻和暖如春储笑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背圆恤。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工突倍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盆昙。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓羽历,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淡喜。 傳聞我的和親對象是個殘疾皇子秕磷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345