LeetCode 1052 愛生氣的書店老闆

2021-10-19 22:54:21 字數 1377 閱讀 2047

1052. 愛生氣的書店老闆

今天,書店老闆有一家店打算試營業customers.length分鐘。每分鐘都有一些顧客(customers[i])會進入書店,所有這些顧客都會在那一分鐘結束後離開。

在某些時候,書店老闆會生氣。 如果書店老闆在第i分鐘生氣,那麼grumpy[i] = 1,否則grumpy[i] = 0。 當書店老闆生氣時,那一分鐘的顧客就會不滿意,不生氣則他們是滿意的。

書店老闆知道乙個秘密技巧,能抑制自己的情緒,可以讓自己連續x分鐘不生氣,但卻只能使用一次。

請你返回這一天營業下來,最多有多少客戶能夠感到滿意的數量。

示例:

輸入:customers = [1,0,1,2,1,1,7,5], grumpy = [0,1,0,1,0,1,0,1], x = 3

輸出:16

解釋:書店老闆在最後 3 分鐘保持冷靜。

感到滿意的最大客戶數量 = 1 + 1 + 1 + 1 + 7 + 5 = 16.

自己解法:理解錯了,把x直接當成1在計算

for(i=1;i<=m;i++)

else if(max官方解法:實際上是考察滑動視窗,利用x不同,求出最合適的x獲取最佳值

int n = customers.size();

for (int i = 0; i < n; i++)

}int increase = 0;

for (int i = 0; i < x; i++)

int maxincrease = increase;

for (int i = x; i < n; i++)

return total + maxincrease;

}

另外看到乙個巧妙地解法:

由於「技巧」只會將情緒將「生氣」變為「不生氣」,不生氣仍然是不生氣。

我們可以先將原本就滿意的客戶加入答案,同時將對應的 customers[i] 變為 0。

之後的問題轉化為:在 customers 中找到連續一段長度為 x 的子陣列,使得其總和最大。這部分就是我們應用技巧所得到的客戶。

class solution 

}int max = 0, cur = 0;

for (int i = 0, j = 0; i < n; i++)

return ans + max;

}} 時間複雜度:o(n)o(n)o(n)

空間複雜度:o(1)o(1)o(1)

滑動視窗還是計網學的,當時覺得簡單一帶而過,現在重新認識,感覺以前的老傢伙確實牛皮吼。

leetcode1052愛生氣的書店老闆

滑動視窗第三天今天,書店老闆有一家店打算試營業 customers.length 分鐘。每分鐘都有一些顧客 customers i 會進入書店,所有這些顧客都會在那一分鐘結束後離開。在某些時候,書店老闆會生氣。如果書店老闆在第 i 分鐘生氣,那麼 grumpy i 1,否則 grumpy i 0。當...

LeetCode 1052 愛生氣的書店老闆

今天,書店老闆有一家店打算試營業 customers.length 分鐘。每分鐘都有一些顧客 customers i 會進入書店,所有這些顧客都會在那一分鐘結束後離開。在某些時候,書店老闆會生氣。如果書店老闆在第 i 分鐘生氣,那麼 grumpy i 1,否則 grumpy i 0。當書店老闆生氣時...

LeetCode1052 愛生氣的書店老闆

今天,書店老闆有一家店打算試營業 customers.length 分鐘。每分鐘都有一些顧客 customers i 會進入書店,所有這些顧客都會在那一分鐘結束後離開。在某些時候,書店老闆會生氣。如果書店老闆在第 i 分鐘生氣,那麼 grumpy i 1,否則 grumpy i 0。當書店老闆生氣時...