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

龙元建设集团股份有限公司网站地址免费高清大图网站

龙元建设集团股份有限公司网站地址,免费高清大图网站,easyui 做的网站,施工企业准入问题背景 给你一个整数数组 a r r arr arr,以及 a 、 b 、 c a、b 、c a、b、c 三个整数。请你统计其中好三元组的数量。 如果三元组 ( a r r [ i ] , a r r [ j ] , a r r [ k ] ) (arr[i], arr[j], arr[k]) (arr[i],arr[j],arr[k]) 满足下列全部条件&#xff…

问题背景

给你一个整数数组 a r r arr arr,以及 a 、 b 、 c a、b 、c abc 三个整数。请你统计其中好三元组的数量。
如果三元组 ( a r r [ i ] , a r r [ j ] , a r r [ k ] ) (arr[i], arr[j], arr[k]) (arr[i],arr[j],arr[k]) 满足下列全部条件,则认为它是一个 好三元组

  • 0 ≤ i < j < k < a r r . l e n g t h 0 \le i < j < k < arr.length 0i<j<k<arr.length
  • ∣ a r r [ i ] − a r r [ j ] ∣ ≤ a |arr[i] - arr[j]| \le a arr[i]arr[j]a
  • ∣ a r r [ j ] − a r r [ k ] ∣ ≤ b |arr[j] - arr[k]| \le b arr[j]arr[k]b
  • ∣ a r r [ i ] − a r r [ k ] ∣ ≤ c |arr[i] - arr[k]| \le c arr[i]arr[k]c

其中 ∣ x ∣ |x| x 表示 x x x 的绝对值。
返回 好三元组的数量

数据约束

  • 3 ≤ a r r . l e n g t h ≤ 100 3 \le arr.length \le 100 3arr.length100
  • 0 ≤ a r r [ i ] ≤ 1000 0 \le arr[i] \le 1000 0arr[i]1000
  • 0 ≤ a , b , c ≤ 1000 0 \le a, b, c \le 1000 0a,b,c1000

解题过程

题中要求的约束有三个,暴力枚举的时间复杂度是 O ( N 3 ) O(N ^ 3) O(N3)
如果数组是有序的,那可以很容易地提高时间方面的效率,但是结果与元素的初始位置有关,所以不方便直接排序。
退而求其次,定义一个下标数组,对它进行排序。
然后将数组中的元素当作 j j j 来遍历,将满足 ∣ a r r [ i ] − a r r [ j ] ∣ ≤ a |arr[i] - arr[j]| \le a arr[i]arr[j]a 以及 ∣ a r r [ j ] − a r r [ k ] ∣ ≤ b |arr[j] - arr[k]| \le b arr[j]arr[k]b
两个条件的原数组中的元素分别记录到哈希表中。
接下来只要再求满足第三个条件的元素对的数量,根据绝对值的定义,可以在线性的时间内得到合法结果的上下限。

具体实现

class Solution {public int countGoodTriplets(int[] arr, int a, int b, int c) {Integer[] idx = new Integer[arr.length];Arrays.setAll(idx, i -> i);Arrays.sort(idx, (i, j) -> arr[i] - arr[j]);int res = 0;for (int j : idx) {int cur = arr[j];List<Integer> list1 = new ArrayList<>();for (int i : idx) {if (i < j && Math.abs(arr[i] - cur) <= a) {list1.add(arr[i]);}}List<Integer> list2 = new ArrayList<>();for (int k : idx) {if (k > j && Math.abs(arr[k] - cur) <= b) {list2.add(arr[k]);}}int left = 0;int right = 0;for (int item : list1) {while (right < list2.size() && list2.get(right) <= item + c) {right++;}while (left < list2.size() && list2.get(left) < item - c) {left++;}res += right - left;}}return res;}
}
http://www.dtcms.com/a/558500.html

相关文章:

  • 河北沧州泊头做网站的电话怎么做网站优化推广
  • 北京地下室地面砖缝有渗漏水现象应该怎样处理解决
  • 网站建设的宣传词万户信息 做网站怎么样
  • 城阳做网站公司php网站安装包制作
  • 32HAL——定时器总篇
  • 骑士人才网全系与phpyun人才网系统数据转移或互转的技术文档和要领,和大家一起共勉
  • 车载消息中间件FastDDS 源码解析(一)FastDDS 介绍和使用
  • 上街免费网站建设wordpress迁移后无法登录
  • 找人建站做网站需要注意什么问题广州seo优化费用
  • 做头像的网站有没有做京东客好的网站推荐
  • 上海家装设计网站网站内容的创新
  • 百度快照投诉seo优化推广工程师招聘
  • 看谁做的好舞蹈视频网站建设银行光明支行网站
  • 北京市建设投标网站公司官网优化
  • 合肥如何做百度的网站最专业的做网站公司有哪些
  • 网站域名分类做的网站不能放视频软件
  • 网站后台邮箱设置静态网站设计与制作书籍
  • 网站式的公司记录怎么做商城网站建设哪家公司好
  • 什么是软文文案深圳网站建设推广优化seo
  • aspnet网站开发实战易语言开发安卓app
  • 新手学做网站 pdf 网盘龙岗附近网站建设
  • KeepAlived高可用
  • 珠海网站建设方案报价做个网页需要多少钱
  • Java Optional 类详解
  • 网站海外推广资源北京建设局网站首页
  • 宁波seo推广费用西青seo
  • 网站建设财务上怎么处理网站策划书模板
  • 网站上传用什么软件做视频教程微信公众号怎么做网页
  • 龙华做棋牌网站建设多少钱网页设计模板素材代码
  • 人工蜂鸟算法的详细原理和公式