713. 乘積小于K的子數(shù)組

713. 乘積小于K的子數(shù)組

問(wèn)題

給定一個(gè)正整數(shù)數(shù)組 nums
找出該數(shù)組內(nèi)乘積小于 k 的連續(xù)的子數(shù)組的個(gè)數(shù)好啰。

示例 1:

輸入: nums = [10,5,2,6], k = 100
輸出: 8
解釋: 8個(gè)乘積小于100的子數(shù)組分別為: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]

需要注意的是 [10,5,2] 并不是乘積小于100的子數(shù)組儿奶。

說(shuō)明:

  • 0 < nums.length <= 50000
  • 0 < nums[i] < 1000
  • 0 <= k < 10^6

解法

第一想法是使用雙指針一直乘框往,當(dāng)結(jié)果小于k時(shí),將fast指針與slow指針之間的子數(shù)組數(shù)量加到結(jié)果result中闯捎。但是難點(diǎn)在于如何排重椰弊。
我們會(huì)注意到這樣一種規(guī)律:

  • 當(dāng)fast等于slow時(shí)许溅,其實(shí)只有一種子數(shù)組就是[nums[fast]]
  • fastslow之間的全部子數(shù)組,必然包含所有的fast-1slow之間的子數(shù)組

此時(shí)會(huì)發(fā)現(xiàn)秉版,fastfast-1子數(shù)組的區(qū)別僅在于是否包含nums[fast]元素贤重,而包含全部nums[fast]元素的子數(shù)組數(shù)量為fast-slow+1,這個(gè)值清焕,就排除了重復(fù)的子數(shù)組并蝗,result對(duì)這個(gè)數(shù)字進(jìn)行暫存就可以在循環(huán)結(jié)束后直接得到數(shù)組數(shù)量。

當(dāng)乘積不滿(mǎn)足條件時(shí)秸妥,乘積除以slow指針元素滚停,slow指針前進(jìn),

代碼

java代碼

class Solution {
    public int numSubarrayProductLessThanK(int[] nums, int k) {
        // slow為慢指針粥惧,mul為slow與fast之間的乘積键畴,result為滿(mǎn)足條件的數(shù)組個(gè)數(shù).
        int slow = 0, mul = 1, result = 0;
        for (int fast = 0; fast < nums.length; fast++) {
            // fast指針前移,mul計(jì)算新的乘積突雪。
            mul *= nums[fast];
            //此時(shí)判斷mul是否已經(jīng)大于k了镰吵,當(dāng)大于時(shí),需要除slow元素直到滿(mǎn)足條件為止
            while (mul >= k && slow <= fast) {
                mul /= nums[slow++];
            }
            //這里可能會(huì)有疑問(wèn)需不需要判斷slow與fast的大小挂签,其實(shí)這里不需要判斷疤祭,前一步如果slow超過(guò)fast了,下一輪時(shí)饵婆,fast會(huì)趕上來(lái)勺馆。而且slow最多比f(wàn)ast多1,兩者相減再加一等于0侨核,符合數(shù)組數(shù)量為0草穆,不用擔(dān)心減成負(fù)數(shù)
            result += fast - slow + 1;
        }
        return result;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市搓译,隨后出現(xiàn)的幾起案子悲柱,更是在濱河造成了極大的恐慌,老刑警劉巖些己,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豌鸡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡段标,警方通過(guò)查閱死者的電腦和手機(jī)涯冠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)逼庞,“玉大人蛇更,你說(shuō)我怎么就攤上這事。” “怎么了派任?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵砸逊,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我掌逛,道長(zhǎng)师逸,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任颤诀,我火速辦了婚禮字旭,結(jié)果婚禮上对湃,老公的妹妹穿的比我還像新娘崖叫。我一直安慰自己,他們只是感情好拍柒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布心傀。 她就那樣靜靜地躺著,像睡著了一般拆讯。 火紅的嫁衣襯著肌膚如雪脂男。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天种呐,我揣著相機(jī)與錄音宰翅,去河邊找鬼。 笑死爽室,一個(gè)胖子當(dāng)著我的面吹牛汁讼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阔墩,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嘿架,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了啸箫?” 一聲冷哼從身側(cè)響起耸彪,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忘苛,沒(méi)想到半個(gè)月后蝉娜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扎唾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年蜀肘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稽屏。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡扮宠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坛增,我是刑警寧澤获雕,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站收捣,受9級(jí)特大地震影響届案,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜罢艾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一楣颠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咐蚯,春花似錦童漩、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至期奔,卻和暖如春侧馅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呐萌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工馁痴, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肺孤。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓罗晕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親渠旁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子攀例,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 線性表中的雙指針?lè)ㄊ侵竿ㄟ^(guò)兩個(gè)指針(游標(biāo))來(lái)指示線性表中的元素的方法。雙指針的使用本身并沒(méi)有什么神奇之處顾腊,但是通過(guò)...
    Like_eb56閱讀 513評(píng)論 0 0
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,183評(píng)論 0 3
  • 一些概念 數(shù)據(jù)結(jié)構(gòu)就是研究數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們之間相互關(guān)系粤铭,并對(duì)這種結(jié)構(gòu)定義相應(yīng)的運(yùn)算,而且確保經(jīng)過(guò)這...
    Winterfell_Z閱讀 5,791評(píng)論 0 13
  • 如果一個(gè)人焦慮、奔波吗垮、不安垛吗、上躥下跳,其實(shí)是因?yàn)樗拇嬖诟袥](méi)有被滿(mǎn)足烁登。就像是生存在驅(qū)動(dòng)動(dòng)物奔波撕咬一樣怯屉,對(duì)存在感的...
    華筠沁閱讀 1,181評(píng)論 1 2
  • 十幾歲那時(shí)候,剛有了朦朧的世界觀萌芽但又不太成熟,想不明白宗教的作用是什么锨络。 可能跟影視產(chǎn)品的宣傳也有關(guān)系赌躺,很容易...
    溫柔寒江雪閱讀 957評(píng)論 0 2