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。當書店老闆生氣時...