算法学习 - 用异或找出数组中缺失的整数
发布日期: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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Spring MVC 学习笔记 4《请求转发 与 重定向》
下一篇:Eclipse 警告 serialVersionUID

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月25日 17时07分21秒