欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

丢失的三个数 (Java实现)

程序员文章站 2024-03-16 17:32:22
...

现在有一个数组,其值为从1到10000的连续增长的数字。出于某次偶然操作,导致这个数组中丢失了某三个元素,同时顺序被打乱,现在需要你用最快的方法找出丢失的这三个元素,并且将这三个元素根据从小到大重新拼接为一个新数字,计算其除以7的余数。 例:丢失的元素为336,10,8435,得到的新数字为103368435,除以七的余数为2。

乱序数组输入版本:


import java.util.ArrayList;
import java.util.Scanner;

public class ThreeNumbersLost {
	public static void main(String[] args) {

		Scanner inScanner = new Scanner(System.in);
		String s = inScanner.nextLine();//一行字符串,中有空格隔开每个数
		String[] numbers = s.split(" ");//去掉每个空格
		int[] inumbers = new int[numbers.length];//新建一个数组 长度为原字符串数组长度
		for (int i = 0; i < numbers.length; i++) {//把每个字符串转型成int类型装入新的字符串
			inumbers[i] = Integer.parseInt(numbers[i]);

		}
		out(inumbers);
	}

	public static void out(int[] in) {
		int all = 10001;
		int[] is = new int[all];// 被赋值的对比数组
		int[] orderIn = bubbleSort(in);//对输入的乱序 int型数组 排序

		ArrayList iList = new ArrayList(3);//装3个损失数
		
		for (int i = 0; i < in.length; i++) {
			
			is[orderIn[i]] = 1;//把遗漏的数组 中的每个数字作为新数组下标 赋值为1

		}
		is[0]=1;//第一个默认为1
		for (int i = 0; i < is.length; i++) {//循环判断数组中未赋值为1的就是遗漏数据
			if (is[i] == 0) {
				iList.add(i);//把遗漏的数据加入动态数组
			}
		}
	
		String link = "" + iList.get(0) + iList.get(1) + iList.get(2);//拼接3个数字
		System.out.println(Long.parseLong(link)%7);//余7后输出
	}

	public static int[] bubbleSort(int[] a) {
		int temp;
		for (int i = a.length - 1; i > 0; --i) {
			for (int j = 0; j < i; ++j) {
				if (a[j + 1] < a[j]) {
					temp = a[j];
					a[j] = a[j + 1];
					a[j + 1] = temp;
				}
			}
		}
		return a;
	}
}

整型单个输入

import java.util.ArrayList;
import java.util.Scanner;

public class ThreeNumbersLost {
	public static void main(String[] args) {
		Scanner inScanner = new Scanner(System.in);
		int[] is = new int[10001];// 被赋值的对比数组
		ArrayList iList = new ArrayList(3);//装3个损失数
		for (int i = 0; i < 9997; i++) {
			is[inScanner.nextInt()] = 1;//把遗漏的数组 中的每个数字作为新数组下标 赋值为1
		}
		is[0]=1;//第一个默认为1
		for (int i = 0; i < is.length; i++) {//循环判断数组中未赋值为1的就是遗漏数据
			if (is[i] == 0) {
				iList.add(i);//把遗漏的数据加入动态数组
			}
		}
		String link = "" + iList.get(0) + iList.get(1) + iList.get(2);//拼接3个数字
		System.out.println(Long.parseLong(link)%7);//余7后输出
	}
}