【每日一题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;
    }
}


目录
相关文章
|
6月前
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
【每日一题Day370】LC318最大单词长度乘积 | 哈希表 位运算
53 1
|
6月前
【每日一题Day340】LC2251花期内花的数目 | 差分+哈希表+排序 排序+二分查找
【每日一题Day340】LC2251花期内花的数目 | 差分+哈希表+排序 排序+二分查找
38 0
|
6月前
【每日一题Day136】LC982按位与为零的三元组 | 哈希表
【每日一题Day136】LC982按位与为零的三元组 | 哈希表
62 0
|
6月前
|
存储
【每日一题Day132】LC23633合并相似的物品 | 哈希表 排序+双指针
【每日一题Day132】LC23633合并相似的物品 | 哈希表 排序+双指针
52 0
|
6月前
|
存储
【每日一题Day158】LC2395和相等的子数组 | 哈希表
【每日一题Day158】LC2395和相等的子数组 | 哈希表
31 0
|
6月前
【每日一题Day118】LC1124表现良好的最长时间段 | 前缀和+单调栈/哈希表
【每日一题Day118】LC1124表现良好的最长时间段 | 前缀和+单调栈/哈希表
54 0
|
6月前
|
存储
【每日一题Day352】LC1726同积元组 | 哈希表+排列组合
【每日一题Day352】LC1726同积元组 | 哈希表+排列组合
35 0
|
6月前
【每日一题Day227】LC2465不同的平均值数目 | 排序 + 哈希表
【每日一题Day227】LC2465不同的平均值数目 | 排序 + 哈希表
29 0
|
6月前
【每日一题Day207】LC1072按列翻转得到最大值等行数 | 逆向思维+哈希表+位运算
【每日一题Day207】LC1072按列翻转得到最大值等行数 | 逆向思维+哈希表+位运算
38 0
|
6月前
【每日一题Day234】LC1171从链表中删去总和值为零的连续节点 | 链表模拟 哈希表+前缀和
【每日一题Day234】LC1171从链表中删去总和值为零的连续节点 | 链表模拟 哈希表+前缀和
39 0