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

【Leetcode 每日一题】2597. 美丽子集的数目

问题背景

给你一个由正整数组成的数组 n u m s nums nums 和一个 整数 k k k
如果 n u m s nums nums 的子集中,任意两个整数的绝对差均不等于 k k k,则认为该子数组是一个 美丽 子集。
返回数组 n u m s nums nums非空美丽 的子集数目。
n u m s nums nums 的子集定义为:可以经由 n u m s nums nums 删除某些元素(也可能不删除)得到的一个数组。只有在删除元素时选择的索引不同的情况下,两个子集才会被视作是不同的子集。

数据约束

  • 1 ≤ n u m s . l e n g t h ≤ 18 1 \le nums.length \le 18 1nums.length18
  • 1 ≤ n u m s [ i ] , k ≤ 1000 1 \le nums[i], k \le 1000 1nums[i],k1000

解题过程

在求 子集 的基础上,额外去掉可能导致差值为 k k k 的情况即可。

具体实现

class Solution {
    private int res = -1;

    public int beautifulSubsets(int[] nums, int k) {
        Map<Integer, Integer> count = new HashMap<>();
        dfs(0, nums, k, count);
        return res;
    }

    private void dfs(int i, int[] nums, int k, Map<Integer, Integer> count) {
        if (i == nums.length) {
            res++;
            return;
        }
        dfs(i + 1, nums, k, count);
        int cur = nums[i];
        if (count.getOrDefault(cur - k, 0) == 0 && count.getOrDefault(cur + k, 0) == 0) {
            count.merge(cur, 1, Integer::sum);
            dfs(i + 1, nums, k, count);
            count.merge(cur, -1, Integer::sum);
        }
    }
}

相关文章:

  • P10周:Pytorch实现车牌识别
  • 编译Telegram Desktop
  • Flutter——最详细原生交互(MethodChannel、EventChannel、BasicMessageChannel)使用教程
  • Odoo 企业版用户实施手册 第二章 Odoo 实施方法论 2.4 企业需求分析和目标定义
  • 100天精通Python(爬虫篇)——第115天:爬虫在线小工具_Curl转python爬虫代码工具(快速构建初始爬虫代码)
  • 国产编辑器EverEdit - 宏功能介绍
  • deepseek 3FS编译
  • 音视频入门基础:RTP专题(14)——FFmpeg源码中,对H.264的各种RTP有效载荷结构的解析
  • 【C++】:多态
  • redis的淘汰策略
  • Linux15-epoll、数据库
  • k8s概念及k8s集群部署(Centos7)
  • 基于 Python 实现问卷数据分析的详细示例
  • AI编程工具节选
  • 【商城实战(11)】解锁商品搜索与筛选功能,提升用户购物体验
  • 数据结构与算法(两两交换链表中的结点)
  • 鬼泣:动画2
  • 桂链:区块链模型介绍
  • 【贪心算法2】
  • Manus详细介绍,Manus核心能力介绍
  • 福州建设工程质量监督网站/b2b自动发布信息软件
  • 厦门市网站建设app开发/友情链接还有用吗
  • 网站运营技巧/咸阳网站建设公司
  • 棋牌网站代理/网页链接
  • 章丘做网站公司/品牌推广文案
  • 贵阳建网站公司/天津seo推广优化