`
to_zoe_yang
  • 浏览: 142360 次
  • 性别: Icon_minigender_2
  • 来自: 01
社区版块
存档分类
最新评论

寻找丢失的数字

 
阅读更多

据传说是MS/Google等等IT名企业的面试题:

有一组数字,从1到n,中减少了一个数,顺序也被打乱,放在一个n-1的数组里

请找出丢失的数字,最好能有程序,最好算法比较快

 

假如有1,2,3,···,10十个数字,并且少了5,那么遍历数组求和得到50,在遍历的过程中得知最大数字为10,那么如果不少5,全部数字和为55,则缺少的数字为55-50=5

如果少了10,那么遍历数组得到的和为45,最大数字为9,和依然为45,45-45=0,则丢失的数字为9+1=10

 

或者就是申请n-1个空间,遍历标记!

 

import java.util.Arrays;
import java.util.Random;


public class FindLostNumber {

	public static int findLostNumber(int[] Data){
		int sum = 0;
		int max = 0;
		int total = 0;
		for(int i=0; i<Data.length; i++){
			if(Data[i]>max){
				max = Data[i];
			}
			sum += Data[i];
		}
		total=(max*(max+1))/2;
		int lost = total-sum;
		if(lost>0){
			return lost; 
		}else{
			return max+1;
		}
	}
	
	public static void main(String[] args){
		Random random = new Random();
		int lost = random.nextInt(4999)+1;
		System.out.println("I lost "+lost);
		int[] elements = new int[5001];
		
		//第一种方法
		int index = 0;
		for(int i=1; i<=5000; i++){
			if(i==lost){
				continue;
			}
			elements[index++] = i;
		}
		int find = findLostNumber(elements);
		System.out.println("I find you lose "+find);

		//第二种方法
		boolean[] mark = new boolean[5001];
		Arrays.fill(mark, false);
		for(int i=0; i<elements.length; i++){
			mark[elements[i]] = true;
		}
		for(int i=1; i<mark.length; i++){
			if(!mark[i]){
				System.out.println("You lost "+i);
			}
		}
		
	}
}

 

分享到:
评论

相关推荐

    数据恢复专用,找回遗失

    "找回遗失"意味着该服务或工具能够处理各种类型的数据丢失情况,包括误操作、系统崩溃等。 描述中的“数据恢复,轻松搞定”强调了这个过程的简便性,意味着用户无需具备高级的IT技能也能进行操作。"把丢失数据的...

    1-n中缺失2个数字,O(n)时间内找出它们

    标签 "Find two lost number O(n)" 明确指出了这个问题的关键在于寻找丢失的两个数字,并且要求在O(n)的时间复杂度内完成。这提醒我们在设计算法时,必须关注时间效率,避免不必要的复杂度。 在压缩包文件...

    找到所有数组中消失的数字(桶排序+索引映射遍历)1

    标题中的“找到所有数组中消失的数字(桶排序+索引映射遍历)1”指的是一种在整型数组中寻找丢失数字的算法。数组的特性是元素值在1到n之间,其中n是数组的大小,部分元素出现了两次,部分只出现一次。目标是找出...

    找回丢失的文件

    本文将详细介绍如何使用名为"FinddDta"的工具来快速找回丢失的文件,无论它们是因为被格式化还是误删除。 首先,我们需要理解文件是如何在硬盘上存储的。计算机硬盘上的每个文件都有一个特定的文件分配表(FAT)或...

    数字通信中的信号处理(英文)

    因此,对于研究人员和工程师来说,重新审视这些理论并寻找更优化的解决方案至关重要。未来的研究应该更加注重理论与实践之间的联系,以及如何利用现代信号处理技术来改进现有模型,从而实现更高性能的数字通信系统。

    丢失文件找回(文件恢复工具)

    本文将详细阐述“丢失文件找回”这一知识点,以及如何利用文件恢复工具来解决这类问题。 首先,我们要理解文件丢失的常见原因。误删除是最常见的原因之一,用户可能在清理硬盘空间时不小心将重要文件移入回收站并...

    数字图像处理matlab09试卷A卷及答案.pdf

    无损压缩能够完全恢复原始数据,而有损压缩则会在压缩过程中丢失部分信息。 3. 图像旋转公式:将图像逆时针旋转β角度的矩阵表示为F' = R(β) * F,其中R(β)是旋转矩阵,F是原图像的傅里叶变换。 4. 图像增强评价...

    《数字信号处理教程》习题解答(第二版)

    这可能是一个遗失了扩展名的文件,内容可能与《数字信号处理教程》的习题解答有关,或者是补充材料,如课堂讲义、实验指导或其他相关资料。 通过这个压缩包,学生不仅可以获得《数字信号处理教程》的习题答案,还能...

    KNN实现手写数字的识别(源码+数据)

    **K-最近邻算法(K-Nearest Neighbors,KNN)**是一种简单而有效的非参数监督学习方法,它通过寻找训练集中与新样本最接近的K个邻居来决定新样本的类别。在手写数字识别问题中,每个样本是手写数字的图像,我们利用...

    Word2021中如何将阿拉伯数字转换成大写数字?.docx

    在这种情况下,你可能需要手动输入大写数字或者寻找其他方法来完成转换。 通过以上步骤,你可以轻松地在Word2021中将阿拉伯数字转换为大写数字,从而增加文档的正式感和安全性。这种功能特别适合处理财务数据、合同...

    现在数字信号处理答案(姚天任)

    《现在数字信号处理答案(姚天任)》是一份珍贵的学习资源,主要针对ADSP2000级的课程提供习题解答。这份资料对于正在学习...因此,对于寻找《现在数字信号处理答案(姚天任)》的人来说,这份资源无疑是宝贵的财富。

    自己的密码丢失了可以找回

    "找回丢失的密码"是解决这一问题的重要步骤,对于确保我们的数字生活正常运作至关重要。 QQ是一款由腾讯公司推出的即时通讯软件,广泛应用于社交、工作和其他在线交流。如果用户不小心忘记了QQ密码,腾讯提供了一套...

    交通运输行业2021年中期投资策略:寻找数字供应链赛道的投资机会.zip

    2. 实时追踪:GPS和物联网技术让货物位置随时可见,提升货物安全,降低丢失风险。 3. 预测性维护:利用数据分析预测设备故障,提前进行维修,避免停机损失。 4. 自动化仓库:机器人和自动化系统提升仓储效率,减少...

    数字图像处理实验报告

    如果图像直方图集中在某一亮度区域,图像可能会显得过于暗或亮,导致细节丢失。直方图均衡化通过改变像素值的分布,使得图像的亮度层次更加丰富,从而增强整体视觉效果。这个过程涉及到对图像像素值的重新映射,确保...

    数字钱包安全技术概述.pdf

    私钥必须妥善保管,因为一旦丢失或被盗,数字资产将无法找回。数字钱包通常有多种类型,包括在线钱包、本地钱包和离线钱包。 - **在线钱包**:私钥由服务提供商托管,用户通过登录验证访问,如Blockchain.info。 - ...

    支持向量机手写体数字识别系统

    - **线性归一化**:对图像进行简单的比例缩放,适用于数学处理简单但可能丢失部分形状信息的情况。 - **非线性归一化**:更为复杂的处理方式,能够更好地保留字符形状结构,但计算成本较高。 - **特征提取** - **...

    丢失数据快速恢复软件

    "丢失数据快速恢复软件"是针对这种问题的解决方案,旨在帮助用户迅速找回意外丢失的数据。这类软件通过深度扫描硬盘或其他存储设备,寻找并恢复已被删除或因各种原因无法访问的文件。 数据丢失的原因多种多样,包括...

    微博账号丢失了怎么办?新浪微博账号找回的两个方法.docx

    在这个方法中,我们需要注意的是,我们的微博好友需要是我们互相信任的朋友,因为他们需要帮助我们找回账号。如果我们不熟悉自己的微博好友,或者他们不愿意帮助我们,那么这个方法可能不适用。 三、微博账号找回的...

Global site tag (gtag.js) - Google Analytics