leetcode421. 数组中两个数的最大异或值(贪心算法)

给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。

进阶:你可以在 O(n) 的时间解决这个问题吗?

示例 1:

输入:nums = [3,10,5,25,2,8]
输出:28
解释:最大运算结果是 5 XOR 25 = 28.
示例 2:

输入:nums = [0]
输出:0
示例 3:

输入:nums = [2,4]
输出:6
示例 4:

输入:nums = [8,10,2]
输出:10
示例 5:

输入:nums = [14,70,53,83,49,91,36,80,92,51,66,70]
输出:127

解题思路

贪心思想:能异或算出高位的1的两个数就是能产生最大结果的两个数,例如:

  • 0011 0000
  • 0000 0000
  • 0010 0000

因为0000 0000 和 0011 0000异或,能产生一个高位的1 和 次高位的1,而0000 0000和 0010 0000 异或只能产生一个高位的1,所以优先选择第一种方案。

代码

func findMaximumXOR(nums []int)(res int)  {const  hb = 30res=0for i := hb; i >=0 ; i-- {
//移除30位,因为都是在正数的范围内,所以第31位就是最高位
//也就是说最外层循环是遍历31种情况
//从移除30位到全部位数都保留的31种情况seen :=map[int]bool{}for _, num := range nums {seen[num>>i]=true}
//移除特定位数以后的值保留在map里面cur:=res*2+1
//将上一步计算出来的结果值左移一位,再加1
//因为上一步的结果是高位的结果,所以需要左移
//为什么要加1?就是假设当前遍历到的位可以出现01异或这种情况,就产生低位的1,因为a^b=c 等价于 a^c=b
//则有a^b=cur 等价于a^cur=b,这就是if seen[(num>>i)^cur]进行的判断//我们将假设的结果与所有的值进行异或运算,如果map中存在这个异或的结果,就说明数组中有两个数字是可以在当前位进行异或得到1的
//如果找到了,就说明我们假设的结果是正确的,否则就是当前位只能是0,所以需要减去1found:=falsefor _, num := range nums {if seen[(num>>i)^cur]{found=truebreak}}if found{res=cur}else{res=cur-1}}return
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IBM推全球首个5纳米芯片:计划2020年量产

IBM日前宣布&#xff0c;该公司已取得技术突破&#xff0c;利用5纳米技术制造出密度更大的芯片。这种芯片可以将300亿个5纳米开关电路集成在指甲盖大小的芯片上。 IBM推全球首个5纳米芯片 IBM表示&#xff0c;此次使用了一种新型晶体管&#xff0c;即堆叠硅纳米板&#xff0c;将…

drop sql语句_用于从表中删除数据SQL Drop View语句

drop sql语句介绍 (Introduction) This guide covers the SQL statement for dropping (deleting) one or more view objects.本指南介绍了用于删除(删除)一个或多个视图对象SQL语句。 A View is an object that presents data from one or more tables.视图是显示来自一个或多…

async 和 await的前世今生 (转载)

async 和 await 出现在C# 5.0之后&#xff0c;给并行编程带来了不少的方便&#xff0c;特别是当在MVC中的Action也变成async之后&#xff0c;有点开始什么都是async的味道了。但是这也给我们编程埋下了一些隐患&#xff0c;有时候可能会产生一些我们自己都不知道怎么产生的Bug&…

项目案例:qq数据库管理_2小时元项目:项目管理您的数据科学学习

项目案例:qq数据库管理Many of us are struggling to prioritize our learning as a working professional or aspiring data scientist. We’re told that we need to learn so many things that at times it can be overwhelming. Recently, I’ve felt like there could be …

react 示例_2020年的React Cheatsheet(+真实示例)

react 示例Ive put together for you an entire visual cheatsheet of all of the concepts and skills you need to master React in 2020.我为您汇总了2020年掌握React所需的所有概念和技能的完整视觉摘要。 But dont let the label cheatsheet fool you. This is more than…

leetcode 993. 二叉树的堂兄弟节点

在二叉树中&#xff0c;根节点位于深度 0 处&#xff0c;每个深度为 k 的节点的子节点位于深度 k1 处。 如果二叉树的两个节点深度相同&#xff0c;但 父节点不同 &#xff0c;则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root &#xff0c;以及树中两个…

Java之Set集合的怪

工作中可能用Set比较少&#xff0c;但是如果用的时候&#xff0c;出的一些问题很让人摸不着头脑&#xff0c;然后我就看了一下Set的底层实现&#xff0c;大吃一惊。 ###看一个问题 Map map new HashMap();map.put(1,"a");map.put(12,"ab");map.put(123,&q…

为mysql数据库建立索引

前些时候&#xff0c;一位颇高级的程序员居然问我什么叫做索引&#xff0c;令我感到十分的惊奇&#xff0c;我想这绝不会是沧海一粟&#xff0c;因为有成千上万的开发者&#xff08;可能大部分是使用MySQL的&#xff09;都没有受过有关数据库的正规培训&#xff0c;尽管他们都为…

查询数据库中有多少个数据表_您的数据中有多少汁?

查询数据库中有多少个数据表97%. That’s the percentage of data that sits unused by organizations according to Gartner, making up so-called “dark data”.97 &#xff05;。 根据Gartner的说法&#xff0c;这就是组织未使用的数据百分比&#xff0c;即所谓的“ 暗数据…

记录一个Python鼠标自动模块用法和selenium加载网页插件的设置

写爬虫&#xff0c;或者网页自动化&#xff0c;让程序自动完成一些重复性的枯燥的网页操作&#xff0c;是最常见的需求。能够解放双手&#xff0c;空出时间看看手机&#xff0c;或者学习别的东西&#xff0c;甚至还能帮朋友亲戚减轻工作量。 然而&#xff0c;网页自动化代码编写…

和css3实例教程_最好CSS和CSS3教程

和css3实例教程级联样式表(CSS) (Cascading Style Sheets (CSS)) CSS is an acronym for Cascading Style Sheets. It was first invented in 1996, and is now a standard feature of all major web browsers.CSS是层叠样式表的缩写。 它于1996年首次发明&#xff0c;现在已成…

leetcode 1442. 形成两个异或相等数组的三元组数目(位运算)

给你一个整数数组 arr 。 现需要从数组中取三个下标 i、j 和 k &#xff0c;其中 (0 < i < j < k < arr.length) 。 a 和 b 定义如下&#xff1a; a arr[i] ^ arr[i 1] ^ … ^ arr[j - 1] b arr[j] ^ arr[j 1] ^ … ^ arr[k] 注意&#xff1a;^ 表示 按位异…

数据科学与大数据技术的案例_作为数据科学家解决问题的案例研究

数据科学与大数据技术的案例There are two myths about how data scientists solve problems: one is that the problem naturally exists, hence the challenge for a data scientist is to use an algorithm and put it into production. Another myth considers data scient…

AJAX, callback,promise and generator

AJAX with jQuery $.ajax({url:??,type:??,data:??,success: function(){??} //callback,error:function(jqXHR,textStatus,error){??} })think about what AJAX wants from human , AJAX asks questions : tell Me By Which Way You Want To Do Things : —— GET …

Spring-Boot + AOP实现多数据源动态切换

2019独角兽企业重金招聘Python工程师标准>>> 最近在做保证金余额查询优化&#xff0c;在项目启动时候需要把余额全量加载到本地缓存&#xff0c;因为需要全量查询所有骑手的保证金余额&#xff0c;为了不影响主数据库的性能&#xff0c;考虑把这个查询走从库。所以涉…

css 幻灯片_如何使用HTML,CSS和JavaScript创建幻灯片

css 幻灯片A web slideshow is a sequence of images or text that consists of showing one element of the sequence in a certain time interval.网络幻灯片是一系列图像或文本&#xff0c;包括在一定时间间隔内显示序列中的一个元素。 For this tutorial you can create a…

leetcode 1738. 找出第 K 大的异或坐标值

本文正在参加「Java主题月 - Java 刷题打卡」&#xff0c;详情查看 活动链接 题目 给你一个二维矩阵 matrix 和一个整数 k &#xff0c;矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 < i < a < m 且 0 < j < b < n 的元素…

【数据库】Oracle用户、授权、角色管理

创建和删除用户是Oracle用户管理中的常见操作&#xff0c;但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识。掌握还Oracle用户的授权操作和原理&#xff0c;可以有效提升我们的工作效率。 Oracle数据库的权限系统分为系统权限与对象权限。系统权限( Database Sy…

商业数据科学

数据科学 &#xff0c; 意见 (Data Science, Opinion) “There is a saying, ‘A jack of all trades and a master of none.’ When it comes to being a data scientist you need to be a bit like this, but perhaps a better saying would be, ‘A jack of all trades and …

为什么游戏开发者不玩游戏_什么是游戏开发?

为什么游戏开发者不玩游戏Game Development is the art of creating games and describes the design, development and release of a game. It may involve concept generation, design, build, test and release. While you create a game, it is important to think about t…