位运算[找出唯一成对的数]

题目来源:蓝桥云课

不用辅助储存空间

 import java.util.Random;public class T_01 {public class Util {public static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}public static void print(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println();}}​public static void main(String[] args) {int n=1001;int[] arr=new int[n];for (int i = 0; i < arr.length-1; i++) {arr[i]=i+1;}//        最后一个是随机数arr[arr.length-1]=new Random().nextInt(n-1)+1;​//        最后一个数的随机下标int index=new Random().nextInt(n);Util.swap(arr, index, arr.length-1);Util.print(arr);int x1=0;//        进行位运算for (int i = 1; i <= n-1; i++) {x1=(x1^i);}for (int i = 0; i < n; i++) {x1= (x1^arr[i]);}System.out.println(x1);}}
  • swap 方法:此方法的作用是交换数组 arr 中索引为 ij 的两个元素。它借助一个临时变量 temp 来保存其中一个元素的值,进而实现交换操作。

  • print 方法:该方法用于打印数组 arr 中的所有元素,元素之间以空格分隔,打印完所有元素后会换行。

  • arr[arr.length - 1] = new Random().nextInt(n - 1) + 1;:把数组的最后一个元素设置为从 1 到 n - 1 之间的随机整数。

位运算原理

异或运算(^)具有以下特性:

  • 任何数与 0 异或结果为其本身,即 a ^ 0 = a

  • 任何数与自身异或结果为 0,即 a ^ a = 0

  • 异或运算满足交换律和结合律,即 a ^ b ^ c = a ^ c ^ b

n=11为例(重复数为2):

【1,2,3,4,5,6,7,2,9,10,8】

 x1=0;for (int i = 1; i <= n-1; i++) {x1=(x1^i);}

x1=0^1^2^3^4^5^6^7^8^9^10;

 for (int i = 0; i < n; i++) {x1= (x1^arr[i]);}

i=0;

x1=0^1^2^3^4^5^6^7^8^9^10^0;

x1=1^2^3^4^5^6^7^8^9^10;

i=1;

x1=1^2^3^4^5^6^7^8^9^10^1;

x1=2^3^4^5^6^7^8^9^10;

i=2;

x1=2^3^4^5^6^7^8^9^10^2;

x1=3^4^5^6^7^8^9^10;

……

i=10

x1=2^8^8;

x1=2;

若不受题目限制:不用辅助储存空间

int[] con=new int[n];for (int i = 0; i < n; i++) {con[arr[i]]++;}for (int i = 0; i < n; i++) {if(con[i]==2){System.out.println(i);break;}}

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

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

相关文章

简记_FPGA 硬件最小系统设计

一、FPGA板级设计的五要素 1.1、电源电路 核心电压&#xff1a;一般为固定值 IO电压&#xff1a;FPGA的IO分为多个bank&#xff0c;同一个bank的不同IO引脚电压相同&#xff0c;不同bank的电压可以不同 辅助电压&#xff1a;除了核心电压和IO电压&#xff0c;FPGA工作所需的…

7.2 控件和组件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的 C#工具箱位于编辑窗口的左侧&#xff0c;它默认内置了大量的控件和组件。控件一般派生于System.Windows.Forms.Control类&#xff0c;显…

Spring Boot中接口数据字段为 Long 类型时,前端number精度丢失问题解决方案

Spring Boot中接口数据字段为 Long 类型时&#xff0c;前端number精度丢失问题解决方案 在Spring Boot中&#xff0c;当接口数据字段为 Long 类型时&#xff0c;返回页面的JSON中该字段通常会被序列化为数字类型。 例如&#xff0c;一个Java对象中有一个 Long 类型的属性 id …

OpenCV第2课 OpenCV的组成结构与图片/视频的加载及展示

1.OpenCV 的组成结构 2.OpenCV 的具体模块 3. 图像的读取 4. 视频的读取 1.OpenCV 的组成结构 OpenCV 是由很多模块组成的,这些模块可以分成很多层: 最底层是基于硬件加速层(HAL)的各种硬件优化。再上一层是opencv_contrib 模块所包含的OpenCV 由其他开发人员所贡献的代…

安装配置Tesseract-OCR

1,下载对应的可执行文件 在Tesseract OCR下载地址Index of /tesseract下载合适的版本安装包,如下: 点击安装包进行安装: 语言选择英文: 如果需要识别中文,则可以在安装过程中勾选下载中文语言包和脚本(也可以按需选择繁体):

关于墙面涂鸦的视觉检测与喷涂修复装置研究(大纲)

公共场所墙面涂鸦视觉检测与精准喷涂修复装置研究 融合视觉识别与自动化喷涂的墙面维护解决方案 第一章 绪论 1.1 研究背景与意义 城市形象与秩序维护&#xff1a; 涂鸦对公共环境的影响&#xff08;破坏美观、传递不良信息&#xff09;清除涂鸦的重要性&#xff08;恢复原貌…

图论 | 98. 所有可达路径

98. 所有可达路径 题目链接&#xff1a; 98. 所有可达路径 思路 先创建邻接矩阵&#xff0c;再深搜写代码是需要注意的是acm格式&#xff0c;输入的格式要转化为int&#xff0c;输出要转化为str&#xff0c;用map&#xff08;&#xff09;实现。 dfs def dfs(grid,node,n,…

MCP+Hologres+LLM 搭建数据分析 Agent

LLM大模型在数据分析领域的挑战 在数据分析领域&#xff0c;大模型&#xff08;LLM&#xff09;具备强大语言理解能力&#xff0c;NL2SQL等各类智能化工具也极大提升了数据分析人员的分析效率&#xff0c;但仍旧面临不少挑战&#xff1a; 传统 LLM 缺乏实时数据接入能力&…

Categorical分布(分类分布):深度学习中的离散建模利器

Categorical分布&#xff1a;深度学习中的离散建模利器 引言 对于深度学习研究者来说&#xff0c;概率分布是模型设计和优化的基石。在许多生成模型中&#xff0c;如变分自编码器&#xff08;VAE&#xff09;及其变种VQ-VAE&#xff08;Vector Quantized Variational Autoenc…

Langchain 提示词(Prompt)

基本用法 1. 基本概念 提示词模板 是一个字符串模板&#xff0c;其中包含一些占位符&#xff08;通常是 {variable} 形式的&#xff09;&#xff0c;这些占位符可以在运行时被实际值替换。LangChain 提供了多种类型的提示词模板&#xff0c;以适应不同的使用场景。 2. 主要类…

centos7.9镜像源及Python引入ssl问题处理

一、镜像源修改 1. 备份原有的镜像源配置文件 在修改之前,先备份现有的 CentOS-Base.repo 文件: sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2. 编辑镜像源配置文件 使用文本编辑器(如 nano 或 vi)打开 /etc/yum.repos.d/Ce…

Java高频面试之集合-17

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;JDK 8 对 HashMap 主要做了哪些优化呢&#xff1f;为什么要这么做&#xff1f; JDK 8 对 HashMap 的主要优化及原因 JDK…

计算机二级:函数基础题

函数基础题 第一题 rinput("请输入半径&#xff1a;") c3.1415926*r*2 print("{:.0f}".format(c))输出&#xff1a; Type Error第二题 a7 b2 print(a%2)输出 1第三题 ab4 def my_ab(ab,xy):abpow(ab,xy)print(ab,end"\n") my_ab(ab,2)prin…

C# 属性(Property)‌详解

在 C# 中&#xff0c;‌属性&#xff08;Property&#xff09;‌ 是类或结构体中的成员&#xff0c;用于封装对私有字段&#xff08;称为 ‌backing field‌&#xff09;的访问&#xff0c;提供更灵活和安全的数据操作方式。属性通过 get 和 set 访问器控制对数据的读写&#x…

iPhone 16如何翻译文档?文档翻译技巧、软件推荐

在全球化的今天&#xff0c;跨语言交流变得越来越频繁&#xff0c;而文档翻译更是成为许多人日常工作和学习中的重要需求。作为苹果公司最新推出的旗舰机型&#xff0c;iPhone 16凭借其强大的硬件性能和丰富的软件生态&#xff0c;为我们提供了多种便捷的文档翻译方式&#xff…

HRP方法全文总结与模型流程解析

背景与问题 传统二次优化方法&#xff08;如Markowitz的CLA&#xff09;存在三大问题&#xff1a; 不稳定性&#xff1a;协方差矩阵的高条件数导致逆矩阵计算误差放大&#xff0c;权重剧烈波动。 集中性&#xff1a;优化结果过度集中于少数资产&#xff0c;易受个体风险冲击。…

解决项目一直在构建中的问题:以 IntelliJ IDEA 为例提高共享堆内存

在使用 IntelliJ IDEA 时&#xff0c;开发者可能会遇到项目长期处于构建状态的问题。这种情况将严重影响开发效率。通常&#xff0c;这种问题的一个常见原因是构建进程所分配的堆内存不足。本文将以 IntelliJ IDEA 为背景&#xff0c;介绍如何通过提高共享堆内存来解决此问题&a…

金橙子删除打标对象

注意在使用金橙子根据对象名称删除对象时要注意,每删除一个对象,所有对象的索引都将改变。 如果你是用for去遍历,再根据索引获取打标对象名称的话就会出现漏的掉的问题。 改进方法 1,将要删除的对象找到后,统一存放在一个集合中。再根据这个要删除的对象集合再一个个去遍…

JVM常见概念之条件移动

问题 当我们有分支频率数据时&#xff0c;有什么有趣的技巧可以做吗&#xff1f;什么是条件移动&#xff1f; 基础知识 如果您需要在来自一个分支的两个结果之间进行选择&#xff0c;那么您可以在 ISA 级别做两件不同的事情。 首先&#xff0c;你可以创建一个分支&#xff…

MANISKILL3:GPU 并行机器人模拟和渲染,用于通用的具身AI

本文介绍了一种名为ManiSkill3的机器人仿真系统&#xff0c;它采用了GPU并行化技术&#xff0c;并针对通用性进行了优化。该系统支持多种视觉输入方式和异构模拟&#xff0c;能够在物理场景中进行高效的仿真和渲染&#xff0c;达到比其他平台更快的速度和更少的GPU内存使用量。…