2021-05-19:给定一个非负数组成的数组,长度一定大于1,想知道数组中哪两个数&的结果最大。返回这个最大结果。时间复杂度O(N),额外空间复杂度O(1)。

福大大 答案2021-05-19:

因为是正数,所以不用考虑符号位(31位)
首先来到30位,假设剩余的数字有N个(整体),看看这一位是1的数,有几个
如果有0个、或者1个
说明不管怎么在数组中选择,任何两个数&的结果在第30位上都不可能有1了
答案在第30位上的状态一定是0,
保留剩余的N个数,继续考察第29位,谁也不淘汰(因为谁也不行,干脆接受30位上没有1的事实)
如果有2个,
说明答案就是这两个数(直接返回答案),因为别的数在第30位都没有1,就这两个数有。
如果有>2个,比如K个
说明答案一定只用在这K个数中去选择某两个数,因为别的数在第30位都没有1,就这K个数有。
答案在第30位上的状态一定是1,
只把这K个数作为剩余的数,继续考察第29位,其他数都淘汰掉

现在来到i位,假设剩余的数字有M个,看看这一位是1的数,有几个
如果有0个、或者1个
说明不管怎么在M个数中选择,任何两个数&的结果在第i位上都不可能有1了
答案在第i位上的状态一定是0,
保留剩余的M个数,继续考察第i-1位
如果有2个,
说明答案就是这两个数(直接返回答案),因为别的数在第i位都没有1,就这两个数有。
如果有>2个,比如K个
说明答案一定只用在这K个数中去选择某两个数,因为别的数在第i位都没有1,就这K个数有。
答案在第i位上的状态一定是1,
只把这K个数作为剩余的数,继续考察第i-1位,其他数都淘汰掉。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {
arr := []int{1, 2, 3, 4, 5}
ret := maxAndValue2(arr)
fmt.Println(ret)
} func maxAndValue2(arr []int) int {
// arr[0...M-1] arr[M....]
M := len(arr)
ans := 0
for bit := 62; bit >= 0; bit-- {
// arr[0...M-1] arr[M...]
i := 0
tmp := M
for i < M { // arr[0...M-1]
if (arr[i] & (1 << bit)) == 0 {
M--
arr[i], arr[M] = arr[M], arr[i]
} else {
i++
}
}
if M == 2 { // arr[0,1]
return arr[0] & arr[1]
}
if M < 2 {
M = tmp
} else { // > 2个数 bit位上有1
ans |= 1 << bit
}
}
return ans
}

执行结果如下:


左神java代码

2021-05-19:给定一个非负数组成的数组,长度一定大于1,想知道数组中哪两个数&的结果最大。返回这个最大结果。时间复杂度O(N),额外空间复杂度O(1)。的更多相关文章

  1. 给定一个奇数n,比如n=3,生成1到n平方的数,如1到9,填入九宫格,使得横竖斜的和都相等。

    对于N阶幻方,从1开始把数字从小到大按以下规则依次写入: 一.在第一行中间一列写入1 二.依次向右上方写入2.3.4...... 三.如果某数字写在了表格的某个方向外面,那就把这个数字向相反方向移动N ...

  2. 19.Longest Substring Without Repeating Characters(长度最长的不重复子串)

    Level:   Medium 题目描述: Given a string, find the length of the longest substring without repeating cha ...

  3. 2021.05.03 T3 数字

    2021.05.03 T3 数字 问题描述 一个数字被称为好数字当他满足下列条件: 1. 它有**2*n**个数位,n是正整数(允许有前导0) 2. 构成它的每个数字都在给定的数字集合S中. 3. 它 ...

  4. 给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?

    题目:给定一个函数rand()能产生1到n之间的等概率随机数,问如何产生1到m之间等概率的随机数? 先把问题特殊化,例如原题变为给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一 ...

  5. 【IT笔试面试题整理】给定一个数组a[N]构造数组b [N]

    [来源]:腾讯2013实习生笔试   给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]-a[N-1] / a[j])空间复杂度和O(n)的时间复杂度:除遍历计数器与a ...

  6. 日常Javaweb 2021/11/19

    Javaweb Dao层: //连接数据库,实现增查功能 package dao; import java.sql.Connection; import java.sql.DriverManager; ...

  7. 2021.05.14 tarjan

    2021.05.14 tarjan 标准版tarjan 这里使用数组来模拟栈 void tarjan(int x){ ++ind; dfn[x]=low[x]=ind; stacki[++top]=x ...

  8. 2021.07.19 P2294 狡猾的商人(差分约束)

    2021.07.19 P2294 狡猾的商人(差分约束) [P2294 HNOI2005]狡猾的商人 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.差分约束最长路与最短 ...

  9. 给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。

    分析,是一个dp的题目, 设f[i]表示以i为结尾的最大值,g[i]表示以i结尾的最小值,那么 f[i+1] = max{f[i]*arr[i+1], g[i]*arr[i+1],arr[i+1]} ...

  10. Java-集合=第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得该Account 对象能够自动分配id。 给定一个List 如下: List list = new ArrayList(); list.add(new A

    第五题 (Map)设计Account 对象如下: private long id; private double balance; private String password; 要求完善设计,使得 ...

随机推荐

  1. Nginx lavarel框架伪静态配置

    location / { try_files $uri $uri/ /index.php$is_args$query_string; }

  2. USB TTL CMOS 电平

    USB转TTL模块的作用就是把电平转换到双方都能识别进行通信. TTL电平信号规定,+5V等价于逻辑"1",0V等价于逻辑"0"(采用二进制来表示数据时).这样 ...

  3. 9. 实现包括前端后台的预约洗狗功能 - 使用Power App处理预约信息 - 创建Power Canvas App并实现基础功能

    ​ Power Canvas App可以通过画布设计和构建业务应用,无需通过传统编写代码的形式来构建,通过将元素拖动到画布上来设计我们的Power Canvas APP,可以与Miceosoft和第三 ...

  4. Mysql不同字符串格式的连表查询

    MySql报错:Error Code: 1267. Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci, ...

  5. windows下 mstsc 远程Ubuntu 图形界面2

    采用 xrdp-0.9.2 + xorgxrdp-0.2.0 + xfce ,可完美实现远程,且: 1.支持中断后重新连接上一次连接. 2.支持clipbord跨平台复制. 3.xfce桌面,双机打开 ...

  6. 个人数据保全计划:(2) NAS基础知识

    前言 距离去年国庆入手了NAS至今有好几个月时间了,NAS折腾起来有点麻烦,且实际作用因人而异,并没有想象中的好用,所以说好的这个系列一直没有更新~ 还有另一方面的原因,这些NAS的系统基于Linux ...

  7. Android笔记--按钮触控

    Button(由TextView派生而来) 但也是有一定的区别: 具体实现: 按钮控件的新增属性 具体实现: 在未使用textAllCaps属性之前,按钮名称会默认为全部使用大写字母: 在指定了该属性 ...

  8. Mac连接Win的方法

    前言 我们都知道,Mac和Win还是非常不一样的,作为Macdows双修选手,我今天给大家介绍一些从Mac连接Win的方法. Win的RDP 由于Win默认未安装ssh,我们最常使用的连接方式则是使用 ...

  9. 【数仓运维实践】关于GaussDB(DWS)单SQL磁盘空间管控

    摘要:本文主要讲解数仓运维中遇到单SQL磁盘空间管控问题的解析和方案. 本文分享自华为云社区<GaussDB(DWS)运维 -- 单SQL磁盘空间管控>,作者: 譡里个檔. [问题描述] ...

  10. swiper.js Bscroll 轮播

    <!-- 轮播banner图 --> <div class="banner"> <div class="swiper-container&q ...