当前位置: 首页 > news >正文

湛江网站建设方案维护如何做好网络宣传工作

湛江网站建设方案维护,如何做好网络宣传工作,北京正规的网络建站服务热线,温州市网站建设目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你一个数…

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台


描述:

给你一个数组 nums ,请你完成两类查询。

  1. 其中一类查询要求 更新 数组 nums 下标对应的值
  2. 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nums元素的  ,其中 left <= right

实现 NumArray 类:

  • NumArray(int[] nums) 用整数数组 nums 初始化对象
  • void update(int index, int val) 将 nums[index] 的值 更新 为 val
  • int sumRange(int left, int right) 返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nums元素的  (即,nums[left] + nums[left + 1], ..., nums[right]

示例 1:

输入:
["NumArray", "sumRange", "update", "sumRange"]
[[[1, 3, 5]], [0, 2], [1, 2], [0, 2]]
输出:
[null, 9, null, 8]解释:
NumArray numArray = new NumArray([1, 3, 5]);
numArray.sumRange(0, 2); // 返回 1 + 3 + 5 = 9
numArray.update(1, 2);   // nums = [1,2,5]
numArray.sumRange(0, 2); // 返回 1 + 2 + 5 = 8

提示:

  • 1 <= nums.length <= 3 * 104
  • -100 <= nums[i] <= 100
  • 0 <= index < nums.length
  • -100 <= val <= 100
  • 0 <= left <= right < nums.length
  • 调用 update 和 sumRange 方法次数不大于 3 * 104 

解题思路:

这题数组的长度为310^4,如果时间复杂度是O(n2),则会超时。所以这题一定不能每次都遍历。 
但是我们可以发现一个规律,就是update的时候,影响的范围很小,甚至有可能都对sumRange不产生影响,所以,我们可以把影响范围缩减到最小。
我们可以把nums数组划分为k块,暂且用N1,N2,Nk表示,则left和right会出现2种情况。 
left和right属于同一块:这种情况,直接求left和right的累加值即可。 
left和right不属于同一块:这种情况,求left到其所属块的尾之间的和,right所属的块的头到right之间的和,以及left和right之间的块的和。三者相加,就是最终值。

代码:

class NumArray {private int[] nums;private int[] pieces;private int pieceLength;public NumArray(int[] nums) {this.nums = nums;pieceLength = (int) Math.ceil(Math.sqrt(nums.length));pieces = new int[nums.length / pieceLength + 1];for (int i = 0; i < nums.length; i++) {pieces[i / pieceLength] = pieces[i / pieceLength] + nums[i];}}public void update(int index, int val) {pieces[index / pieceLength] += (val-nums[index]);nums[index] = val;}public int sumRange(int left, int right) {int piece1 = left / pieceLength;int piece2 = right / pieceLength;int sum1 = 0, sum2 = 0, sum3 = 0;if (piece1 == piece2) {for (int i = left; i <= right; i++) {sum1 += nums[i];}} else {for (int i = left; i < pieceLength * (piece1+1); i++) {sum1 += nums[i];}for (int i = pieceLength * piece2; i <= right; i++) {sum3 += nums[i];}for (int i = piece1 + 1; i < piece2; i++) {sum2 += pieces[i];}}int sum = sum1 + sum2 + sum3;return sum;}}

http://www.shuangfujiaoyu.com/news/2259.html

相关文章:

  • 免费的自建视频网站seo中国是什么
  • 网站导航栏下拉框怎么做上海的重大新闻
  • 徐州网站建设费用网站开发怎么做
  • 英语网站都可以做哪些内容多用户建站平台
  • wordpress页面回收站一个具体网站的seo优化
  • 国内比较高端的设计网站北京seo工程师
  • 能打开任何网站浏览器下载新闻发布
  • 服装网站建设的目的和意义外贸网站建站平台
  • 微信公众号网站导航怎么做互联网推广营销
  • 网页紧急升级英文seo
  • 和各大网站做视频的工作总结上海seo网站优化
  • 组建个人网站武汉百度快速排名提升
  • 新手学做网站相关书籍农夫山泉软文300字
  • 中国做外贸的网站有哪些内容螺蛳粉营销策划方案
  • 建设单位企业锁登陆网站廊坊seo排名霸屏
  • 网站类的百度百科怎么做微信附近人推广引流
  • h5 php网站开发怎么推广软件
  • 建设公司网站新闻宣传管理制度seo排名优化关键词
  • 做百度网站需要什么条件网络营销的策划方案
  • 备案网站内容格式填写磁力蜘蛛搜索引擎
  • 有没有专门做名片的网站互联网营销主要学什么
  • 万维网网站注册宁波seo外包推广平台
  • 网店的网站设计方案百度搜索竞价推广
  • 连云港专业做网站网站免费推广的方法
  • 我有一个域名怎么做网站软文媒体
  • 哈尔滨网站建设论坛哈尔滨seo
  • 唐山网站设计制作如何优化搜索引擎的搜索功能
  • 泰安人才网招聘网官网引擎优化是什么意思
  • 天津专业做网站苏州seo招聘
  • 网站建设专业学什么网站推广策划书