【每日一题Day163】LC2367算术三元组的数目 | 二分查找 哈希表

简介: 【每日一题Day163】LC2367算术三元组的数目 | 二分查找 哈希表

算术三元组的数目【LC2367】

给你一个下标从 0 开始、严格递增 的整数数组 nums 和一个正整数 diff 。如果满足下述全部条件,则三元组 (i, j, k) 就是一个 算术三元组

  • i < j < k
  • nums[j] - nums[i] == diff
  • nums[k] - nums[j] == diff

返回不同 算术三元组 的数目*。*

枚举+二分查找
  • 思路:枚举+二分查找

image.png

class Solution {
    public int arithmeticTriplets(int[] nums, int diff) {
        int res = 0;
        for (int i = 0; i < nums.length; i++){
           if (binarySearch(nums, nums[i] + diff) != -1 && binarySearch(nums, nums[i] + 2 * diff) != -1){
               res++;
           }           
        }
        return res;
    }
    public int binarySearch(int[] nums, int target){
        int l = 0, r = nums.length - 1;
        while (l <= r){
            int mid = (l + r) >> 1;
            if (nums[mid] == target){
                return mid;
            }else if (nums[mid] > target){
                r = mid - 1;
            }else{
                l = mid + 1;
            }
        }
        return -1;
    }
}

image.png

class Solution {
    public int arithmeticTriplets(int[] nums, int diff) {
        Set<Integer> set = new HashSet<>();
        int res = 0;
        for (int i = 0; i < nums.length; i++){
           if (set.contains(nums[i] - diff) && set.contains(nums[i] - 2 * diff)){
               res++;
           }      
           set.add(nums[i]);
        }
        return res;
    }
}


目录
相关文章
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
296 0
|
11月前
|
数据采集 JavaScript 网络安全
为什么PHP爬虫抓取失败?解析cURL常见错误原因
豆瓣电影评分是电影市场的重要参考,通过网络爬虫技术可以高效采集评分数据,帮助电影制作和发行方优化策略。本文介绍使用PHP cURL库和代理IP技术抓取豆瓣电影评分的方法,解决反爬机制、网络设置和数据解析等问题,提供详细代码示例和优化建议。
422 0
为什么PHP爬虫抓取失败?解析cURL常见错误原因
|
算法 安全 Java
SHA - 加密算法简要介绍与JAVA实现
SHA - 加密算法简要介绍与JAVA实现
264 1
|
存储 机器学习/深度学习 编解码
app版本更新的五种实现方式
app版本更新的五种实现方式
1180 2
|
移动开发 前端开发 数据库
ruoyi-nbcio 基于flowable规则的多重并发网关的任意跳转
ruoyi-nbcio 基于flowable规则的多重并发网关的任意跳转
272 0
|
缓存 安全 Java
JAVA多线程编程与并发控制
```markdown Java多线程编程与并发控制关键点:1) 通过Thread或Runnable创建线程,管理线程状态;2) 使用synchronized关键字和ReentrantLock实现线程同步,防止数据竞争;3) 利用线程池(如Executors)优化资源管理,提高系统效率。并发控制需注意线程安全,避免死锁,确保程序正确稳定。 ```
|
移动开发 JavaScript Java
游戏直播平台运营建议,开发类似虎牙+斗鱼平台最省钱方案
游戏直播平台作为近年来迅猛发展的行业,在全球范围内成为大部分人主要娱乐渠道。然而,随着竞争的加剧,传统的运营模式已经显露出瓶颈。为了在激烈的市场竞争中脱颖而出,游戏直播平台需要不断创新,拥抱新思路。本文将探讨一些新思维,如何引领游戏直播平台运营的新模式,以及如果要开发类似虎牙+斗鱼游戏直播平台最省钱方法。
|
存储 负载均衡 关系型数据库
SpringCloud Alibaba——Nacos服务注册与配置中心(三、Nacos持久化配置 & 集群搭建)
SpringCloud Alibaba——Nacos服务注册与配置中心(三、Nacos持久化配置 & 集群搭建)
SpringCloud Alibaba——Nacos服务注册与配置中心(三、Nacos持久化配置 & 集群搭建)
|
数据可视化 开发工具 git
|
前端开发 JavaScript 算法
Python调用浏览器时如何用JS去弹窗?
Python调用浏览器时如何用JS去弹窗?
435 0
Python调用浏览器时如何用JS去弹窗?