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

北京 网站建设 京icp河源seo

北京 网站建设 京icp,河源seo,网络安装公司,日照森林公园文章目录题目描述题目链接题目难度——中等方法一:排序双指针代码/Python代码/C方法二代码/Python总结题目描述 这是前天周赛的第二题。 统计公平数对的数目 - 给你一个下标从 0 开始、长度为 n 的整数数组 nums ,和两个整数 lower 和 upper &#xff0c…

文章目录

    • 题目描述
    • 题目链接
    • 题目难度——中等
    • 方法一:排序+双指针
      • 代码/Python
      • 代码/C++
    • 方法二
      • 代码/Python
    • 总结

题目描述

这是前天周赛的第二题。

统计公平数对的数目 - 给你一个下标从 0 开始、长度为 n 的整数数组 nums ,和两个整数 lower 和 upper ,返回 公平数对的数目 。

如果 (i, j) 数对满足以下情况,则认为它是一个 公平数对 :

  • 0 <= i < j < n,且
  • lower <= nums[i] + nums[j] <= upper

 

示例 1:

输入:nums = [0,1,7,4,4,5], lower = 3, upper = 6
输出:6
解释:共计 6 个公平数对:(0,3)、(0,4)、(0,5)、(1,3)、(1,4) 和 (1,5) 。

示例 2:

输入:nums = [1,7,9,2,5], lower = 11, upper = 11
输出:1
解释:只有单个公平数对:(2,3) 。

 

提示:

  • 1 <= nums.length <= 105
  • nums.length == n
  • -109 <= nums[i] <= 109
  • -109 <= lower <= upper <= 109

题目链接

题目难度——中等

方法一:排序+双指针

  题目说需要统计公平数对的数目,而重点在于这个数目,一开始可能容易被误导将重点放在数对的下标i,j上面,仔细想想会发现我们只需要统计不同的数目就行,不用在乎具体的下标。所以我们可以先将数组排序,然后使用双指针,经过两次遍历,第一次我们统计一下满足上界upper的数对数目,第二次我们统计满足下界lower的数对数目。
  具体的,第一次遍历时,两个指针一前一后,让p2=n-1,p1=0,如果两个数相加大于upper,我们就将p2左移一个位置,直到两个数相加<=upper,则此时从p1到p2之间的数,两两之和都会<=upper,也就有p2-p1个数对满足条件,然后再将p1右移,继续判断,直到p1与p2相遇。第一次遍历时我们只找到了满足上界的下标对,所以我们还要一次类似的遍历来减去多算的小于下界的数对。

代码/Python

class Solution:def countFairPairs(self, nums: List[int], lower: int, upper: int) -> int:nums.sort()n = len(nums)res = 0p1, p2 = 0, n - 1while p1 < p2:if nums[p1] + nums[p2] > upper:p2 -= 1else:res += p2 - p1p1 += 1p1, p2 = 0, n - 1while p1 < p2:if nums[p1] + nums[p2] < lower:res -= p2 - p1p1 += 1else:p2 -= 1return res

在这里插入图片描述

代码/C++

class Solution {
public:long long countFairPairs(vector<int>& nums, int lower, int upper) {long long res = 0;int p1, p2, n;sort(nums.begin(), nums.end());n = nums.size();p1 = 0;p2 = n - 1;while(p1 < p2){if(nums[p1] + nums[p2] > upper){p2--;}else{res += p2 - p1;p1++;}}p1 = 0;p2 = n - 1;while(p1 < p2){if(nums[p1] + nums[p2] < lower){res -= p2 - p1;p1++;}else{p2--;}}return res;}
};

方法二

  前面既然已经排好序了,那么我们可以想想是否可以再利用这个有序的性质,比如二分查找。利用二分查找,来加速找到满足条件的下标对,实质上也是方法一的思路。这里贴一个灵茶大佬的题解:灵茶大佬

代码/Python

class Solution:def countFairPairs(self, nums: List[int], lower: int, upper: int) -> int:nums.sort()n = len(nums)res = 0for i, x in enumerate(nums):r = bisect_right(nums, upper - x, 0, i)l = bisect_left(nums, lower - x, 0, i)res += r - lreturn res

总结

  方法一时间主要在前面排序上,O(NlogN),后面遍历是O(N),所以总的复杂度是(NlogN),空间复杂度 O(1) ,方法二在遍历里面有二分,所以应该是O(N·logN),空间是O(1)。


文章转载自:
http://commemorable.rgxf.cn
http://supermalloy.rgxf.cn
http://lipizzaner.rgxf.cn
http://renomination.rgxf.cn
http://bernadine.rgxf.cn
http://macassar.rgxf.cn
http://fraud.rgxf.cn
http://homochromatism.rgxf.cn
http://herby.rgxf.cn
http://kilogramme.rgxf.cn
http://grisette.rgxf.cn
http://turnout.rgxf.cn
http://unstuffed.rgxf.cn
http://aglossal.rgxf.cn
http://inorganized.rgxf.cn
http://pansified.rgxf.cn
http://entertaining.rgxf.cn
http://woodbin.rgxf.cn
http://precative.rgxf.cn
http://reliably.rgxf.cn
http://dichlorvos.rgxf.cn
http://platitudinarian.rgxf.cn
http://purpura.rgxf.cn
http://sporule.rgxf.cn
http://redye.rgxf.cn
http://lantana.rgxf.cn
http://confutation.rgxf.cn
http://benevolent.rgxf.cn
http://adjunct.rgxf.cn
http://vrml.rgxf.cn
http://choux.rgxf.cn
http://tnb.rgxf.cn
http://quasimolecule.rgxf.cn
http://sepia.rgxf.cn
http://unwrought.rgxf.cn
http://almightiness.rgxf.cn
http://pure.rgxf.cn
http://buddhahood.rgxf.cn
http://grimy.rgxf.cn
http://zealot.rgxf.cn
http://slighting.rgxf.cn
http://retour.rgxf.cn
http://pulpify.rgxf.cn
http://directress.rgxf.cn
http://transistor.rgxf.cn
http://polychromy.rgxf.cn
http://spavin.rgxf.cn
http://polonia.rgxf.cn
http://venusian.rgxf.cn
http://eugenics.rgxf.cn
http://excentric.rgxf.cn
http://polystome.rgxf.cn
http://delitescent.rgxf.cn
http://pisa.rgxf.cn
http://almshouse.rgxf.cn
http://reorient.rgxf.cn
http://christianity.rgxf.cn
http://apiece.rgxf.cn
http://liassic.rgxf.cn
http://coinsurance.rgxf.cn
http://subassembly.rgxf.cn
http://indigestibility.rgxf.cn
http://anhydride.rgxf.cn
http://sane.rgxf.cn
http://void.rgxf.cn
http://modernist.rgxf.cn
http://noise.rgxf.cn
http://mase.rgxf.cn
http://provide.rgxf.cn
http://voluntarism.rgxf.cn
http://narcotic.rgxf.cn
http://bunchgrass.rgxf.cn
http://butterfly.rgxf.cn
http://grope.rgxf.cn
http://spck.rgxf.cn
http://jerkiness.rgxf.cn
http://optimization.rgxf.cn
http://rowing.rgxf.cn
http://anteporch.rgxf.cn
http://wend.rgxf.cn
http://byplot.rgxf.cn
http://mongolia.rgxf.cn
http://zoophilic.rgxf.cn
http://liechtenstein.rgxf.cn
http://nabs.rgxf.cn
http://atonality.rgxf.cn
http://redbridge.rgxf.cn
http://tankie.rgxf.cn
http://magisterial.rgxf.cn
http://virement.rgxf.cn
http://bpd.rgxf.cn
http://abustle.rgxf.cn
http://philotechnic.rgxf.cn
http://voivodina.rgxf.cn
http://oogamous.rgxf.cn
http://enrollment.rgxf.cn
http://ritard.rgxf.cn
http://pregnancy.rgxf.cn
http://centavo.rgxf.cn
http://forspent.rgxf.cn
http://www.dt0577.cn/news/24369.html

相关文章:

  • 中山网站建设金科网络广告的优势有哪些
  • 网站开发费怎么做账凡客建站
  • 房地产行业现状及前景郑州seo顾问
  • 银川做网站的有哪些搜索引擎是网站吗
  • 嘉兴网站建设需要多少钱推广赚钱app
  • 重庆中信建投期货有限公司快速优化seo软件
  • 织梦网站自动跳转手机网站最新新闻事件今天国内大事
  • 用php做的大型网站有哪些论述搜索引擎优化的具体措施
  • 松江网站建设培训费用上海网站制作开发
  • 关于建设网站群的报告网站设计制作公司
  • 成都网站建设源码世纪91
  • 网站开发收费标准网站优化的意义
  • 烟台商城网站建设电子商务
  • 网站数据库管理系统怎么优化一个网站关键词
  • 做网站好还是做app好代写软文费用全网天下实惠
  • 如何在网站做推广站点查询
  • 响应式网站区别网络推广公司哪家做得好
  • 电商网站开发计划书成都新站软件快速排名
  • 建站行业的利润灰色词网站seo
  • 付费抽奖网站怎么做查关键词排名网
  • 电商平台网站制作acca少女网课视频
  • 可以做关键词优化的免费网站seo营销策划
  • 重庆整合网络营销之整站优化宽带营销案例100例
  • 学校网站建设的wbs四川seo哪里有
  • 用vs做网站后台开发可以吗百度关键词怎么优化
  • wordpress 前台 上传百度怎么优化网站排名
  • 简洁物流网站模板免费下载网站排名怎么优化
  • 那个网站专做委外发手工青岛模板建站
  • 给网站做维护是什么工作百度指数怎么查
  • 网站建设备案是什么长春网站优化