`
thinkingzhu
  • 浏览: 3465 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

找出去掉的数字

    博客分类:
  • Java
 
阅读更多

 

题目:数组 A 中包含 n-1 [0,n-1] 内的不同整数, n 个数中只有一个数不在所给的数组中。

 

解法一: [0,n-1] 这个区间中所有整数的和不变,为 n*(n-1)/2 ,对数组 A 中的所有元素求和,设为 s ,则丢失的整数就是 n*(n-1)/2 s

 

解法二:异或运算。

异或是个非常神奇的运算。设所缺的整数为 k [0,n-1] 区间中所有 n 个数的异或结果为 s(n) ,异或运算满足交换率和结合率,所以 s(n) 可以被看作 [0,n-1] 中去掉 k 外的另外 n-1 个数的异或结果 s(n-1) k 的异或。也即: s(n)=s(n-1)^k ,我们给等式两边同时异或 s(n-1) ,等式变成了: s(n-1)^s(n)=s(n-1)^s(n-1)^k=k 。而且,很明显 s(n-1) 其实就是数组 A 中所有元素的异或。所以,解法二就是:求出 [0,n-1] 内所有整数的异或结果 s ,再求出数组 A 中所有元素的异或结果 t ,所缺的整数就是 s 异或 t

 

public class XorTest {
	public static void main(String[] args) {
		int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
		int[] b = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
		System.out.println(xorArray(a, b));
	}

	public static int xorArray(int[]... ias) {
		int result = 0;
		for (int i = 0; i < ias.length; i++) {
			result ^= xorArray(ias[i]);
		}
		return result;
	}

	public static int xorArray(int[] ia) {
		int result = 0;
		for (int i = 0; i < ia.length; i++) {
			result ^= ia[i];
		}
		return result;
	}
}

 

 

分享到:
评论

相关推荐

    删数问题给定n 位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个

    对于给定的n位正整数a 和正整数k,设计一个算法找出剩下数字组成的新数 最小的删数方案。 «编程任务: 对于给定的正整数a,编程计算删去k个数字后得到的最小数。 Input 由文件input.txt提供输入数据。文件的第1...

    数字图像处理去反光,去除图像局部反光,matlab

    2. **反光检测**:可以使用边缘检测算法(如Canny、Sobel或Prewitt)来初步识别高亮边缘,或者利用阈值分割方法找出亮度异常的区域。`SpecularDetectionCharlesAuguste2007.m`可能是一个实现反光检测的MATLAB脚本,...

    Matlab实现的阿拉伯数字识别程序代码

    4. 分割与归一化:使用 bwlabel 进行连通成分标记,找出单个数字,然后使用imresize进行尺寸归一化。 5. 训练分类器:可以选择SVM或者神经网络作为分类器,使用fitcecoc或feedforwardnet等函数进行模型训练。 6. ...

    手写数字识别matlab代码

    4. **模板匹配**:将提取的特征与预定义的数字模板进行匹配,找出最相似的模板,以此来识别数字。也可以使用其他特征匹配方法,如余弦相似度或欧氏距离。 5. **机器学习分类**:更现代的方法是使用机器学习算法,如...

    MATLAB数字验证码去除斑点带GUI界面源码.zip

    模板匹配是识别数字的一种方法,它涉及到找出预定义模板与图像中可能存在的相似区域。MATLAB的matchTemplate函数可以帮助我们进行模板匹配。我们首先需要创建一个干净的数字模板,然后将其与每个切割后的数字进行...

    数字图像处理数字图像处理(何东建)ppt2

    边缘检测,如Canny算法,能找出图像中的边界;角点检测,如Harris角点检测器,可以定位图像中的显著结构。这些特征对于图像识别、分类和匹配至关重要。 图像分割是将图像分成具有不同特性的区域,常用的方法有阈值...

    图片上的数字识别

    3. 数字模板匹配:在预处理和特征提取之后,可以使用模板匹配方法来比较图像中的数字部分与已知数字模板,找出最匹配的数字。这种方法简单但可能对图像变形不敏感。 4. 字符分割:在复杂背景下,数字可能与其他字符...

    数字图像处理第三版完整图片库 by Gonzalez and Woods (不包括绘制的图表)

    6. 边缘检测:Canny算法、Sobel算子、Prewitt算子等是常见的边缘检测方法,它们能找出图像中的边界,为后续的特征提取和形状识别提供基础。 7. 分割与区域生长:图像分割是将图像划分为多个具有不同特征的区域,如...

    python opencv实现信用卡的数字识别

    模板匹配是一种比较图像的局部区域与模板图像的方法,以找出最佳匹配。在信用卡数字识别中,我们可以预先定义一个数字模板,然后在信用卡数字上滑动并找到最相似的部分,从而识别出数字。 模板匹配在OpenCV中通过`...

    C++/OpenCV2.4.9 数字精确识别源码

    7. **轮廓检测与识别**:最后,我们需要找出图像中的数字轮廓,并进行识别。`findContours`函数用于检测图像的轮廓,然后使用诸如模板匹配或机器学习方法(如SVM、神经网络)对数字进行分类。 在提供的`testNumber`...

    中南大学数字图像处理实验报告

    边缘检测则是找出图像中目标物体轮廓的过程,常用算法有Canny边缘检测、Sobel算子等。这两个步骤对于识别和分析图像中的对象至关重要。 **实验四:数学形态学及其应用** 数学形态学是基于形状和结构的图像处理方法...

    数字图像处理C++源程序

    4. **最值**:在图像处理中,可能需要找出图像的最小值或最大值,这在全局对比度调整或寻找特定特征时很有用。C++可以方便地遍历图像数组,找到这些最值。 5. **离散余弦变换(DCT)**:DCT是一种信号处理技术,常...

    数字信号处理试卷,对于理解和领悟数字信号处理的内容有很好的帮助,数字信号处理是一门很难学的课程,希望这个对大家有帮助

    通过解答这些问题,学习者可以检验自己的理解程度,找出知识盲点,并进一步深化对数字信号处理理论和应用的理解。 总的来说,这份“数字信号处理试卷”是一个宝贵的资源,能够帮助学习者克服这门学科的挑战,提高...

    OpenCV+Python识别图片中的数字

    `Canny()`函数可以帮助我们找到图像中的边缘,而`findContours()`函数则可以查找这些边缘形成的封闭区域,这些可能就是我们要找的数字。 3. 形状分析和特征提取:对轮廓进行形状分析,比如计算其面积、周长、形状...

    数字信号处理课后习题答案和实验

    课后习题答案详细全面,能够帮助学生检查自己的理解程度,找出学习中的盲点。遇到困难时,可以参考答案解析,了解解题思路和方法。而实验部分的答案则能为学生提供正确的代码实现和步骤指南,避免在实验过程中迷失...

    opencv 数字识别

    它能找出图像中的边界,有助于突出数字轮廓。另一类方法是直方图均衡化,它能增强图像的对比度,使数字特征更加明显。 特征提取后,通常会进行形态学操作,如腐蚀和膨胀,以去除噪声并保留数字的基本形状。腐蚀可以...

    电子科技大学-830数字图像处理-多年真题和答案

    这个压缩包中的历年真题,可以帮助考生了解考试的出题趋势和重点,通过解答真题可以检验自己的学习效果,找出知识盲区。尤其是对于14、15、16年没有答案的题目,可以自行尝试解答后,参考其他年份的答案或请教专业...

    基于OPENCV的数字图像处理

    OpenCV集成了这些算法,可以方便地找出图像的边缘信息。 6. **轮廓检测**:在找到边缘后,轮廓检测能进一步提取出连续的边界。OpenCV的findContours和drawContours函数可以帮助我们提取和绘制图像中的轮廓,这对于...

    数字图像处理基础知识.pdf

    边缘检测算法如Sobel、Canny和Prewitt,用于找出图像中不同区域的边界。 在“左力”这个标签下,可能指的是作者或者编者的姓氏,暗示了该资源的作者。左力可能是这本关于数字图像处理书籍的作者或主要贡献者,他/她...

Global site tag (gtag.js) - Google Analytics