丢失的三个数 (Java实现)

现在有一个数组,其值为从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后输出
	}
}

猜你喜欢

转载自blog.csdn.net/qq_29519041/article/details/81208660