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

保定建站公司模板怎么才能注册网站

保定建站公司模板,怎么才能注册网站,转发文章赚钱的网站建设,广州做外贸网站的公司982. 按位与为零的三元组 题目描述 给你一个整数数组 nums &#xff0c;返回其中 按位与三元组 的数目。 按位与三元组 是由下标 (i, j, k) 组成的三元组&#xff0c;并满足下述全部条件&#xff1a; 0 < i < nums.length0 < j < nums.length0 < k < num…

982. 按位与为零的三元组

题目描述

给你一个整数数组 nums ,返回其中 按位与三元组 的数目。

按位与三元组 是由下标 (i, j, k) 组成的三元组,并满足下述全部条件:

  • 0 <= i < nums.length
  • 0 <= j < nums.length
  • 0 <= k < nums.length
  • nums[i] & nums[j] & nums[k] == 0 ,其中 & 表示按位与运算符。

示例 1

输入:nums = [2,1,3]
输出:12
解释:可以选出如下 i, j, k 三元组:
(i=0, j=0, k=1) : 2 & 2 & 1
(i=0, j=1, k=0) : 2 & 1 & 2
(i=0, j=1, k=1) : 2 & 1 & 1
(i=0, j=1, k=2) : 2 & 1 & 3
(i=0, j=2, k=1) : 2 & 3 & 1
(i=1, j=0, k=0) : 1 & 2 & 2
(i=1, j=0, k=1) : 1 & 2 & 1
(i=1, j=0, k=2) : 1 & 2 & 3
(i=1, j=1, k=0) : 1 & 1 & 2
(i=1, j=2, k=0) : 1 & 3 & 2
(i=2, j=0, k=1) : 3 & 2 & 1
(i=2, j=1, k=0) : 3 & 1 & 2


示例 2

输入:nums = [0,0,0]
输出:27


提示

  • 1 <= nums.length <= 1000
  • 0 <= nums[i] < 216

算法一:哈希表 + 枚举

思路

  • 首先遍历 nums 的前两个值,因为题目中提到 0 <= nums[i] < 216 ,所以我们可以把这两个值按位与的结果存放到哈希表的索引哈希表的值为按位与结果的出现次数,这样的时间复杂度为 O(n2 + 216 * n) 。

收获

  • 我一开始的想法是:先计算前两个的值,存入数组中,然后再遍历数组的值与第三个 num ,但其实这样也是 三重循环,复杂度也是 O(n3) ,显然超时了;因此看了题解,复杂度可以降到 O(n2 + 216 * n)。

算法情况

  • 时间复杂度: O(n2 + 216 * n),其中 n 为 nums.size();

  • 空间复杂度:O(2 16);

    在这里插入图片描述

代码

class Solution {
public:int countTriplets(vector<int>& nums) {int ans = 0;vector<int> cnt(1<<16);for(int x : nums){for(int y : nums){cnt[x & y] ++;}}for(int n : nums){for(int i=0; i<(1<<16); ++i){if((i & n) == 0) ans += cnt[i];}}return ans;}
};

算法二:哈希表 + 枚举优化

思路

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

算法情况

  • 时间复杂度: O(n(n+U)),其中 n 为 nums 的长度,U=max⁡(nums);

  • 空间复杂度:O(U) 。

    在这里插入图片描述

代码

class Solution {
public:int countTriplets(vector<int>& nums) {int ans = 0;int u=1;// 预先计算数组 cnt 的实际大小for(int n : nums){while(u <= n){u <<= 1;}} vector<int> cnt(u);cnt[0] = nums.size();for(int n : nums){int m = (u-1) ^ n;for(int s=m; s; s=(s-1)&m){cnt[s]++;}}for(int x : nums){for(int y : nums){ans += cnt[x & y];}}return ans;}
};

参考资料

  1. 有技巧的枚举 + 常数优化(Python/Java/C++/Go)
http://www.yayakq.cn/news/56765/

相关文章:

  • 资源搜索网站是怎么做的中国比较大的外包公司
  • 云南建设人才网站首页郑州网站商城建设
  • 新华区设计网站公司利用网站制作网页
  • 排名seo公司哪家好重庆关键词seo排名
  • 类似卡盟网站卖怎么做星链友店
  • 网站建设在实际工作中的意义wordpress更改登录
  • 有没有帮忙做网站企业的网站品牌推广
  • 国内一家做国外酒店团购的网站搭建 网站的环节
  • 58同城 网站建设 成都淮阴网站建设
  • 犀牛云 做网站wordpress头像本地化
  • 怎么验证网站备案密码是否正确行情软件app网站大全下载
  • 特优项目网站建设方案汇天网络科技有限公司
  • 如何做视频网站 需要注意的地方企业邮箱手机怎么登录
  • 做个电商网站需要怎么做经典软文广告案例
  • 推广网络长沙seo网站排名优化
  • 成安企业做网站推广.net网站开发教程百度贴吧
  • 重庆网站建设公司的网站wordpress 更新后编辑器变了
  • 做网站的一般步骤企业品牌营销策划
  • 网站开发使用的技术有哪些ckeditor for wordpress 设置
  • phpwind怎么做网站seo建站公司
  • 怎么做网站搜索引擎优化短网址生成器有哪些
  • 长春建设工程信息网站soho做网站
  • 网站信息服务费怎么做分录网络营销推广三板斧
  • 网站制作加谷歌推广网站加seo需要多少钱
  • 虹口区网站开发wordpress主题首页怎么修改
  • 网站推广哪个平台好html个人主页模板
  • 设计公司网站建设费用工程公司取名字大全
  • 阿里云做网站软件开发模型定义
  • 上海网站建设哪家快速上线专业的基础微网站开发
  • 惠州网站制作询问薇没有服务器怎么做网站