2044. 统计按位或能得到最大值的子集数目
2044. 统计按位或能得到最大值的子集数目
给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 。
如果数组 a 可以由数组 b 删除一些元素(或不删除)得到,则认为数组 a 是数组 b 的一个 子集 。如果选中的元素下标位置不一样,则认为两个子集 不同 。
对数组 a 执行 按位或 ,结果等于 a[0] OR a[1] OR … OR a[a.length - 1](下标从 0 开始)。
示例 1:
输入:nums = [3,1]
输出:2
解释:子集按位或能得到的最大值是 3 。有 2 个子集按位或可以得到 3 :
- [3]
- [3,1]示例 2:
输入:nums = [2,2,2]
输出:7
解释:[2,2,2] 的所有非空子集的按位或都可以得到 2 。总共有 23 - 1 = 7 个子集。示例 3:
输入:nums = [3,2,1,5]
输出:6
解释:子集按位或可能的最大值是 7 。有 6 个子集按位或可以得到 7 :
- [3,5]
- [3,1,5]
- [3,2,5]
- [3,2,1,5]
- [2,5]
- [2,1,5]
解题思路
- 使用回溯法产生所有可能的子集
- 计算每个子集按位或的结果,比较出最大值
class Solution {List<List<Integer>> lists=new ArrayList<>();public void bc(int[] arr,int cur,LinkedList<Integer> list) {lists.add(new LinkedList<>(list));for(int i=cur;i<arr.length;i++){list.addLast(arr[i]);bc(arr, i+1, list);list.removeLast();}}public List<List<Integer>> subsetsWithDup(int[] nums) {bc(nums,0,new LinkedList<>());return lists;}public int countMaxOrSubsets(int[] nums) {int max=0;subsetsWithDup(nums);Map<Integer,Integer> map=new HashMap<>();for (List<Integer> integerList : lists) {int cur=0;for (Integer integer : integerList) {cur|=integer;}map.put(cur,map.getOrDefault(cur,0)+1);max=Math.max(cur,max);}return map.get(max);}
}
2044. 统计按位或能得到最大值的子集数目相关推荐
- LeetCode 2044. 统计按位或能得到最大值的子集数目(状态压缩DP)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 . 如果数组 a 可 ...
- python 实现统计ftp服务器指定目录下文件夹数目、文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏。 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小
python 实现统计ftp服务器指定目录下文件夹数目.文件数目及所有文件大小 本次主要为满足应用方核对上传到ftp服务器的文件是否缺漏. 主要要求:指定目录下,文件夹数目/文件数目/所有文件大小,类 ...
- Mysql常用分组聚合函数(统计行的数量、最大值、最小值、平均值、求和)
目录 一.概念 二.举例 2.1 COUNT函数 2.1.1 语法 2.1.2运行结果 2.2 AVG函数 2.2.1语法 2.2.2运行结果 2.3 SUM函数 2.3.1语法 2.3.2运行结果 ...
- oracle横向统计个数,Oracle横向求最大值
由于最近在开发过程中,需要在Oracle中取横向栏位的最大值,在此介绍几个Oracle的函数给大家: 具体内容请内博客内文,如果对各位有所帮助,请留下痕迹! Oracle纵向取最大值函数为:max() ...
- leetcode题目整理
1.面试先说出最简单的方法,然后在继续优化,不要想复杂,先暴力解决 2.理解问题,和面试交流题意 3.注意边界条件 4.不着急 一.二分 33.搜索旋转排序数组 153. 寻找旋转排序数组中的最小值 ...
- 回溯算法(持续更新)
回溯算法的核心思想:回溯法是深度优先遍历中的一种特有现象,主要用于在一个较大的数据集中寻找满足特定条件的解.回溯法就是当前状态不满足条件时,就回到上一个状态,即回到过去,然后再次向下搜索.在此过程中, ...
- leetcode零散题汇总
零散题 golang力扣leetcode 15.三数之和 golang力扣leetcode 128. 最长连续序列 golang力扣leetcode 1345.跳跃游戏IV golang力扣leetc ...
- 三月刷题笔记(C++)
3-1 字形变换 -[Nm] 6. Z 字形变换 - 力扣(LeetCode) (leetcode-cn.com) 方法一:模拟 由于给定的字符串是按照z形保存,故按照特定顺序进行遍历. 其中 i 代 ...
- Leetcode每日一题总目录(动态更新。。。)
0. 概要 leecode每日一题(也可能多题)题解跟踪记录及总目录. 常用算法解题思路和技巧及数据结构: 预处理:数组排序(954),哈希表... 双指针法 682,125,905 单向链表 2 双 ...
最新文章
- 被骗两次?黄仁勋骗过世界的14秒,英伟达押宝未来的元宇宙……
- Gif(1)-加载视图-交替圆效果
- CentOS7安装xfce桌面环境
- 王道考研 计算机网络6 OSI参考模型和各层作用
- Yolo系列知识点梳理(Yolov1-v5)
- java输入一串字符串反转_反转Java中的字符串
- 一次性搭建Hadoop高可用集群
- SQL Server 存储
- ROS安装教程(ubuntu16.04安装ROS Kinetic)
- 八爪鱼 八爪鱼采集器四大采集模式
- 计算机键盘换挡键,换挡键alt电脑键盘上的用处有哪些
- 腾讯笔试题——java题总结无答案
- 利用边长计算三角形面积 — 海伦公式推导过程
- 树莓派能否替代linux开发板,12 个可替代树莓派的单板机 | Linux 中国
- 【Linux】Linux环境基础开发工具使用 —— yum | vim | gcc g++ | gdb | make makefile | 进度条 | git
- exe4j将jar转exe时出现的ClassNotFoundException解决办法
- 2种方式获取StreamingAssets下音频
- 原码、反码、补码的互相转换
- 最TOP小程序排行榜出炉
- 阿里巴巴联合欧莱雅发布移动端 AI 痘痘检测应用