华为OJ平台——整形数组合并

题目描述:

  将两个整型数组按照升序合并,并且过滤掉重复数组元素

输入:

  输入说明,按下列顺序输入:
    1 输入第一个数组的个数
    2 输入第一个数组的数值
    3 输入第二个数组的个数
    4 输入第二个数组的数值

输出:

  输出合并之后的数组

输入样例:

  3 1 2 5 4 -1 0 3 2

输出样例:

  -101235

思路:

先将两个数组合并到一个中,然后对这个完整的数组进行排序,最后剔除重复的数据并输出

 1 import java.util.Scanner;
 2
 3 public class ArrayMerge {
 4
 5     public static void main(String[] args) {
 6         //输入,按输入的标准输入两个数组的数据
 7         Scanner cin = new Scanner(System.in) ;
 8         int len1 = cin.nextInt() ;
 9         if(len1 < 1){
10             System.exit(-1);
11         }
12         int [] arr1 = new int [len1] ;
13         for(int i = 0 ; i < len1 ; i++){
14             arr1[i] = cin.nextInt() ;
15         }
16         int len2 = cin.nextInt() ;
17         if(len2 < 1){
18             System.exit(-1);
19         }
20         int [] arr2 = new int [len2] ;
21         for(int i = 0 ; i < len2 ; i++){
22             arr2[i] = cin.nextInt() ;
23         }
24         cin.close() ;
25
26         System.out.print(intArrayMergeASC(arr1,arr2)) ;
27     }
28
29     /**
30      * 进行合并,然后将输出结果存放到一个字符串中返回
31      * @param arr1
32      * @param arr2
33      * @return
34      */
35     private static String intArrayMergeASC(int[] arr1, int[] arr2) {
36         //将两个数组合并到一个较大的数组中
37         int [] total = new int [arr1.length + arr2.length] ;
38         for(int i = 0 ; i < arr1.length ; i++){
39             total[i] = arr1[i] ;
40         }
41         for(int i = 0 ; i < arr2.length ; i++){
42             total[i+arr1.length] = arr2[i] ;
43         }
44         //对合并后的数组排序
45         sort(total) ;
46         //保存在结果在字符串中
47         String res = total[0]+"" ;
48         int last = total[0] ;
49         for(int i = 1 ; i < total.length ; i++){
50             //不相同的则添加到字符串中,相同的则直接下一个
51             if(total[i] != last){
52                 last = total[i] ;
53                 res += total[i] + "" ;
54             }
55         }
56
57         return res;
58
59     }
60
61     /**
62      * 简单选择排序算法对数组进行排序
63      * @param arr
64      */
65     private static void sort(int[] arr) {
66         int min ;
67         int index ;
68         for(int i = 0 ; i < arr.length-1 ; i++){
69             min = arr[i] ;
70             index = i ;
71             for(int j = i+1 ; j < arr.length ; j++){
72                 if(min > arr[j]){
73                     min = arr[j] ;
74                     index = j ;
75                 }
76             }
77             if(index != i){
78                 arr[index] = arr[i] ;
79                 arr[i] = min ;
80             }
81         }
82     }
83
84 }

Code

时间: 2024-08-05 23:40:30

华为OJ平台——整形数组合并的相关文章

华为測试 整形数组合并

合并输入的两个整形数组并去掉反复的数字按升序输出: 案例输入:3 1 2 5 4 -1 0 3 2 案例输出:-101 #include<iostream> #include<vector> using namespace std; void maopao(vector<int>&arry); int main() { int N1,N2,num; string line; vector<int>arry1; cin>>N1; for(i

华为OJ平台试题 —— 数组:字符串反转

字符串反转 代码: /* * 接受一个字符串,然后输出该字符串反转后的字符串. */ #include <stdio.h> #include <string.h> /* * 字符串反转函数 */ char *revstr(char *str, int len) { char *start = str; char *end = str + len - 1; char ch; if (str != NULL) { while (start < end) { ch = *start

华为测试 整形数组合并

合并输入的两个整形数组并去掉重复的数字按升序输出: 案例输入:3 1 2 5 4 -1 0 3 2 案例输出:-101 #include<iostream> #include<vector> using namespace std; void maopao(vector<int>&arry); int main() { int N1,N2,num; string line; vector<int>arry1; cin>>N1; for(i

华为OJ平台——字符串分隔

题目描述: 连续输入字符串,请按长度为8拆分每个字符创 后输出到新的字符串数组: 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 输入 连续输入字符串(输入两次,每个字符长长度小于100)输出 输出到长度为8,的新字符串数组样例输入 abc 123456789样例输出 abc00000 12345678 90000000 思路: 都是直接处理,没有具体的方法而言 注意点: 华为的OJ平台的输入输出有点坑,好多次的程序都在这里出问题,在Eclipse上运行的结果没问题,然后在OJ上就是编

华为OJ平台——矩阵乘法

题目描述: 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C. 输入: 1.第一个矩阵的行数 2.第一个矩阵的列数(也是第二个矩阵的行数) 3.第二个矩阵的列数 4.第一个矩阵的值 5.第二个矩阵的值 输出: 输出两个矩阵相乘的结果 样例输入 2 2 2 3 8 8 0 9 0 18 9 样例输出 171 72 72 0 思路: 题目意思很简单,只是实现两个矩阵乘法功能,要注意的一点是输出的格式. OJ平台中对输出的格式非常严格,经过多次尝试,验证此

华为OJ平台试题 ——字符串:输出数组中重复的数组

<pre name="code" class="cpp">/* * 题目:输出数组中重复出现的数组(0-9) * * 输入:输入一串数字,中间以逗号隔开,如3,2,2,3,5,6,7,8,9 * 输出:输出数组中重复出现的数字(数字间以空格隔开),输出顺序按原数组中的先后顺序,输出3,2 */ #include<stdio.h> #include<string.h> #define N 256 /* * 定义一个结构体:数字和数字

华为OJ平台试题 —— 字符串:名字的漂亮度

<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">1.名字的漂亮度</span> 代码: <pre name="code" class="cpp"> #include<stdio.h> /* * 对数组a 进行排序 */ voi

华为机试—整形数组异集

求两个整型数组的异集,即A+B-(A与B的交集). 例如a[]={1,2,3,4,5}, b[]={2,3},则a,b的异集为{1,4,5}. #include<iostream> #include<string> using namespace std; int main(int argc,char *argv[]) { int ma,mb; cout << "请输入数组a的长度:"; cin>>ma; cout << &q

【华为OJ平台练习题】

/* 描述: 输入整型数组和排序标识,对其元素按照升序或降序进行排序 接口说明 原型: void sortIntegerArray(Integer[] pIntegerArray, int iSortFlag); 输入参数: Integer[] pIntegerArray:整型数组 int iSortFlag:排序标识:0表示按升序,1表示按降序 输出参数: 无 返回值: void 输入 1.输入需要输入的整型数个数 2.输入数组组 3.输入排序标识 输出 输出排好序的数字 最后一个无空格 如下