都市建設JAVAコード
11624 ワード
問題の説明は、ある機密部門が何らかの手形を発行し、年末にすべて回収しなければならない.各手形には一意のID番号があります.年間全手形のID番号は連続していますが、IDの開始番号はランダムに選択されています. 係員の不注意により、ID番号の入力中にエラーが発生し、あるIDが切れ、もう一つのIDが重複した.あなたの任務はプログラミングを通じて、ブレーク番号のIDと重い番号のIDを見つけることです.最大サイズと最小サイズでは、ブレーク番号が発生しないと仮定します.入力フォーマット 要求プログラムは、まず、後のデータ行数を表す整数N(N<100)を入力する.次に、N行データを読み込む. 各行のデータ長は等しくなく、スペースで区切られた数個(100個未満)の正の整数(100000以下)です.行内と行末に余分なスペースがある可能性がありますので、プログラムはこれらのスペースを処理する必要があります.各整数はID番号を表します.出力フォーマットなお、mはブレーク番号IDを表し、nは、重番号IDサンプル入力1 2 5 6 8 11 9 10 12 9サンプル出力1 7 9サンプル入力2 6 164 178 108 109 180 155141 159 104 182179 118 137184 115 124 125 129 168 196 172 189 127 107 112 192 103 133 169 158 128 110 148 139 157 140 1957 185 152,106,123,173,136,174,145,151,143,175,175,120,161,162,190,149,142,146,126165 156 153 193 144 166 170 121 171 132 101 194 187 188 113 130 176 154 177 120 117 11150 114 183 186 181100 163 160 167 147 198 111 111サンプル出力2 105 120構想:まずソートし、それから比較して繰り返し、切断した値コードを探す:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
int duan = 0;
int chong = 0;
List<Integer> list = new ArrayList();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s1 = br.readLine();
int len = Integer.parseInt(s1);
for(int i = 0; i < len; i++)
{
String[] s2 = br.readLine().split(" ");
for(int j = 0; j < s2.length; j++)
{
list.add(Integer.parseInt(s2[j])); // ID list
}
}
//
for(int i = 0 ; i < list.size(); i++)
{
for(int j = 0; j < list.size(); j++)
{
int a = list.get(i);
int b = list.get(j);
int temp = 0;
if(a > b)
{
temp = a;
list.set(i, b);
list.set(j, temp);
}
}
}
for(int i = 0 ; i < list.size() - 1; i++)
{
int a = list.get(i);
int b = list.get(i + 1);
if(a == b)
chong = a;
if(b - a > 1)
duan = b -1;
}
System.out.println(duan + " " + chong);
}
}