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

微起点网站怎么设置的山东疫情最新情况

微起点网站怎么设置的,山东疫情最新情况,网站建设公司好哪家好,上海建设工程咨询有限公司1865. 找出和为指定值的下标对 给你两个整数数组 nums1 和 nums2 ,请你实现一个支持下述两类查询的数据结构: 累加 ,将一个正整数加到 nums2 中指定下标对应元素上。计数 ,统计满足 nums1[i] nums2[j] 等于指定值的下标对 (i, …

1865. 找出和为指定值的下标对

给你两个整数数组 nums1nums2 ,请你实现一个支持下述两类查询的数据结构:

  1. 累加 ,将一个正整数加到 nums2 中指定下标对应元素上。
  2. 计数 ,统计满足 nums1[i] + nums2[j] 等于指定值的下标对 (i, j) 数目(0 <= i < nums1.length0 <= j < nums2.length)。
    实现 FindSumPairs 类:
  • FindSumPairs(int[] nums1, int[] nums2) 使用整数数组 nums1nums2 初始化 FindSumPairs 对象。
  • void add(int index, int val)val 加到 nums2[index] 上,即,执行 nums2[index] += val
  • int count(int tot) 返回满足 nums1[i] + nums2[j] == tot 的下标对 (i, j) 数目。
    示例:
    输入:
["FindSumPairs", "count", "add", "count", "count", "add", "add", "count"]
[[[1, 1, 2, 2, 2, 3], [1, 4, 5, 2, 5, 4]], [7], [3, 2], [8], [4], [0, 1], [1, 1], [7]]

输出:

[null, 8, null, 2, 1, null, null, 11]

解释:
FindSumPairs findSumPairs = new FindSumPairs([1, 1, 2, 2, 2, 3], [1, 4, 5, 2, 5, 4]);
findSumPairs.count(7); // 返回 8 ; 下标对 (2,2), (3,2), (4,2), (2,4), (3,4), (4,4) 满足 2 + 5 = 7 ,下标对 (5,1), (5,5) 满足 3 + 4 = 7
findSumPairs.add(3, 2); // 此时 nums2 = [1,4,5,4,5,4]
findSumPairs.count(8); // 返回 2 ;下标对 (5,2), (5,4) 满足 3 + 5 = 8
findSumPairs.count(4); // 返回 1 ;下标对 (5,0) 满足 3 + 1 = 4
findSumPairs.add(0, 1); // 此时 nums2 = [2,4,5,4,5,4]
findSumPairs.add(1, 1); // 此时 nums2 = [2,5,5,4,5,4]
findSumPairs.count(7); // 返回 11 ;下标对 (2,1), (2,2), (2,4), (3,1), (3,2), (3,4), (4,1), (4,2), (4,4) 满足 2 + 5 = 7 ,下标对 (5,3), (5,5) 满足 3 + 4 = 7
提示:

  • 1 <= nums1.length <= 1000
  • 1 <= nums2.length <= 10^5
  • 1 <= nums1[i] <= 10^9
  • 1 <= nums2[i] <= 10^5
  • 0 <= index < nums2.length
  • 1 <= val <= 10^5
  • 1 <= tot <= 10^9
  • 最多调用 addcount 函数各 1000

思路

注意,nums1和nums2的长度范围是不一样的,nums1很短,我们可以利用这个特点,遍历nums1,和nums2的counter,这样不会超时

type FindSumPairs struct {  nums1 []int       // nums1.length <= 1000  nums2 []int       // nums2.length <= 10e6  cnt2  map[int]int // counter of nums2  
}  func Constructor(nums1 []int, nums2 []int) FindSumPairs {  var cnt2 = make(map[int]int)  for _, x := range nums2 {  cnt2[x]++  }  return FindSumPairs{nums1, nums2, cnt2}  
}  func (this *FindSumPairs) Add(index int, val int) {  this.cnt2[this.nums2[index]]--  this.nums2[index] += val  this.cnt2[this.nums2[index]]++  
}  func (this *FindSumPairs) Count(tot int) int {  var res int  for _, x := range this.nums1 {  res += this.cnt2[tot-x]  }  return res  
}  /**  * Your FindSumPairs object will be instantiated and called as such: * obj := Constructor(nums1, nums2); * obj.Add(index,val); * param_2 := obj.Count(tot); */

也可以把nums1和nums2都转为counter

type FindSumPairs struct {  nums1 []int       // nums1.length <= 1000  nums2 []int       // nums2.length <= 10e6  cnt1  map[int]int // counter of nums1  cnt2  map[int]int // counter of nums2  
}  func Constructor(nums1 []int, nums2 []int) FindSumPairs {  var cnt1 = make(map[int]int)  var cnt2 = make(map[int]int)  for _, x := range nums2 {  cnt2[x]++  }  for _, x := range nums1 {  cnt1[x]++  }  return FindSumPairs{nums1, nums2, cnt1, cnt2}  
}  func (this *FindSumPairs) Add(index int, val int) {  this.cnt2[this.nums2[index]]--  this.nums2[index] += val  this.cnt2[this.nums2[index]]++  
}  func (this *FindSumPairs) Count(tot int) int {  var res int  for k, v := range this.cnt1 {  res += v * (this.cnt2[tot-k])  }  return res  
}
http://www.dtcms.com/wzjs/445656.html

相关文章:

  • 时时彩五星做号网站怎样做产品推广
  • 做网站要多少钱呀互联网广告代理商
  • 北京响应式网站开发课程培训
  • 公司网站的备案号是如何链接的莆田seo推广公司
  • 建立网站该怎样做2024免费网站推广大全
  • 网站缩略图尺寸网络广告策划
  • 企业网站建设需要许可证吗sem广告
  • 网站建设课程设计要求百度关键词快速优化
  • 网站的上一页怎么做百度收录网站入口
  • 做网站商城必须要买空间吗店铺运营
  • 营销型网站建设题营销平台建设
  • 郑州高端网站建设关键词热度查询工具
  • 网站定制论坛淘宝代运营公司十大排名
  • 校园引流推广方法手机优化大师怎么退款
  • 北京市建设公租房网站郑州关键词优化平台
  • 广州学建设网站网络营销方案有哪些
  • 网站建设hbwnet百度电脑版登录网站
  • 网站建设资质要求广州最新消息
  • 深圳市政府网站建设情况品牌广告策划方案
  • 设计公司网站建设模板图培训心得体会范文
  • 用户体验较好的网站品牌公关案例
  • 凡客做网站做网站怎么赚钱
  • 如何解决网站图片打开慢百度网页版首页
  • wordpress花园网站如何制作网页链接
  • 济南三合一网站建设全网推广平台
  • 百度百科官网上海seo网站优化软件
  • 网站开发背景今天新闻头条
  • 工程造价招聘网最新招聘soe搜索优化
  • 东莞做网站seo福州百度推广排名优化
  • 网站开发哪里接业务抖音seo排名系统哪个好用