Leetcode—1588.所有奇数长度子数组的和【简单】

编程入门 行业动态 更新时间:2024-10-27 20:33:14

Leetcode—1588.所有<a href=https://www.elefans.com/category/jswz/34/1766827.html style=奇数长度子数组的和【简单】"/>

Leetcode—1588.所有奇数长度子数组的和【简单】

2023每日刷题(十九)

Leetcode—1588.所有奇数长度子数组的和

直接法实现代码

int sumOddLengthSubarrays(int* arr, int arrSize){int i = 1;int sum = 0;int left = 0, right;int k;int j = 0;while(i <= arrSize) {for(left = 0; left < arrSize; left++) {right = left + i;k = left;if(right <= arrSize) {while(k < right) {sum += arr[k++];}} else {break;}}j++;i = 2 * j + 1;}return sum;
}

运行结果

枚举法实现代码

int sumOddLengthSubarrays(int* arr, int arrSize){int ans = 0, sum;for(int i = 0; i < arrSize; i++) {for(int j = i; j < arrSize; j++) {if((j - i + 1) % 2 == 1) {sum = 0;for(int k = i; k <= j; k++) {sum += arr[k];}ans += sum;}}}return ans;
}

运行结果


时间复杂度 O ( n 3 ) O(n^3) O(n3),空间复杂度 O ( 1 ) O(1) O(1)

改进的实现代码

int sumOddLengthSubarrays(int* arr, int arrSize){int ans = 0, sum;for(int i = 0; i < arrSize; i++) {sum = 0;for(int j = i; j < arrSize; j++) {sum += arr[j];if((j - i + 1) % 2 == 1) {ans += sum;}}}return ans;
}

时间复杂度 O ( n 2 ) O(n^2) O(n2),空间复杂度 O ( 1 ) O(1) O(1)

运行结果

前缀和实现代码

int sumOddLengthSubarrays(int* arr, int arrSize){int *preSum = (int *)malloc(sizeof(int) * (arrSize + 1));preSum[0] = 0;for(int i = 0; i < arrSize; i++) {preSum[i + 1] = preSum[i] + arr[i];}int ans = 0;for(int i = 0; i < arrSize; i++) {for(int j = i; j < arrSize; j++) {if((j - i + 1) % 2 == 1) {ans += preSum[j + 1] - preSum[i];}}}free(preSum);return ans;
}

时间复杂度 O ( n 2 ) O(n^2) O(n2),空间复杂度 O ( n ) O(n) O(n)

运行结果


之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

更多推荐

Leetcode—1588.所有奇数长度子数组的和【简单】

本文发布于:2023-11-16 17:58:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1630860.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:奇数   数组   长度   简单   Leetcode

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!