算法学习 - 用异或找出数组中缺失的整数
发布日期:2021-06-30 14:58:27
浏览次数:2
分类:技术文章
本文共 1113 字,大约阅读时间需要 3 分钟。
硬着头皮开始看算法课程。第一课第一个例子我就卡住了。。。
老师说的轻轻松松几句就得到了结果,但我完全懵逼中。。。 暂停一下自己补补课吧,笔记如下。/** * 一个无序数组里有99个不重复正整数,范围从1到100,唯独缺少一个整数。如何找出这个缺失的整数? * 思路:将缺少了一个整数的数组视为集合A,将没缺的视为集合B。两个集合的差集就是我们要求的目标。 * 并且异或运算就能实现过滤相同,保留差异的目的。 * 1110 * ^0111 * =1001 */class Demo{ public static void main(String[] args) { int[] arr = { 7,13,11,10,8,9,14,15,16}; System.out.println("solution_1 : " + solution_1(arr, 7, 16)); System.out.println("solution_2 : " + solution_2(arr, 7, 16)); int[] arr2 = { 0,1,2,10,8,3,4,6,7,5}; System.out.println("solution_1(0-n): " + solution_1(arr2)); System.out.println("solution_2(0-n): " + solution_2(arr2)); } /** * 分3步: * 第一步:循环把缺了数字的数组所有元素进行异或得到 target * 第二步:循环把完整的数组所有元素进行异或得到 sample * 第三步:target ^ sample 相同的部分都抵消了,剩下两个数组的差异,也就是缺的那个数。 * @param arr 被查找的数组 * @param start 数组中的最小整数(如果数组内容为0到n,那么start=0,end=arr.length) * @param end 数组中的最大整数(如果数组内容为0到n,那么start=0,end=arr.length) */ public static int solution_1(int[] arr, int start, int end) { int sample = 0; int target = 0; int len=arr.length; if (arr == null || len == 0) { return 0; } for (int i=0; i
转载地址:https://jerryjin.blog.csdn.net/article/details/89073831 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月25日 17时07分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
我的2016书单
2019-05-01
冷眼看小程序
2019-05-01
为什么执行 x in range(y) 如此快?
2019-05-01
看完这篇文章你还不理解 Python 装饰器,只有一种可能...
2019-05-01
Python干货:表达式 i += x 与 i = i + x 等价吗?
2019-05-01
有了这些 Chrome 插件,效率提升10倍(建议收藏)
2019-05-01
Python 编码错误的本质原因
2019-05-01
Python 开发者都会遇到的错误:UnboundLocalError
2019-05-01
用 Python 送“爱心”
2019-05-01
理解HTTPS为什么安全前,先看看这些东西
2019-05-01
代码这样写不止于优雅(Python版)
2019-05-01
一份来自掘金社区的开发者报告
2019-05-01
只有1%的程序员搞懂过浮点数陷阱
2019-05-01
Erlang 之父 Joe Armstrong 去世
2019-05-01
速来,上期中奖名单
2019-05-01
一名 Google 工程师的大数据处理经验
2019-05-01
30分钟学会pyecharts数据可视化
2019-05-01
从一个骗子身上学到的
2019-05-01
关于Python爬虫,这里有一条高效的学习路径
2019-05-01
Python学习指南,看这篇清晰多了!
2019-05-01