孤单数算法
1.背景
腾讯终面:孤单的QQ号码怎么找?
问题一:有n个QQ号码,除1个孤单的QQ号码外,其余的QQ号码都是成双成对的,求这个孤单的QQ号码,要求:时间复杂度为O(n), 空间复杂度为O(1).
问题二:有n个QQ号码,除2个孤单的QQ号码外,其余的QQ号码都是成双成对的,求这2个孤单的QQ号码,要求:时间复杂度为O(n), 空间复杂度为O(1).
问题一求解方案:
方法一:所有数据放在数组中,下标标识qq号,值等于出现次数,然后遍历。
方法二:所有数字相减
方法三:异或方案
问题二求解方案:
基于问题方法三的思路,出现一对的的数字二进制编码是相同的,两个孤单数可以分成两组,数字转换成二进制之后,最后一位根据0 和1 分组,然后分别异或得到两个不同的值。
2.异或java实现
package test;import java.util.ArrayList;public class AloneNums {public static void main(String[] args) {aloneNums();aloneNums2();}// 一个孤单数static void aloneNums(){int[] a ={520, 216, 216, 520, 111};int res=0;//System.out.println(a);for(int i : a) {res^=i;}System.out.println(res);}// 两个孤单数static void aloneNums2(){int[] a ={520, 216, 216, 520, 111,734};class Tmp {int a;String astr;void seta(int a ){ this.a = a;}void setastr(String astr ){ this.astr = astr;}};ArrayList<Tmp> res = new ArrayList<>();int alone1=0,alone2=0 ;for(int i : a) {String binaryNum = Integer.toBinaryString(i);Tmp t = new Tmp();t.seta(i);t.setastr(binaryNum);res.add(t);}for(Tmp i : res) {String str = i.astr;// 字符串最后一位 str.substring(str.length()-1)// 1 和 0 分类,然后分别异或if(str.substring(str.length()-1).equals("1")){alone1^=i.a;}elsealone2^=i.a;}System.out.println(alone1);System.out.println(alone2);}
}
3.遗留问题
n个孤单数如何寻找?
相关文章:
孤单数算法
1.背景 腾讯终面:孤单的QQ号码怎么找? 问题一:有n个QQ号码,除1个孤单的QQ号码外,其余的QQ号码都是成双成对的,求这个孤单的QQ号码,要求:时间复杂度为O(n), 空间复杂度为O(1). 问题…...
triangulate_object_model_3d算子总结
目录 1.去掉固定方向的点云干扰 2.增加八叉树深度,实现更高细节级别的三角测量 3.腐蚀和膨胀,得到更平滑的点云 1.去掉固定方向的点云干扰 例程:triangulate_object_model_3d_xyz_mapping.hdev...
ZincSearch Java 客户端教程
ZincSearch Zinc 简单、强大,不了解的同学可以参见我之前的博客。今天我们这里谈谈 Java 环境如何集成 Zinc 客户端,跟如何使用的。 安装 Zinc 到 Github 的官方 Releases 下载: 我的是 Windows 开发环境,下载 zincsearch_0.4…...
数据结构(一)(嵌入式学习)
数据结构干货总结(一)基础线性表的顺序表示线性表的链式表示单链表双链表循环链表循环单链表循环双链表栈顺序存储链式存储队列队列的定义队列的常见基本操作队列的顺序存储结构顺序队列循环队列队列的链式存储结构树概念二叉树二叉树的创建基础 数据&a…...
合成复用原则-快速理解
什么是合成/聚合复用原则? 合成/聚合复用原则是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。 简述为:要尽量使用合成/聚合,尽量不要使用继承…...
Scala04 方法与函数
Scala04 方法与函数 Scala 中的也有方法和函数的概念。 Scala中的 方法 是类的一部分。 Scala中的 函数 是一个对象,可以赋值给变量。 在类中定义的函数就是方法 4.1 方法 Scala 中方法 与 Java 中类似,是组成类的一部分 4.1.1 语法结构 格式&#x…...
XJTUSE专业课与实验指南(已经开源)
文章目录XJTUSE专业课与实验指南大一小学期大二上课程实验大二下课程实验大二小学期大三上课程实验大三下课程实验XJTUSE专业课与实验指南 github地址:https://github.com/yijunquan-afk/XJTUSE-NOTES.git 📄写在前面 1️⃣ 本篇文章仅供参考࿰…...
Spring面试专题
讲师:邓澎波 Spring面试专题 1.Spring应该很熟悉吧?来介绍下你的Spring的理解 1.1 Spring的发展历程 先介绍Spring是怎么来的,发展中有哪些核心的节点,当前的最新版本是什么等 通过上图可以比较清晰的看到Spring的各个时间版本…...
【truncate、delete和drop的6大区别!】
在MySQL中,truncate、delete和drop是三个常用的命令,它们可以用于删除表或表中的数据,下面是它们的六大区别: 语法不同: truncate和delete是SQL语句,drop是DDL(数据定义语言)语句。…...
如何入门Vue:掌握Vue的核心概念和基本用法
Vue是一种流行的JavaScript框架,它可以让开发者更容易地构建响应式的用户界面。Vue的设计理念是简单易懂,它的核心库只关注视图层,可以与其它库或现有项目很好地结合。在本文中,我将介绍Vue的基础概念和如何开始使用Vue。Vue的基本…...
APM飞控使用动捕等外部定位
本文初次写于2023.03.03,pixhawk飞控应该是刷写了ArduPilot 4.1以上的版本。 机载计算机通过WIFI和vrpn_ros_client获取动捕系统(vicon或者nokov)的无人机定位数据(x,y,z四元数),然…...
【vulhub漏洞复现】CVE-2013-4547 Nginx 文件名逻辑漏洞
一、漏洞详情影响版本 Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7通过%00截断绕过后缀名的限制,使上传的php内容文件被解析执行。当Nginx得到一个用户请求时,首先对url进行解析,进行正则匹配,如果匹配到以.php后缀结尾的文件名&#x…...
Kubernetes中配置livenessProbe、readinessProbe和startupProbe
livenessProbe、readinessProbe和startupProbe作用kubelet使用livenessProbe(存活探针)来判断何时重启容器。例如,当程序中产生死锁的时候,程序还在运行,通过livenessProbe可以检测到程序已不能正常提供服务。这种情况…...
冰箱压缩机 方案
压缩机是制冷系统的心脏,它从吸气管吸入低温低压的制冷剂气体,通过电机运转带动活塞对其进行压缩后,向排气管排出高温高压的制冷剂气体,为制冷循环提供动力,从而实现压缩→冷凝→膨胀→蒸发 ( 吸热 ) 的制冷循环。压缩…...
一文带你入门,领略angular风采(上)!!!
话不多说,上代码!!! 一、脚手架创建项目 1.安装脚手架指令 npm install -g angular/cli 2.创建项目 ng new my-app(ng new 项目名) 3.功能选择 4.切换到创建好的项目上 cd my-app 5.安装依赖 npm install 6.运行项目 npm start或…...
SpringMVC 参数绑定(视图传参到控制器)
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
Three.js高级应用--利用Three.js+WebGL实现fbx和obj格式模型的自定义加载
通过对webgl和three.js的不断学习与实践,在三维应用场景建设过程中,利用Three.js与webgl配合可以实现大部分三维场景的应用需求,这一篇主要讲述如何利用Three.js加载已有的模型,支持的三维模型格式有.fbx和.obj,同时.o…...
Go struct
每个无名结构体类型的字面形式均由struct关键字开头,后面跟着用一对大括号{},其中包裹着的一系列字段(field)声明。 一般来说,每个字段声明由一个字段名和字段类型组成。一个结构体类型的字段数目可以为0。struct {tit…...
Redis多线程模型源码解析
1. 配置启用多线程 默认情况下多线程是默认关闭的,如果想要启动多线程,需要在配置文件中做适当的修改。 修改redis.conf 文件如下 io-threads 4 #启用的 io 线程数量 io-threads-do-reads yes #读请求也使用io线程2 源码解析 进入到Redis的main入口函…...
搭建zabbix4.0监控服务实例
一.Zabbix服务介绍 1.1服务介绍 Zabbix是基于WEB界面的分布式系统监控的开源解决方案,Zabbix能够监控各种网络参数,保证服务器系统安全稳定的运行,并提供灵活的通知机制让SA快速定位并解决存在的各种问题。 1.2 Zabbix优点 Zabbix分布式监…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
