LeetCode 第十八天(統計 優美子陣列 )

2021-10-05 07:12:42 字數 1350 閱讀 1816

leetcode——第十八天

1248. 統計「優美子陣列」

給你乙個整數陣列 nums 和乙個整數 k。

如果某個 連續 子陣列中恰好有 k 個奇數數字,我們就認為這個子陣列是「優美子陣列」。

請返回這個陣列中「優美子陣列」的數目。

示例 1:

輸入:nums = [1,1,2,1,1], k = 3

輸出:2

解釋:包含 3 個奇數的子陣列是 [1,1,2,1] 和 [1,2,1,1] 。

示例 2:

輸入:nums = [2,4,6], k = 1

輸出:0

解釋:數列中不包含任何奇數,所以不存在優美子陣列。

示例 3:

輸入:nums = [2,2,2,1,2,2,1,2,2,2], k = 2

輸出:16

1 <= nums.length <= 50000

1 <= nums[i] <= 10^5

1 <= k <= nums.length

分析:一次迴圈遍歷,求出每個最優子陣列,再去判斷乙個個遍歷顯然是會超時。這邊自己想到就是找個k個奇數,然後判斷前後偶數的個數,相乘就是這乙個區間的最優子陣列個數,不斷遍歷到結束,不過寫起來比較繁瑣一點,官方給出了增加乙個陣列來存放奇數下標,就不需求另外用四個變數去存放修改位置了。odd陣列**

class

solution

//首尾即邊界情況處理

odd[0]

=-1;

odd[

++count]

= n;

for(

int i=

1;i+k<=count;i++

)return res;}}

;

官方第二個字首和太秀了,具體備註寫了些,寫的有點亂,下面是官網說明。

另外字首和+差分具體可以看看這兩篇部落格(第一篇有解釋點,第二篇偏**和應用):

字首和差分

字首和、二維字首和與差分的小總結

字首和**

class

solution

return res;}}

;

2.總結

這題目第一種應該很多都知道,就是邊界情況要處理,第二種反正我不是很會。

第十八天部落格

首先是複習 複習昨天學習的19個選擇器 加上清除是20個選擇器 基本選擇器5個 id選擇器 id 類選擇器 樣式名稱 選擇器 元素選擇器 標籤名稱 組選擇器 id,class,標籤名稱 層次選擇器4個 選擇父元素中的某些元素 父元素 子元素 選擇父元素中所有的子元素,不包括後代元 父元素 子元素 選...

第十八天servlet HTTP Request

servlet特點 預設的servlet 當第一次訪問時初始化init 自定義初始化 在配置檔案中標籤中 值值為正數,伺服器啟動執行init 自定義 值為正數,伺服器啟動,且servlet被呼叫時執行init 預設 用註解去配置servlet public inte ce webservlet st...

失業第十八天

今天的主題還是面試,上午面了第四家公司,這家公司做rtos的,當然問了很多作業系統相關的知識。說來也巧,自己這段時間剛好在看這個rtos 原始碼,在網上也投了這家公司,但是過了一天就收到職位不符合的訊息,但是公司居然打 過來預約面試時間,心裡一陣欣喜。不管結果如何好像是白白給了個面試的機會試試吧,說...