华为OJ平台——整形数组合并
题目描述:
将两个整型数组按照升序合并,并且过滤掉重复数组元素
输入:
输入说明,按下列顺序输入:
1 输入第一个数组的个数
2 输入第一个数组的数值
3 输入第二个数组的个数
4 输入第二个数组的数值
输出:
输出合并之后的数组
输入样例:
3 1 2 5 4 -1 0 3 2
输出样例:
-101235
思路:
先将两个数组合并到一个中,然后对这个完整的数组进行排序,最后剔除重复的数据并输出
import java.util.Scanner;
public class ArrayMerge {
public static void main(String[] args) {
//输入,按输入的标准输入两个数组的数据
Scanner cin = new Scanner(System.in) ;
int len1 = cin.nextInt() ;
if(len1 < 1){
System.exit(-1);
}
int [] arr1 = new int [len1] ;
for(int i = 0 ; i < len1 ; i++){
arr1[i] = cin.nextInt() ;
}
int len2 = cin.nextInt() ;
if(len2 < 1){
System.exit(-1);
}
int [] arr2 = new int [len2] ;
for(int i = 0 ; i < len2 ; i++){
arr2[i] = cin.nextInt() ;
}
cin.close() ;
System.out.print(intArrayMergeASC(arr1,arr2)) ;
}
/**
* 进行合并,然后将输出结果存放到一个字符串中返回
* @param arr1
* @param arr2
* @return
*/
private static String intArrayMergeASC(int[] arr1, int[] arr2) {
//将两个数组合并到一个较大的数组中
int [] total = new int [arr1.length + arr2.length] ;
for(int i = 0 ; i < arr1.length ; i++){
total[i] = arr1[i] ;
}
for(int i = 0 ; i < arr2.length ; i++){
total[i+arr1.length] = arr2[i] ;
}
//对合并后的数组排序
sort(total) ;
//保存在结果在字符串中
String res = total[0]+"" ;
int last = total[0] ;
for(int i = 1 ; i < total.length ; i++){
//不相同的则添加到字符串中,相同的则直接下一个
if(total[i] != last){
last = total[i] ;
res += total[i] + "" ;
}
}
return res;
}
/**
* 简单选择排序算法对数组进行排序
* @param arr
*/
private static void sort(int[] arr) {
int min ;
int index ;
for(int i = 0 ; i < arr.length-1 ; i++){
min = arr[i] ;
index = i ;
for(int j = i+1 ; j < arr.length ; j++){
if(min > arr[j]){
min = arr[j] ;
index = j ;
}
}
if(index != i){
arr[index] = arr[i] ;
arr[i] = min ;
}
}
}
}
Code
华为OJ平台——整形数组合并的更多相关文章
- 华为OJ平台试题 ——数组:整形数组合并
代码: /* * 将两个整型数组依照升序合并,而且过滤掉反复数组元素 */ #include <stdio.h> #define N 256 #define M 512 /* * 合并数组 ...
- 华为OJ平台试题 —— 数组:输入n个整数,输出当中最小的k个
输入n个整数.输出当中最小的k个: 代码: /* * 输入n个整数,输出当中最小的k个. * 输入说明:1.输入两个整数:2.输入一个整数数组 * 输出说明:输出一个整数数组 */ <p ...
- 华为OJ平台——字符串分隔
题目描述: 连续输入字符串,请按长度为8拆分每个字符创 后输出到新的字符串数组: 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 输入 连续输入字符串(输入两次,每个字符长长度小于100)输 ...
- 华为OJ平台——输出最小的k个数
输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int *pInputArray, unsignedint ...
- 华为OJ平台——矩阵乘法
题目描述: 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C. 输入: 1.第一个矩阵的行数 2.第一个矩阵的列数(也是第二个矩阵的行数) 3.第二个矩阵 ...
- 华为OJ平台——密码强度等级
题目描述: 密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分. 一.密码长度: 5 分: 小于等于4 个字符 10 分: 5 到7 字符 25 分: 大于等于8 个字符 二.字母: 0 ...
- 华为OJ平台——求最大连续bit数
题目描述: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1 输入: 一个byte型的数字 输出: 对应的二进制数字中1的最大连续数 思路: ...
- 华为OJ平台——统计字符串中的大写字母
题目描述: 统计字符串中的大写字母的个数 输入: 一行字符串 输出: 字符串中大写字母的个数(当空串时输出0) 思路: 这一题很简单,直接判断字符串中的每一个字符即可,唯一要注意的一点是输入的字符串可 ...
- 华为OJ平台——将真分数分解为埃及分数
题目描述: 分子为1的分数称为埃及分数.现输入一个真分数(分子比分母小的分数,叫做真分数),请将该分数分解为埃及分数.如:8/11 = 1/2+1/5+1/55+1/110. 输入: 输入一个真分数, ...
随机推荐
- u-boot启动流程分析(1)_平台相关部分
转自:http://www.wowotech.net/u-boot/boot_flow_1.html 1. 前言 本文将结合u-boot的“board—>machine—>arch—> ...
- [linux basic基础]----套接字
套接字是一种通信机制,凭借这种机制client/server系统的开发者既可以在本地机器上进行,也可以跨网络进行. 1,服务器应用程序用系统调用socket来创建一个套接字,他是系统分配给服务器进程的 ...
- 华人曾与IBM抗衡! 盘点已远去的IT巨头(转)
[PConline资讯 ]从算盘到计算器,从大型机到个人PC,再到当今火热的移动终端和云计算,人类计算史已经走过了千年之久,现代IT计算领域也经过了百年浮沉.在世界工业领域,IT技术应该是诞生时间最短 ...
- 推荐一个css帮助手册的版本 同时提供chm和在线
版本保持更新 目录分类妥当 查阅很方便 就是习惯了jquery那种风格,略有不适应. 包括最新css3的内容 网址: http://css.doyoe.com/ chm下载地址: http://css ...
- [CSS]去除inline-block元素间距的几种方法
当我们使用inline-block 时,会出现空白间距问题. 但这些间距对我们的布局,或兼容性产生影响,我们需要去除它,该怎么办?下面简单介绍几种方法: 1.去掉html元素之间的空格,直接写在一行. ...
- js方法收藏
1.验证非负数字 //onfocusout="checkQty(this);" function checkQty(obj) { //排除0开头的非法输入 if (obj.valu ...
- jQuery部分源码帮助理解
(function(window){})(window) 为什么要传window给jquery当参数呢? 1.为了压缩有 引用 2.加速变量的寻找,当找window对象的时候,默认从本级开始寻找,一级 ...
- Guava 10-散列
概述 Java内建的散列码[hash code]概念被限制为32位,并且没有分离散列算法和它们所作用的数据,因此很难用备选算法进行替换.此外,使用Java内建方法实现的散列码通常是劣质的,部分是因为它 ...
- android之location02
package com.example.mars_3300_location02; import java.net.ContentHandler; import java.util.List; imp ...
- jQuery formValidator表单验证插件常见问题
1. 如何实现一个控件,根据不同的情况,实现不同的控制? 2. 一个页面上我有几个tab页,如何实现每个Tab页上的控件单独校验? 3. 我采用的页面上文字问题的方式,点提交的时候, ...