关于在n-1的数组中找到那个被减去的数及异或与位与
// 有1到N共 n-1个数,问少了哪个数
// 有序数组(如果是无序数组那么将a[i] 移动至 a[a[i]] 这样子就成功排序了)
//其实可以采用byte数组的来做,感觉会更快
//当然,这个更多的是用在1-n 共n+1个数,问多出来的那个数是多少?这个时候可以不确认一下N是多少,然后,连续的每4个数异或出来的结果为0,这样即省去了数组的开销
public static void lessOne(int[] a) {int fruit = 0;int count = 0;for (int i = 0; i < a.length; i++) {count++;fruit ^= a[i];if (count == 4) {if (fruit == 0) {count = 0;} else {System.out.println("Less is:" + i);break;}}} }
下面为测试代码
int[] a = new int[100]; for (int i = 0; i < a.length; i++) {if (i == 67)continue;a[i] = i; } //也可以使用已提供的方法进行排序,但不建议 //Arrays.sort(a); lessOne(a);
// 有一组数,中间有两个数的出现次数为奇数次,问是哪两个数
public static void lesstwoj() { int[] a = { 1, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7, 7, 8 };int sum = 0;for (int i : a) {sum ^= i;}int count = 0;int temp = sum;while ((temp & 1) == 0) {temp >>= 1;count++;}int one = 0;for (int i : a) {if (((i >> count) & 1) != 0) {one ^= i;}}int sec = sum ^ one;System.out.println("one:" + one);//第一个数System.out.println("sec:" + sec);//第二个数 }
// 采用异或运算来进行交换位置
//不借助于第三个数
public static void swap(int a, int b) {if (a != b) {a = a ^ b;b = a ^ b;a = a ^ b;}System.out.println("one-- a:" + a + " b:" + b); }
转载于:https://www.cnblogs.com/ahhy/p/4383668.html
关于在n-1的数组中找到那个被减去的数及异或与位与相关推荐
- 在数组中找到第 k 小的数
在数组中找到第 k 小的数 [要求] 如果 arr 长度为 N,要求时间复杂度为 O(N),额外空间复杂度为 O(1). public static int[] getMinKNumByHeap(in ...
- 在其他数都出现偶数次的数组中找到出现奇数次的数
题目 给定一个数组arr,其中只有一个数出现了奇数次,其他数都出现了偶数次,打印这个数. 进阶问题 有两个数出现了奇数次,其他数出现了偶数次,打印这两个数. 要求 时间复杂度O(N),空间复杂度(1) ...
- 无序数组中找第K大的数
类快排算法 leetcode215 由于只要求找出第k大的数,没必要将数组中所有值都排序. 典型解法:快速排序分组. 在数组中找到第k大的元素 取基准元素,将元素分为两个集合,一个集合元素比基准小,另 ...
- java数组中最小的k个元素_java – 在数组中找到k个最小整数
这是我的代码,它适用于查找1-7个最小整数,但是8和9.当我在数组中找到8个最小整数时,它返回null.任何人都可以帮我解决问题吗?我在这里使用quicksort. 非常感谢! 更新:我已经找到问题, ...
- python求无序列表中位数_python 实现在无序数组中找到中位数方法
一.问题描述 1.求一个无序数组的中位数, (若数组是偶数,则中位数是指中间两个数字之和除以2,若数组是奇数,则中位数是指最中间位置.要求:不能使用排序,时间复杂度尽量低 2.例如:lists = [ ...
- 漫画:如何在数组中找到和为 “特定值” 的三个数?
作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 前一段时间,我们介绍了LeetCode上面的一个经典算法题[两数之和问题]. 这一次,我们把问题做一下扩展,尝试在数 ...
- 《程序员代码面试指南》第七章 位运算 在其他数都出现k 次的数组中找到只出现一次的数...
题目 在其他数都出现k 次的数组中找到只出现一次的数 java 代码 package com.lizhouwei.chapter7;/*** @Description: 在其他数都出现k 次的数组中找 ...
- C语言数组中找到第一个重复元素的算法(附完整源码)
C语言数组中找到第一个重复元素的算法 C语言数组中找到第一个重复元素的算法完整源码(定义,实现,main函数测试) C语言数组中找到第一个重复元素的算法完整源码(定义,实现,main函数测试) #in ...
- C语言在数组中找到最大的元素(附完整源码)
C语言在数组中找到最大的元素 C语言在数组中找到最大的元素完整源码(定义,实现,main函数测试) C语言在数组中找到最大的元素完整源码(定义,实现,main函数测试) #include <io ...
最新文章
- python精彩编程200例pdf下载-最经典的25本Python编程开发电子书(附下载地址)!...
- SQL 中 left join、right join、inner join 的区别
- 小眼睛有多惨?美颜都懒得救你......
- 中科院教授:科技界已几乎沦为名利场...
- 比Java语言更好,为什么Java比其他解释语言具有更好的性能?
- 腾讯云对象存储 python_腾讯云对象存储(COS)服务的 API
- 【收藏】史上最全推荐系统传统算法合集
- Atitit gui的实现模式文本 dom ast 像素绘图api native 目录 1. Pl ast xml domAst	1 1.1. 简介	1 1.1.1. 【具体语法树】	2 2.
- OneNote 使用汇总
- 【微信小程序模板直接套用】微信小程序制作模板套用平台
- 互联网协议入门(网络分层)
- 旧手机别扔,手把手教你DIY一台Linux服务器
- CSS百分比参照物整理
- ios android 设计图,帮你彻底搞懂 iOS 和 Android 的设计差异
- 在Spring MVC框架下利用RESTful API和MongoDB实现用户留言与邮件反馈
- [云计算]OpenStack - Neutron
- 阿里携“骑呗”入局共享单车,好戏即将开始
- linux的tar命令之-N参数详解
- 黑帽子技能|爆破Android的锁屏密码
- Python编曲实践(四):向MIDI文件中添加鼓组音轨