lLeeCode最優題解收錄:1588.所有奇數長度子陣列的和
題解如下:
//以{1,2,3,4,5}為例,計算i為某確定值時候對應arr[i]出現的總次數。
public int sumOddLengthSubarrays(int[] arr) {
int sum = 0;
int len = arr.length;
for (int i = 0; i < arr.length; i++) {
//當i = 2時候,arr[2] = 3,左邊有2個元素1,2,
//需要保證連續,則取元素方式如下:
//取0個:{3}
//取1個:只取一個元素2.則{2,3}
//取2個:取2個元素1和2,則{1,2,3}
//所以有3種情況就是2+1種情況,也就是i+1種情況
int left = i + 1;
//右邊元素個數為:len-(i+1)個
//同理可得
int right = len - (i + 1) + 1;
//左邊取的元素個數0,1,2;則只有1為奇數,可得左邊取奇數個元素的方式:
int left_odd = left / 2;
//左邊取的元素個數0,1,2;則偶數為0個或者2個,可得左邊取偶數個元素的方式:
int left_even = (left + 1) / 2;
//同上,右邊取奇數個元素的方式
int right_odd = right / 2;
//同上,右邊取偶數個元素的方式
int right_even = (right + 1) / 2;
//左邊取任意奇數個同時右邊取任意奇數個加上自身,一共奇數個。任意組合所以是乘法。
//左邊取任意偶數個同時右邊取任意偶數個加上自身,一共奇數個。
//注意包含左右各取0個。
sum += arr[i] * (left_odd * right_odd + left_even * right_even);
}
return sum;
}
參考文章:https://leetcode-cn.com/problems/sum-of-all-odd-length-subarrays/solution/jie-shi-de-dian-luo-suo-bu-guo-ying-gai-hao-li-jie/
相關文章
- 1588 所有奇數長度子陣列的和(字首和)陣列
- 978 最長湍流子陣列陣列
- 程式碼隨想錄陣列二刷:長度最小的子陣列(滑動視窗)陣列
- 203. 長度最小的子陣列陣列
- 陣列進行奇數和偶數操作 把奇數放在陣列前面 偶數放在陣列後面陣列
- 結構體最後的零長度陣列結構體陣列
- 每日一練(45):長度最小的子陣列陣列
- Leetcode 陣列中和為給定值的最長子陣列LeetCode陣列
- 2022-07-09:總長度為n的陣列中,所有長度為k的子序列裡,有多少子序列的和為偶數?陣列
- Java 陣列的不同定義方式和陣列長度為可變引數Java陣列
- 繩子的長度;及找陣列的波谷分析陣列
- 求陣列內所有偶數的和陣列
- javascript刪除陣列中所有奇數程式碼例項JavaScript陣列
- 最長等差數列;及子序列分析
- 面試演算法題(4)--將一個整數陣列中的所有奇數放到偶數前面面試演算法陣列
- 字元陣列的長度字元陣列
- sizeof 和 strlen 計算陣列大小和長度詳解陣列
- 【LeetCode動態規劃#14】子序列系列題(最長遞增子序列、最長連續遞增序列、最長重複子陣列、最長公共子序列)LeetCode動態規劃陣列
- 演算法陣列中降序數列的最大長度演算法陣列
- 最長公共子串 二維陣列 Go實現陣列Go
- 程式碼隨想錄刷題day 2 | 977.有序陣列的平方、 209.長度最小的子陣列、 59.螺旋矩陣II陣列矩陣
- LeetCode-209-長度最小的子陣列LeetCode陣列
- 【LeetCode】209. 長度最小的子陣列LeetCode陣列
- leetcode_209. 長度最小的子陣列LeetCode陣列
- 子陣列異或和問題陣列
- 查詢陣列中出現次數大於陣列長度一半的數字陣列
- 【貪心法】奇數陣列 思路解析和程式碼陣列
- C++陣列長度C++陣列
- 子陣列的最大異或和問題陣列
- javascript如何獲取陣列的長度和遍歷陣列的每一項JavaScript陣列
- POJ 2217-Secretary(字尾陣列+高度陣列-最大公共子串長度)陣列
- Java 定義長度為 0 的陣列 / 空陣列Java陣列
- ural 1297 最長迴文子串 字尾陣列陣列
- 977.有序陣列的平方 ,209.長度最小的子陣列 ,59.螺旋矩陣II陣列矩陣
- poj 2774 求兩字串的最長公共子串 字尾陣列字串陣列
- 程式碼隨想錄演算法訓練營第二天 | 陣列 209.長度最小的子陣列演算法陣列
- C++獲取陣列的長度C++陣列
- Javascript如何改變陣列的長度?JavaScript陣列