// 有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的数组中找到那个被减去的数及异或与位与相关推荐

  1. 在数组中找到第 k 小的数

    在数组中找到第 k 小的数 [要求] 如果 arr 长度为 N,要求时间复杂度为 O(N),额外空间复杂度为 O(1). public static int[] getMinKNumByHeap(in ...

  2. 在其他数都出现偶数次的数组中找到出现奇数次的数

    题目 给定一个数组arr,其中只有一个数出现了奇数次,其他数都出现了偶数次,打印这个数. 进阶问题 有两个数出现了奇数次,其他数出现了偶数次,打印这两个数. 要求 时间复杂度O(N),空间复杂度(1) ...

  3. 无序数组中找第K大的数

    类快排算法 leetcode215 由于只要求找出第k大的数,没必要将数组中所有值都排序. 典型解法:快速排序分组. 在数组中找到第k大的元素 取基准元素,将元素分为两个集合,一个集合元素比基准小,另 ...

  4. java数组中最小的k个元素_java – 在数组中找到k个最小整数

    这是我的代码,它适用于查找1-7个最小整数,但是8和9.当我在数组中找到8个最小整数时,它返回null.任何人都可以帮我解决问题吗?我在这里使用quicksort. 非常感谢! 更新:我已经找到问题, ...

  5. python求无序列表中位数_python 实现在无序数组中找到中位数方法

    一.问题描述 1.求一个无序数组的中位数, (若数组是偶数,则中位数是指中间两个数字之和除以2,若数组是奇数,则中位数是指最中间位置.要求:不能使用排序,时间复杂度尽量低 2.例如:lists = [ ...

  6. 漫画:如何在数组中找到和为 “特定值” 的三个数?

    作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 前一段时间,我们介绍了LeetCode上面的一个经典算法题[两数之和问题]. 这一次,我们把问题做一下扩展,尝试在数 ...

  7. 《程序员代码面试指南》第七章 位运算 在其他数都出现k 次的数组中找到只出现一次的数...

    题目 在其他数都出现k 次的数组中找到只出现一次的数 java 代码 package com.lizhouwei.chapter7;/*** @Description: 在其他数都出现k 次的数组中找 ...

  8. C语言数组中找到第一个重复元素的算法(附完整源码)

    C语言数组中找到第一个重复元素的算法 C语言数组中找到第一个重复元素的算法完整源码(定义,实现,main函数测试) C语言数组中找到第一个重复元素的算法完整源码(定义,实现,main函数测试) #in ...

  9. C语言在数组中找到最大的元素(附完整源码)

    C语言在数组中找到最大的元素 C语言在数组中找到最大的元素完整源码(定义,实现,main函数测试) C语言在数组中找到最大的元素完整源码(定义,实现,main函数测试) #include <io ...

最新文章

  1. python精彩编程200例pdf下载-最经典的25本Python编程开发电子书(附下载地址)!...
  2. SQL 中 left join、right join、inner join 的区别
  3. 小眼睛有多惨?美颜都懒得救你......
  4. 中科院教授:科技界已几乎沦为名利场...
  5. 比Java语言更好,为什么Java比其他解释语言具有更好的性能?
  6. 腾讯云对象存储 python_腾讯云对象存储(COS)服务的 API
  7. 【收藏】史上最全推荐系统传统算法合集
  8. Atitit gui的实现模式文本 dom ast 像素绘图api native 目录 1. Pl ast xml domAst 1 1.1. 简介 1 1.1.1. 【具体语法树】 2 2.
  9. OneNote 使用汇总
  10. 【微信小程序模板直接套用】微信小程序制作模板套用平台
  11. 互联网协议入门(网络分层)
  12. 旧手机别扔,手把手教你DIY一台Linux服务器
  13. CSS百分比参照物整理
  14. ios android 设计图,帮你彻底搞懂 iOS 和 Android 的设计差异
  15. 在Spring MVC框架下利用RESTful API和MongoDB实现用户留言与邮件反馈
  16. [云计算]OpenStack - Neutron
  17. 阿里携“骑呗”入局共享单车,好戏即将开始
  18. linux的tar命令之-N参数详解
  19. 黑帽子技能|爆破Android的锁屏密码
  20. Python编曲实践(四):向MIDI文件中添加鼓组音轨

热门文章

  1. Mac安装nginx配置过程
  2. angularjs 上传
  3. hadoop-hdfs-存储模型-架构模型-角色介绍
  4. Laravel数据库迁移和填充(支持中文)
  5. Android软件安全与逆向分析之Dalvik
  6. 中国移动IM-飞信-0802上线新版本 试用手记
  7. MAC下面maven如何设置让其实下载源码
  8. Exchange 2010 创建设备室邮箱
  9. 理解Lucene/Solr的缓存
  10. MySQL日期时间函数大全(转)