《美团编程题》丢失的三个数

本文介绍了一种快速算法,用于寻找一个被扰乱并缺失三个数字的1至10000连续数组中的丢失数字,并计算这些数字按升序排列后所得新数字除以7的余数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

输入描述:
输入数据为一行,包含9997个数字,空格隔开。

输出描述:
输出为一行,包含一个数字。

示例1
输入

同题设例子输入
输出

2

解析:首先来个排序,然后开始找那三个数了,找到了继续排序,然后拼接,最后记得%7得结果。

import java.util.*;
public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String s= scanner.nextLine();
            String [] str=s.split(" ");
            int [] arr= new int[str.length];
            for(int i=0;i<str.length;i++){//输入的当行字符串转为整数
                arr[i]=Integer.parseInt(str[i]);
            }
            Arrays.sort(arr);//排序
            List<Integer> list = new ArrayList<>();//存储三个数
            for(int i=0;i<arr.length;i++){
                for(int j=i+1;j<arr.length;i++){
                    if(arr[j]==arr[i]+2){//找到了丢失的数,保存
                        list.add(arr[i]+1);
                    }else {
                        break;
                    }
                }
            }
            Collections.sort(list);//丢失的数排序
            StringBuilder sb = new StringBuilder();
            for(Integer i:list){
                sb.append(i);
            }
            System.out.println(Long.parseLong(sb.toString())%7);
        }
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值