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

面试算法4:只出现一次的数字

题目

输入一个整数数组,数组中只有一个数字出现了一次,而其他数字都出现了3次。请找出那个只出现一次的数字。例如,如果输入的数组为[0,1,0,1,0,1,100],则只出现一次的数字是100。

分析

这个题目有一个简化版的类似的题目“输入数组中除一个数字只出现一次之外其他数字都出现两次,请找出只出现一次的数字”。任何一个数字异或它自己的结果都是0。如果将数组中所有数字进行异或运算,那么最终的结果就是那个只出现一次的数字。
在这个题目中只有一个数字出现了一次,其他数字出现了3次。相同的3个数字异或的结果是数字本身,但是将数组中所有数字进行异或运算并不能消除出现3次的数字。因此,需要想其他办法。
一个整数是由32个0或1组成的。我们可以将数组中所有数字的同一位置的数位相加。如果将出现3次的数字单独拿出来,那么这些出现了3次的数字的任意第i个数位之和都能被3整除。因此,如果数组中所有数字的第i个数位相加之和能被3整除,那么只出现一次的数字的第i个数位一定是0;如果数组中所有数字的第i个数位相加之和被3除余1,那么只出现一次的数字的第i个数位一定是1。这样只出现一次的任意第i个数位可以由数组中所有数字的第i个数位之和推算出来。当我们知道一个整数任意一位是0还是1之后,就可以知道它的数值。

public class Test {public static void main(String[] args) {int[] nums = {0, 1, 0, 1, 0, 1, 100};int result = singleNumber(nums);System.out.println(result);}public static int singleNumber(int[] nums) {int[] bitSums = new int[32];for (int num : nums) {for (int i = 0; i < 32; i++) {bitSums[i] += (num >> (31 - i)) & 1;}}int result = 0;for (int i = 0; i < 32; i++) {result = (result << 1) + bitSums[i] % 3;}return result;}
}

相关文章:

面试算法4:只出现一次的数字

题目 输入一个整数数组&#xff0c;数组中只有一个数字出现了一次&#xff0c;而其他数字都出现了3次。请找出那个只出现一次的数字。例如&#xff0c;如果输入的数组为[0&#xff0c;1&#xff0c;0&#xff0c;1&#xff0c;0&#xff0c;1&#xff0c;100]&#xff0c;则只…...

#与##的用法

# 作用&#xff1a; 左右加双引号&#xff0c;使其变成字符串 #的作用&#xff1a;是在形参左右各加双引号&#xff0c;使它变成字符串。#define STR(param) #paramchar *pStr STR(hello); // 展开后 char *pStr “hello”; ## 作用&#xff1a;胶水&#xff0c;使…...

Flutter的路由router-页面跳转

文章目录 概念介绍基本路由&#xff08;Basic Routing&#xff09;跳转到某个页面弹出页面 命名路由&#xff08;Named Routing&#xff09;第三方路由管理库&#xff08;Third-Party Routing Libraries&#xff09; Android原生的路由Intent-based Routing&#xff08;基于Int…...

24v转5v稳压芯片-5A大电流输出ic

这款24V转5V5A汽车充电芯片具有以下特性和参数&#xff1a; - 宽输入电压范围&#xff1a;4.5V至36V - 最大输出电流&#xff1a;5.0A - 高达92%的转换效率 - 恒流/恒压模式控制 - 最大占空比100% - 可调输出电压 - 2%的输出电压精度 - 集成40mΩ高侧开关 - 集成18mΩ低侧开关 …...

Layui + Flask | 表单元素(组件篇)(06)

表单元素是输入框、选择框、复选框、开关、单选框等表单项组件,用于对表单域进行输入。layui 的表单元素对原生的表单元素进行了大幅的用着,有好看的 UI 同时又有非常方便操作的 API。 输入框 https://layui.dev/docs/2.8/form/input.html 输入框组件是对文本框 <input ty…...

Kakfa - Producer机制原理与调优

Producer是Kakfa模型中生产者组件&#xff0c;也就是Kafka架构中数据的生产来源&#xff0c;虽然其整体是比较简单的组件&#xff0c;但依然有很多细节需要细品一番。比如Kafka的Producer实现原理是什么&#xff0c;怎么发送的消息&#xff1f;IO通讯模型是什么&#xff1f;在实…...

基于图像形态学处理和边缘提取算法的路面裂痕检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 [Rr,Cc] size(Image1);% 获取 Image1 矩阵的大小&#xff08;行数和列数&#xff09; % 创…...

opencv 基础(持续更新中)

1 前言 https://www.couragesteak.com/ 2 安装 3 基础属性demo 打开一张图片&#xff1a; import cv2img cv2.imread(./girl.jpg)print(img.shape) # (1536, 1024, 3) 数组形状 print(type(img)) # numpy 数组 print(img) # 三维数组&#xff08;彩色图片&am…...

科普现场!万博智云参加第五届张江汇智科普节

9月15日&#xff0c;第五届张江汇智科普节在汇智国际商业中心如期开展&#xff0c;展会中汇集了众多信息科技领域的新兴产品&#xff0c;展示内容主要分为国产替代和元宇宙场景展示两个方面。展现国产化最新科技成果&#xff0c;践行技术普惠理念&#xff0c;把高、精、专的技术…...

【记录】实现从Linux下载下载文件(文件导出功能)并记录过程产生的BUG问题。

前言 导出功能的实现&#xff0c;主要记录总结导出过程中出现的一些问题。 代码实现导出功能 public R templateDown(HttpServletResponse response) {String fileName "template.xlsx";// 清空responseresponse.reset();response.setCharacterEncoding("UTF…...

可扩展性表设计方案

文章目录 1 使用预留字段2 使用JSON字段3 使用单表继承4 构建属性表5 直接构建新表6 适当冗余 1 使用预留字段 在表设计初期&#xff0c;可以预留一些命名通用的备用字段&#xff0c;例如field1、field2、field3。当业务需要增加新字段时&#xff0c;就直接使用这些预留字段,无…...

Scotch: Combining SGX and SMM to Monitor Cloud Resource Usage【TEE的应用】

目录 摘要引言贡献 背景SMMXen Credit Scheduler与资源核算SGX 威胁模型Scheduler attacksResource interference attacksVM Escape attacks 架构Resource Accounting WorkflowCost of Accounting 具体的部署和评估见论文相关工作Resource Accounting基于SMM的方法基于SGX的系统…...

腾讯mini项目-【指标监控服务重构】2023-08-19

今日已办 benchmark How can we create a configuration for gobench with -benchmem – IDEs Support (IntelliJ Platform) | JetBrains 本机进行watermill-benchmark 使用 apifox 自动化测试上报固定数量的消息 启动watermill-pub/sub的 benchmark 函数 func BenchmarkPu…...

go实现grpc-快速开始

准备工作 Go, 最新版的 如果不会安装看Getting Started. Protocol buffer compiler, protoc, version 3. 想要安装, 请读Protocol Buffer Compiler Installation. 为 protocol compiler安装Go plugins: 想要安装运行以下命令: $ go install google.golang.org/protobuf/cmd/…...

linux上的init 0-6指令作用以及一些快捷键和系统指令

目录 linux上的init 0-6指令作用 CtrlAltF1-F7作用 Linux常用系统指令 查看linux内核版本 ubuntu和centos查看系统版本信息以及硬件信息 linux上的init 0-6指令作用 在Linux系统中&#xff0c;运行级别&#xff08;也称为init级别&#xff09;用来表示系统的不同状态或操作…...

Mixin 混入

Mixin 混入 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时&#xff0c;所有混入对象的选项将被“混合”进入该组件本身的选项。 怎么理解呢&#xff0c;就是每一个组件都会有一…...

pycharm快捷键

CtrlAltL 代码规范化 CtrlHome 回到代码最开始 CtrlEnd 回到代码最后面 shift回车 鼠标任意位置的下一行 altj 一直按可以选中相同的变量 alt鼠标左键 可以选择多个需要修改的变量或值 将光标放在某一行&#xff0c;home到最前面&#xff0c;end到最后…...

【面试刷题】——Linux基础命令

Linux基础命令是在Linux操作系统中执行常见任务的一组命令。以下是一些常用的Linux基础命令&#xff0c;它们用于管理文件系统、执行系统任务、查看文件内容等。 文件和目录操作&#xff1a; ls: 列出目录中的文件和子目录。 pwd: 显示当前工作目录的路径。 cd: 更改当前工作…...

第四步 Vue2 配置ESLint

ESLint 是一个广泛使用的 JavaScript 代码检查工具&#xff0c;可以帮助开发者在编写代码时发现并修复潜在的问题和错误。 在 第一步 创建工程 时虽然已经选择了包含 ESLint 预设配置&#xff0c;但还需要做一些调整&#xff0c;让我们使用起来能够更加的丝滑。 vue.config.j…...

[.NET学习笔记] - Thread.Sleep与Task.Delay在生产中应用的性能测试

场景 有个Service类&#xff0c;自己在内部实现生产者/消费者模式。即多个指令输入该服务后对象后&#xff0c;Service内部有专门的消费线程执行传入的指令。每个指令的执行间隔为1秒。这里有两部分组成&#xff0c; 工作线程的载体。new Thread与Task.Run。执行等待的方法。…...

WeChatMsg:如何用开源工具构建你的个人数字记忆库

WeChatMsg&#xff1a;如何用开源工具构建你的个人数字记忆库 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg…...

NHSE:5分钟掌握动物森友会存档编辑,打造你的完美岛屿

NHSE&#xff1a;5分钟掌握动物森友会存档编辑&#xff0c;打造你的完美岛屿 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 你是否曾经为了收集某个稀有家具而花费数周时间&#xff1f;是否因为地…...

技术团队的“1对1沟通”:别等员工提离职了才聊真心话

在软件测试领域&#xff0c;我们习惯于用脚本验证系统的稳定性&#xff0c;用压测工具探测性能的边界&#xff0c;却常常忽略了对团队中最重要的“系统”——人——进行定期的健康检查。许多技术管理者&#xff0c;尤其是从资深测试工程师晋升上来的团队负责人&#xff0c;往往…...

Deepin Boot Maker终极指南:3步搞定系统启动盘制作

Deepin Boot Maker终极指南&#xff1a;3步搞定系统启动盘制作 【免费下载链接】deepin-boot-maker 项目地址: https://gitcode.com/gh_mirrors/de/deepin-boot-maker 还在为制作系统启动盘而烦恼吗&#xff1f;&#x1f613; 命令行操作复杂易错&#xff0c;传统工具兼…...

Hermit:项目级环境隔离工具,告别开发环境冲突

1. 项目概述&#xff1a;从“隐士”到现代开发者的效率革命如果你和我一样&#xff0c;常年与终端为伴&#xff0c;每天在多个项目、不同编程语言和工具链之间切换&#xff0c;那你一定对那种“环境错乱”的痛楚深有体会。前一秒还在用 Python 3.11 调试一个数据脚本&#xff0…...

RuoYi Office 企业多端协同办公落地实战

很多企业在推进数字化办公时&#xff0c;常陷入一个尴尬的境地&#xff1a;PC 端的管理后台功能强大但操作繁琐&#xff0c;移动端的小程序或 App 虽然便捷却数据割裂。HR 在电脑上录入的员工档案&#xff0c;销售在手机里看不到&#xff1b;老板在微信上审批的流程&#xff0c…...

AI原生多任务学习效能跃迁路径(SITS 2026工业级调参手册)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生多任务学习&#xff1a;SITS 2026多目标优化实战技巧 在 SITS 2026 挑战赛中&#xff0c;AI 原生多任务学习&#xff08;MTL&#xff09;不再仅是共享底层表征的工程权衡&#xff0c;而是以任务语…...

从怀疑到信服:VR如何从娱乐玩具进化为现实增强工具

1. 从怀疑到信服&#xff1a;一个技术怀疑论者的VR认知重塑之旅我不是那种会第一时间冲进苹果店排队买最新款手机的人&#xff0c;甚至可以说&#xff0c;我对新科技抱有一种近乎“卢德主义”的警惕。每当有新的技术浪潮涌来&#xff0c;我的第一反应不是兴奋&#xff0c;而是审…...

Jellyfin.Plugin.MetaShark配置详解:10个关键设置优化你的元数据刮削体验

Jellyfin.Plugin.MetaShark配置详解&#xff1a;10个关键设置优化你的元数据刮削体验 【免费下载链接】jellyfin-plugin-metashark jellyfin电影元数据插件 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metashark 想要让你的Jellyfin媒体库拥有丰富的…...

紫光同创Logos系列FPGA的PCB设计避坑指南:从BGA扇出到配置管脚,新手必看

紫光同创Logos系列FPGA的PCB设计避坑指南&#xff1a;从BGA扇出到配置管脚实战解析 第一次接触紫光同创Logos系列FPGA的硬件设计时&#xff0c;面对密密麻麻的BGA封装和复杂的配置电路&#xff0c;多数工程师都会感到无从下手。我在设计第一块PGL22G开发板时&#xff0c;就曾因…...