题解 | #整型数组合并#
整型数组合并
https://www.nowcoder.com/practice/c4f11ea2c886429faf91decfaf6a310b
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String a, b; int[] arr1, arr2; try { a = in.readLine(); b = in.readLine(); arr1 = parse(a, b);//获取第一个数组的值 a = in.readLine(); b = in.readLine(); arr2 = parse(a, b);//获取第二个数组的值 } catch (IOException e) { throw new RuntimeException(e); } int i = 0, j, len1 = arr1.length, len2 = arr2.length, lenTotal, temp; int[] arrTotal = new int[len1 + len2];//初始化合并后的数组 lenTotal = removeRep(arr1, arrTotal, 0);//数据放入大数组 lenTotal = removeRep(arr2, arrTotal, lenTotal);//数据放入大数组 for (; i < lenTotal - 1; i++) {//冒泡排序 j = 0; while (j < lenTotal - i - 1) { if (arrTotal[j] > arrTotal[j + 1]) { temp = arrTotal[j]; arrTotal[j] = arrTotal[j + 1]; arrTotal[j + 1] = temp; } j++; } } i = 0; a = ""; while (i < lenTotal) { a += arrTotal[i]; i++; } System.out.println(a); } private static int[] parse(String string, String num) { char[] charAy = string.toCharArray(); int i = 0, j = 0, n = 0, l = charAy.length; boolean negative = false; while (i < l) { n *= 10; n += charAy[i] - '0'; i++; } int[] numAy = new int[n]; n = 0; charAy = num.toCharArray(); l = charAy.length; i = 0; while (i < l) { if (charAy[i] == ' ') { if (negative) numAy[j++] = -n;//负数置为负 else numAy[j++] = n; negative = false; n = 0; } else if (charAy[i] == '-') { negative = true; } else { n *= 10; n += charAy[i] - '0'; } if (i == l - 1) { if (negative) numAy[j] = n; else numAy[j] = n; } i++; } return numAy; } public static int removeRep(int[] arrSl, int[] arrBg, int len) { int i = 0, j, l = arrSl.length; boolean addInto; for (; i < l; i++) { j = 0; addInto = true;//初始情况为存入 while (j < len) {//数组长度在变化 if (arrSl[i] == arrBg[j]) {//大数组元素和第二个数组的元素重复,不放入 addInto = false; break; } j++; } if (addInto) arrBg[len++] = arrSl[i]; } return len; } }