leet-code/src/main/java/leetcode/editor/cn/SumOfAllOddLengthSubarrays.java
2021-08-29 23:57:50 +08:00

75 lines
1.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。
//
// 子数组 定义为原数组中的一个连续子序列。
//
// 请你返回 arr 中 所有奇数长度子数组的和 。
//
//
//
// 示例 1
//
// 输入arr = [1,4,2,5,3]
//输出58
//解释:所有奇数长度子数组和它们的和为:
//[1] = 1
//[4] = 4
//[2] = 2
//[5] = 5
//[3] = 3
//[1,4,2] = 7
//[4,2,5] = 11
//[2,5,3] = 10
//[1,4,2,5,3] = 15
//我们将所有值求和得到 1 + 4 + 2 + 5 + 3 + 7 + 11 + 10 + 15 = 58
//
// 示例 2
//
// 输入arr = [1,2]
//输出3
//解释:总共只有 2 个长度为奇数的子数组,[1] 和 [2]。它们的和为 3 。
//
// 示例 3
//
// 输入arr = [10,11,12]
//输出66
//
//
//
//
// 提示:
//
//
// 1 <= arr.length <= 100
// 1 <= arr[i] <= 1000
//
// Related Topics 数组 前缀和 👍 123 👎 0
package leetcode.editor.cn;
//1588:所有奇数长度子数组的和
class SumOfAllOddLengthSubarrays {
public static void main(String[] args) {
//测试代码
Solution solution = new SumOfAllOddLengthSubarrays().new Solution();
}
//力扣代码
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int sumOddLengthSubarrays(int[] arr) {
int sum = 0;
int n = arr.length;
for (int start = 0; start < n; start++) {
for (int length = 1; start + length <= n; length += 2) {
int end = start + length - 1;
for (int i = start; i <= end; i++) {
sum += arr[i];
}
}
}
return sum;
}
}
//leetcode submit region end(Prohibit modification and deletion)
}