Java寻找奇数

简介: 1.题目描述现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。输入描述:第一行:一个整数n,表示序列的长度。第二行:n个正整数ai,两个数中间以空格隔开。

1.题目描述

现在有一个长度为 n 的正整数序列,其中只有一种数值出现了奇数次,其他数值均出现偶数次,请你找出那个出现奇数次的数值。


输入描述:


第一行:一个整数n,表示序列的长度。第二行:n个正整数ai,两个数中间以空格隔开。


输出描述:


一个数,即在序列中唯一出现奇数次的数值。


示例

输入:5

          2 1 2 3 1

输出:3


2.题解

分析

本题可运用异或运算,从而求得其中的奇数


异或的运算规则:相同为0,相异为1


n ^ n = 0;

n ^ 0 = n;

n ^ m ^ n = m;


由于其他数值都为偶数次,因此运算后结果为0,而其中出现奇数次的的数值则被保留下来


具体实现

publicclassMain {
publicstaticvoidmain(String[] args) {
Scannersc=newScanner(System.in);
intn=sc.nextInt();
int[] arr=newint[n];
//录入数组元素的值for (inti=0; i<n; i++) {
arr[i] =sc.nextInt();
        }
intret=arr[0];
//通过异或的方式找出出现奇数次的数值for (inti=1; i<n; i++) {
ret^=arr[i];
        }
System.out.println(ret);
    }


注:题目出自牛客网,链接如下


https://www.nowcoder.com/practice/849b9e545f4742398d278f5dc4e003d2?tpId=182&&tqId=34478&rp=1&ru=/ta/exam-all&qru=/ta/exam-all/question-ranking

目录
相关文章
|
6月前
|
Java
2415. 反转二叉树的奇数层 --力扣 --JAVA
给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。 例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] ,那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。 反转后,返回树的根节点。 完美 二叉树需满足:二叉树的所有父节点都有两个子节点,且所有叶子节点都在同一层。 节点的 层数 等于该节点到根节点之间的边数。
40 0
|
Java
【JAVA】三种循环求奇数和
【JAVA】三种循环求奇数和
164 0
调整数组顺序使奇数位于偶数前面(剑指offer 21)Java双指针
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
|
Java
编写Java程序_定义两个方法,实现奇数偶数的判断,并计算和(有参数有返回值方法)
编写Java程序_定义两个方法,实现奇数偶数的判断,并计算和(有参数有返回值方法)
235 0
编写Java程序_定义两个方法,实现奇数偶数的判断,并计算和(有参数有返回值方法)
ZZULIOJ-1085,求奇数的乘积(多实例测试)(Java)
ZZULIOJ-1085,求奇数的乘积(多实例测试)(Java)
ZZULIOJ-1046,奇数的乘积(Java)
ZZULIOJ-1046,奇数的乘积(Java)
ZZULIOJ-1018,奇数偶数(Java)
ZZULIOJ-1018,奇数偶数(Java)
|
算法 Java
【leetcode刷题】41.调整数组顺序使奇数位于偶数前面——Java版
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐ left, right双指针法,时间复杂度O(N),空间复杂度O(1) ——leetcode此题热评
133 0
【leetcode刷题】41.调整数组顺序使奇数位于偶数前面——Java版
|
6天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?