古云网站建设深圳有哪些网站公司

diannao/2026/1/25 15:47:56/文章来源:
古云网站建设,深圳有哪些网站公司,上海网站建设哪家企业,口腔医院网站开发数组中只出现一次的两个数字 背景题目描述题解 背景 刷到此题的时候#xff0c;只写出了最普通的解法#xff0c;最后看了二进制解法#xff0c;叹为观止#xff0c;不禁感叹到它的巧妙#xff0c;因此记录一下,共勉。 题目描述 牛客地址#xff1a; https://www.nowc… 数组中只出现一次的两个数字 背景题目描述题解 背景 刷到此题的时候只写出了最普通的解法最后看了二进制解法叹为观止不禁感叹到它的巧妙因此记录一下,共勉。 题目描述 牛客地址 https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8 描述 一个整型数组里除了两个数字只出现一次其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 数据范围 数组长度 2≤n≤1000 数组中每个数的大小 0val≤1000000 要求 空间复杂度 O(1) 时间复杂度 O(n) 提示输出时按非降序排列。 示例1 输入[1,4,1,6] 返回值[4,6] 说明 返回的结果中较小的数排在前面 示例2 输入[1,2,3,3,2,9] 返回值[1,9] 题解 方法一 题目给的意思分析之后很容易想到一种方法就是用哈希表进行统计辅助得到这两个只出现一次的数字。 此方法比较简单直接给出代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可** * param nums int整型一维数组 * return int整型一维数组*/public int[] FindNumsAppearOnce (int[] nums) {MapInteger,Integer numMap new HashMap();for(int i0;inums.length;i){Integer num numMap.get(nums[i]);if(null num){numMap.put(nums[i],1);}else{numMap.put(nums[i],2);}}ArrayListInteger res new ArrayListInteger();SetInteger numKeySet numMap.keySet();for(Integer numKey:numKeySet){if(numMap.get(numKey) 1){res.add(numKey);}}Collections.sort(res);int[] intRes new int[res.size()];for(int i0;ires.size();i){intRes[i] res.get(i);}return intRes;} }本文主要对第二种解法的思路做一下整理和分析。 对于这道题目我们先来想另外一个问题 如果数组中只有一个出现了一次的数字我们想到得到它那么应该如何解决呢 我们都知道异或运算如果两个数一样则异或结果为0不一样则异或结果为1。二进制 0⊕001⊕010⊕111⊕10 举个例子 4 ⊕ 4 0将4化为二进制为 0100 所以 0100 异或 0100 得到 0000 4 ⊕ 4 ⊕ 5 5 则 ​ 0100 ​ 0100 ​ 0101 得到 0101 我们可以看到上面的运算过程因为44两者相等异或结果为0。所以0异或任意数都等于任意数。 所以当只有一个出现了一次的数字的时候则只需要将全部数进行异或运算运算结果就剩下了那个只出现一次的数字了。 public int[] singleNumber(int[] nums) {int x 0;for(int num : nums) // 1. 遍历 nums 执行异或运算x ^ num;return x; // 2. 返回出现一次的数字 x }好了上面说了这么多那这道题目是找两个只出现一次的数字呀~ 上面的方法又是针对只出现一次的数字假设我也一样全部执行异或运算 1⊕4⊕1⊕6最后也还是会剩下4⊕6呀~ 我们看看 0100 ⊕ 0110 0010 这个结果也不能得出什么东西哇~ 我们换个角度思考能不能做个分组将题目分为两组 然后每一组求出其中的出现一次的数字最后两者一起返回不就解决问题了吗 那么我们要如何分组呢位运算进行分组我们首先想到的应该是奇偶分组就是将所有数 1此时能将数字分为奇偶两组。 但是这个时候问题又来了你又不能保证两个数字就一奇一偶有可能都是奇数也有可能都是偶数呀~ 但是我们想一下1的操作归根到底是按照二进制最低位的不同来分组的 例如 00113 010150100400011 对上面四个数分组我们都1可以分得结果 001101010001奇数 0100 偶数 我们很明显能够知道当二进制1结果为1的时候为奇数反之为偶数。它们是按照最低位的不同来分组的。 上面我们知道能够将数字分为 奇偶两组那么现在我再给出一个难度如何区分出 00110101 对 00110101 这两个数进行分组我们可以观察到最低位都为1此时如果我们还是进行1操作去分组那肯定是分不出来的 因为两数的最低为都是一样的1之后还是1还是无法区分那么我们看到最低的第二位0011是10101是0很明显这两位就不一样那么我们就可以将这两数0010呀不就能够区分出来了吗 0011 0010 0010 01010010 0000此时还是根据结果是否为0得到分组 那要是是 0100 和 1100呢如何分组呢 不就是1000 就能够分组了吗 所以说了那么多其实就是为了推出一个分组的方式两个不同的数如何分组 我们都知道两个不同的数那么它的二进制表示肯定是不一样的这是毋庸置疑的 所以我们要想对两者进行分组操作就是需要找到两者中的那一位不同的二进制然后得到分组的与值去的那个值问题不就解决了吗 那要怎么找到那一位不同的二进制呢 我们看一个例子 1146 全部做异或运算结果为 4⊕6 0100⊕0110 0010 异或的运算规则是什么 相同的为0不同的为1。所以我们根据两者异或出来的结果 0010不就可以知道那一位不同了嘛为1的那一位就是不同的 好了说了这么多下面安排代码把~ public int[] FindNumsAppearOnce (int[] nums) {//定义一个异或的值int xorRes 0;//求出所有数字的异或值for(int num:nums){xorRes^num; }//定义分组掩码,0为1组1为1组正好2组int mask 1;//寻找分组的掩码位用来分组用,掩码只能有一位是1,否则后面//进行与运算可能无法分出来因为多位的话与运算可能结果都不为0//只有一位为1掩码才能确保其中一个数字结果一定为0while((maskxorRes) 0){mask mask1;}int a0,b0;for(int num:nums){//如果与掩码做与运算等于0的分到第一组if((masknum) 0){a^num;}//否则是第二组else{b^num;}}if(ab){return new int[]{b,a};}else{return new int[]{a,b};}}复杂度分析 时间复杂度O(N)。数组的长度n循环。 空间复杂度O(1)。几个变量的空间。 备注:大部分文字转载自牛客精华题解有兴趣的可以去看一下。

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

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

相关文章

淘宝网站建设流程上海平台网站建设公司排名

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 新品发布会媒体邀请及记者现场报道邀约流程: 一、策划准备 明确新品发布会时间、地点和主题。 制定媒体邀请计划,确定目标媒体。 二、邀请媒体 向目标媒体发送…

南京佛搜做网站公司七台河新闻综合频道直播

文章目录 ref获取dom元素监听深层的某个属性? 可选链操作符 和 ?? 双问号表达式v-slot 语法糖作用域插槽动态插槽 初始化数组骚操作数字滚动 -> gsapstyle妙招新奇的原型链 object.createB站笔记链接JS相关设计模式ajaxsvgvue3scsswebpack内存泄漏 ref获取dom元素 直接给…

做门户网站用什么模板好襄阳哪里做网站

A Mathematical Model of Sentimental Dynamics Accounting for Marital Dissolution解释离婚的情感动力学数学模型背景西方社会的离婚是普遍存在的。它提出了重大的科学和社会学问题,不管是理论上还是解决方式上。学者和问题处理专家认为存在一种情感关系热力学第二…

网站图标怎么设置2019做什么类型网站

1、Coding Games一边玩游戏,一边挑战编程难题。Coding games支持包括PHP、C、JavaScript在内的20多种编程语言。用户界面功能强大,可以定制。例如,你可以选择你的代码编辑器的风格: Emacs、Vim、Classic。如果你想提升编程技能&am…

微信公众平台做微网站吗长沙医院网站建设

java-ssm-jsp基于java的信访管理系统的设计与实现 获取源码——》公主号:计算机专业毕设大全 获取源码——》公主号:计算机专业毕设大全

皖icp备 网站建设学校网站建

1、问题描述: 其一、报错为: Module not found: Error: Cant resolve vue-router 中文为: 找不到模块:错误:无法解析“vue-router” 其二、问题描述为: 根据报错的中文信息可知:应该是无法…

网站建设广州网站建设泰安搜索引擎优化招聘

虚拟机如何安装linux系统?安装linux系统首先要在电脑上安装好虚拟机,然后逐步进行linux系统安装。大致介绍下安装的流程。1.首先打开虚拟机软件,点击文件/新建虚拟机,用户可以按照默认选择,然后点击下一步。2.在浏览里&#xff0c…

拓普网站建设打广告去哪个平台

TH-WQX2在我们的日常生活中,气象条件的影响无处不在。无论是准备户外活动,还是安排农业生产,了解当天的风速和风向都是非常关键的。随着科技的发展,超声波风速风向仪的出现为气象监测带来了革命性的变化。 一、超声波风速风向仪的…

好看的移动端网站微信小程序官网开发

Docker 精通系列 Docker 精通之入门Docker 精通之微服务Docker 精通之常用命令Docker 精通之 Dockerfile 2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业。 但是,许多人并不清楚 Docker 到底是什么,要解决什么问…

湖南响应式网站建设费用2008 iis7添加网站

为什么要支持confd,老的应用配置管理模式是启动时读取配置文件,然后重新读取配置文件需要应用重启。一般的配置管理系统都是代码侵入性的,应用接入配置管理系统都需要使用对应的SDK来查询和监听数据的变更。对于一些已经成熟的系统来说&#…

自用网站开发费用会计分录开发工具在哪里 word

1.节点 想要获取网页中的数据,首先要获取网页 HTML 代码,再把数据从中提取出来。 我们要向网页的服务器发送请求,服务器返回的响应就是网页 HTML 代码 节点 (1)文档节点:就是文档的内容; &a…

茶叶网站建设模板农村基本制度建设网站

前言 总是三分钟热度的我折腾了一个可以每天自动截取指定网站页面并保存到Github的项目SiteHistory,感觉挺好(每次都这样 frameborder"0" scrolling"no" style"border-width: initial; border-style: none; width: 25px; height: 26px;&qu…

内网网站建设工作会议网站调用字体库

OpenGL帧缓冲区和帧缓冲区对象 Framebuffers and Framebuffer Objects 帧缓冲区的结构和组成,以及与默认帧缓冲区和帧缓冲对象相关的管理和属性。 帧缓冲区结构: 帧缓冲区由像素组成,排列成二维数组,每个像素由一定数量的位组成。…

网站上实用的h5特效建筑设计资料集

文章目录 Mybatis Plus自带分页和PageHelper有什么区别?Mybatis Plus整合PageHelper分页 springboot自定义拦截器获取分页参数spring boot下配置mybatis-plus分页插件单表分页查询自定义sql分页查询PageHelper 参考 Mybatis Plus自带分页和PageHelper有什么区别&…

wordpress短信通知上海做网站seo

1 中介者模式的基本概念 C中的中介者模式(Mediator Pattern)是一种行为型设计模式,主要用于降低多个对象和类之间的通信复杂性。这种模式通过引入一个中介类来封装和处理不同类之间的通信,从而实现松耦合,使代码更易于…

做育儿类网站用什么程序好深圳高端写字楼

“Allins正在通过全新的AMM方案为BRC20及多链铭文资产拓展DeFi场景,官网的全新上线意味着铭文资产的交易正式进入AMM时代。” 在2023年1月开始,Ordinals协议的推出成为了铭文赛道发展的开端,并为比特币这类非图灵完备的生态,带来了…

免费做h5的网站有哪些朔州建设机械网站

alipay.fund.trans.tobank.transfer(单笔转账到银行账户接口) 小程序文档 - 支付宝文档中心 一、下载支付宝SDK,现有版本v1、v2、v3 https://github.com/alipay/alipay-sdk-php-all github 慢的话,DNS 直达即可 140.82.112.3 github.com 【host文…

php做用户登录网站企业所得税怎么征收2022政策

人工智能工具使公司能够共享候选药物数据,同时保证敏感信息的安全,可以释放机器学习和尖端实验室技术的潜力,以实现共同利益。来自:AI can help to speed up drug discovery — but only if we give it the right data, nature, 2023 目录 研究内容生物科技与AI联邦学习主动…

网站备案每年审吗网站建设费属于哪个会计科目

现代城市作为一个复杂系统,牵一发而动全身,城市化进程中产生新的矛盾和社会问题都会影响整个城市系统的正常运转。智慧城市是应对这些问题的策略之一。城市工作要树立系统思维,从构成城市诸多要素、结构、功能等方面入手,系统推进…

如何给网站加二级域名网站可以用什么做

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 INSTEAD OF 触发器,也称替换触发器,是一种特殊的触发器,和其他建立在数据表上的触发器不同,INSTEAD OF 触发器建立在视图上。…