算法題:給定正整數(shù)數(shù)組和正整數(shù)k婶肩。數(shù)組中只含有0或1办陷,可以最多k次將0翻轉(zhuǎn)成1貌夕。求數(shù)組中最長連續(xù)1的長度。

算法題:給定正整數(shù)數(shù)組和正整數(shù)k民镜。數(shù)組中只含有0或1啡专,可以最多k次將0翻轉(zhuǎn)成1。求數(shù)組中最長連續(xù)1的長度制圈。

以下是該段JavaScript代碼的解題思路:

解題思路:

1植旧、初始化參數(shù):
· 初始化左邊界left和右邊界right,均指向數(shù)組的第一個(gè)元素离唐。
· 初始化zeros病附,用于記錄當(dāng)前窗口內(nèi)0的個(gè)數(shù)。
· 初始化maxLength亥鬓,用于記錄最長連續(xù)1的長度完沪。
2、遍歷數(shù)組:
· 使用while循環(huán)遍歷數(shù)組嵌戈,直到右邊界right到達(dá)數(shù)組的末尾覆积。
3、處理右邊界:
· 每次循環(huán)熟呛,檢查右邊界對(duì)應(yīng)的元素是否為0宽档。如果是,則zeros增加1庵朝。
4吗冤、調(diào)整窗口大小:
· 如果zeros的數(shù)量超過了k(即允許翻轉(zhuǎn)的0的最大數(shù)量)九府,則需要縮小窗口椎瘟,以去除多余的0。
· 使用內(nèi)部的while循環(huán)侄旬,逐步移動(dòng)左邊界left肺蔚,直到zeros的數(shù)量減少到k或以下。
· 在移動(dòng)左邊界的過程中儡羔,如果左邊界對(duì)應(yīng)的元素是0宣羊,則zeros減少1。
5汰蜘、更新最長連續(xù)1的長度:
· 在每次循環(huán)中仇冯,計(jì)算當(dāng)前窗口的大小(right - left + 1)鉴扫,并與之前記錄的最長連續(xù)1的長度maxLength比較赞枕。
· 如果當(dāng)前窗口大小更大,則更新maxLength坪创。
6炕婶、移動(dòng)右邊界:
· 在每次循環(huán)的末尾,右邊界right向右移動(dòng)一位莱预,以處理下一個(gè)數(shù)組元素柠掂。
7、返回結(jié)果:
· 當(dāng)右邊界right遍歷完整個(gè)數(shù)組后依沮,返回最長連續(xù)1的長度maxLength涯贞。

這個(gè)解題思路的核心是利用滑動(dòng)窗口技巧來動(dòng)態(tài)地調(diào)整窗口的大小,使得窗口內(nèi)0的個(gè)數(shù)不超過k危喉,從而找到最長連續(xù)1的長度宋渔。通過不斷移動(dòng)窗口的左右邊界,算法能夠在一次遍歷中有效地解決問題辜限。

javascript解題參考代碼:


//javascript

function longestOnes(nums, k) {  
    let left = 0; // 滑動(dòng)窗口左邊界  
    let right = 0; // 滑動(dòng)窗口右邊界  
    let zeros = 0; // 窗口內(nèi)0的個(gè)數(shù)  
    let maxLength = 0; // 最長連續(xù)1的長度  
  
    while (right < nums.length) {  
        // 如果當(dāng)前數(shù)字是0皇拣,則增加0的計(jì)數(shù)  
        if (nums[right] === 0) {  
            zeros++;  
        }  
  
        // 如果0的個(gè)數(shù)超過了k,則需要收縮窗口左邊界  
        while (zeros > k) {  
            // 如果左邊界的數(shù)字是0薄嫡,則減少0的計(jì)數(shù)  
            if (nums[left] === 0) {  
                zeros--;  
            }  
            // 左邊界向右移動(dòng)  
            left++;  
        }  
  
        // 更新最長連續(xù)1的長度  
        maxLength = Math.max(maxLength, right - left + 1);  
  
        // 右邊界向右移動(dòng)  
        right++;  
    }  
  
    return maxLength;  
}  
  
// 測試  
const nums = [1, 0, 0, 1, 1, 0, 1, 1, 0, 1];  
const k = 2;  
const result = longestOnes(nums, k);  
console.log("最長連續(xù)1的長度為:", result);

這段代碼定義了一個(gè)longestOnes函數(shù)氧急,它接收一個(gè)只包含0和1的數(shù)組nums以及一個(gè)正整數(shù)k作為參數(shù)。函數(shù)內(nèi)部使用滑動(dòng)窗口技巧來遍歷數(shù)組毫深,并維護(hù)一個(gè)窗口吩坝,其中最多包含k個(gè)0。當(dāng)0的個(gè)數(shù)超過k時(shí)哑蔫,窗口的左邊界會(huì)向右移動(dòng)钉寝,直到0的個(gè)數(shù)減少到k或以下。在此過程中闸迷,函數(shù)記錄并更新最長連續(xù)1的長度瘩蚪。最后,函數(shù)返回這個(gè)長度稿黍。

在測試部分疹瘦,我們創(chuàng)建了一個(gè)示例數(shù)組nums并設(shè)置了k的值為2,然后調(diào)用longestOnes函數(shù)并打印結(jié)果巡球。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末言沐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酣栈,更是在濱河造成了極大的恐慌险胰,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矿筝,死亡現(xiàn)場離奇詭異起便,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門榆综,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妙痹,“玉大人,你說我怎么就攤上這事鼻疮∏右粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵判沟,是天一觀的道長耿芹。 經(jīng)常有香客問我,道長挪哄,這世上最難降的妖魔是什么吧秕? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮迹炼,結(jié)果婚禮上砸彬,老公的妹妹穿的比我還像新娘。我一直安慰自己疗涉,他們只是感情好拿霉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著咱扣,像睡著了一般绽淘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闹伪,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天沪铭,我揣著相機(jī)與錄音,去河邊找鬼偏瓤。 笑死杀怠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的厅克。 我是一名探鬼主播赔退,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼证舟!你這毒婦竟也來了硕旗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤女责,失蹤者是張志新(化名)和其女友劉穎漆枚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抵知,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡墙基,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年软族,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片残制。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡立砸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痘拆,到底是詐尸還是另有隱情仰禽,我是刑警寧澤氮墨,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布纺蛆,位于F島的核電站,受9級(jí)特大地震影響规揪,放射性物質(zhì)發(fā)生泄漏桥氏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一猛铅、第九天 我趴在偏房一處隱蔽的房頂上張望字支。 院中可真熱鬧,春花似錦奸忽、人聲如沸堕伪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽欠雌。三九已至,卻和暖如春疙筹,著一層夾襖步出監(jiān)牢的瞬間富俄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工而咆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霍比,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓暴备,卻偏偏與公主長得像悠瞬,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涯捻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355