题目

  给定一个数组arr,其中只有一个数出现了奇数次,其他数都出现了偶数次,打印这个数。

进阶问题

  有两个数出现了奇数次,其他数出现了偶数次,打印这两个数。

要求

  时间复杂度O(N),空间复杂度(1)。 
   
基本思路

  整数n与0异或的结果是n,整数n与整数n异或的结果是0;同时,异或满足交换律和结合律。 
  知道上述的内容,解决这道题就很容易了。如果n出现了偶数次,那么,所有的n异或完后一定为0;如果n出现了奇数次,那么所有的n异或完后一定为n。即使数组中同一个数不是连着出现的,根据异或的交换律和结合律,我们知道,数组中顺序的改变不会影响结果。所以,这道题的步骤就是:先申请一个整型变量记为e,初始化为0,让e去和数组中每一个元素进行异或,最终的e就是答案

public void printOddTimesNum1(int[] arr){int eO = 0;for (int cur :arr){eO ^= cur;    }System.out.println(eO);
}

进阶问题

public static void printOddTimesNum2(int[] arr){int eO = 0, eOhasOne = 0;for(int curNum:arr){eO ^= curNum;}int rightOne = eO & (~eO + 1);for(int cur : arr){if ((cur & rightOne)!=0){eOhasOne^=cur;}}System.out.println(eOhasOne + " " + (eO ^ eOhasOne))}

在其他数都出现偶数次的数组中找到出现奇数次的数相关推荐

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

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

  2. 在其他数都出现k次的数组中找到只出现一次的数

    题目 给定一个整型数组arr和一个大于1的整数k,已知arr中只有一个数出现了一次,其他的数都出现了k次,请返回只出现1次的数.要求时间复杂度O(N),空间复杂度O(1). 基本思路 首先看一个七进制 ...

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

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

  4. 关于在n-1的数组中找到那个被减去的数及异或与位与

    // 有1到N共 n-1个数,问少了哪个数 // 有序数组(如果是无序数组那么将a[i] 移动至 a[a[i]] 这样子就成功排序了) //其实可以采用byte数组的来做,感觉会更快 //当然,这个更 ...

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

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

  6. 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

    输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分. 我们首先会想到常规方法:创建一个临时数组,遍历所给数组中的所有元素,将偶数 ...

  7. C语言试题十三之求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整书,并将他们放在a所指的数组中,通过n返回这些数的个数。

    1. 题目 求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整书,并将他们放在a所指的数组中,通过n返回这些数的个数. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试. ...

  8. 如何在10亿个数中找到前1000大的数?

    2019独角兽企业重金招聘Python工程师标准>>> 如何在10亿个数中找到前1000大的数? 定位 TopN问题 算法 排序不是最优的解决方案: 可以考虑分治法: 类似快速排序中 ...

  9. 【LeetCode】快排-无序整数数组中找第k大的数(或者最小的k个数)

    一个有代表性的题目:无序整数数组中找第k大的数,对快排进行优化. 这里先不说这个题目怎么解答,先仔细回顾回顾快排,掰开了揉碎了理解理解这个排序算法:时间复杂度.空间复杂度:什么情况下是复杂度最高的情况 ...

最新文章

  1. html页面视频标签,html5基础标签(html5视频标签 html5新标签用法)
  2. laravel ajax vue6,详解用vue.js和laravel实现微信支付
  3. 手动部署OpenStack环境(四:安装控制器必备软件)
  4. 姚期智:这是一个“前所未有”的金融科技与计算机科学的黄金时代
  5. leetcode206.反转链表 解题思路(简单)
  6. php mysql curd_Php mysql 常用代码、CURD操作以及简单查询
  7. python类与对象示意图_2020Python作业——类与对象,
  8. matlab中scrsz的意思,matlab图片c存储方法
  9. Python-Learn
  10. mysql备份恢复数据库据/表
  11. Go-fastdfs分布式文件系统搭建
  12. audio_policy.conf说明(翻译)
  13. bzoj1452 [JSOI2009]Count
  14. 【扫描线】【POJ-1177】Picture【周长并】
  15. IDEA常用快捷键总结
  16. Excel: 批量去除空格的函数——trim函数, substitute函数,clean函数
  17. 二叉树:二叉树视频笔记
  18. Django计算机毕业设计办公用品管理系统(程序+LW)Python
  19. 奔跑在爱情的高速路上
  20. C++信息学奥赛,赛制流程介绍

热门文章

  1. volatile变量与普通变量的区别
  2. jQuery 图片滚动效果
  3. ylbtech-数据库设计与优化-对作为复选框/单选列表的集合表的设计
  4. 《算法竞赛进阶指南》打卡-基本算法-AcWing 99. 激光炸弹:二维前缀和
  5. centos7 mysql安装配置_mysql 5.7.17 安装配置方法图文教程(CentOS7)
  6. python输入程序_Python 程序设计中的输入与输出介绍
  7. ajax后台返回数据中文乱码_ajax提交 返回中文乱码问题
  8. buffer pool mysql_MySQL 5.7版本新特性(修改buffer pool,无需重启服务)
  9. 参考地、保护地、大地的概念
  10. 文本编辑器中菜单栏删除功能的实现