当前位置: 首页> 娱乐> 影视 > leetcode1588 前缀和

leetcode1588 前缀和

时间:2025/8/23 9:29:17来源:https://blog.csdn.net/zhangpeixuan/article/details/139751339 浏览次数:0次

暴力枚举

class Solution {public int sumOddLengthSubarrays(int[] arr) {int res=0;for(int i=0;i<arr.length;i++){for(int j=1;j+i<=arr.length;j+=2){for(int k=i;k<i+j;k++){res+=arr[k];}}}return res;}
}

这种算法是将示例中的【1,4,2,5,3】得到1然后得到1 4 2 在得到1 4 2 5 3,再进行下一个4的遍历,中间的for就是控制次数,最外层遍历一次数,最里层加值。

前缀和:

class Solution {public int sumOddLengthSubarrays(int[] arr) {int [] qianzhui=new int[arr.length+1];for(int i=0;i<arr.length;i++){qianzhui[i+1]=arr[i]+qianzhui[i];}int res=0;for(int i=0;i<arr.length;i++){for(int j=1;i+j<=arr.length;j+=2){res+=qianzhui[i+j]-qianzhui[i];}}
return res;}
}

暴力法的时间是O(n^3) 我们用前缀和的方法相当于把暴力法中的最内层的for循环拿出来,用之前的数组写一个前缀和的数组即可将时间复杂度降到O(n^2).

关键字:leetcode1588 前缀和

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: