2015华为机试—— 整型数排序

要求:请实现对一整型数序列的排序操作。

需求:

1、对输入的整型数序列A,完成升序排列,将结果序列从B中输出。以整数值大小为关键字排序,即小数在前,大数在后。

2、当序列中存在多个同样大小的数时,输出序列中仅保留一个。

举例:

输入序列A:76,92,34,34,59,16,59,45

符合要求的输出序列B:16,34,45,59,76,92

约束:

1、输入的序列至少含有一个整型数,否则应该返回null;

2、输入序列中的整数值使用int类型;

  • 接口说明

/*****************************************************************************

Description : 实现整数排序,即先将从A输入的整型数序列进行排序,剔除重复整型数,输出得到的升序序列B;

Input       : array_A                 输入参数,输入待排序整型数序列A

Return      : 排序后的整型数序列

*****************************************************************************/

public static int[] sort(int []array_A)

{

return null;

}

解题思路:先进行排序,然后使用HashMap进行去重。

代码如下:

public class paixu
{

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		int[] a={76,92,34,34,59,16,59,45};
		sort(a);
	}

	public static int[] sort(int []array_A)
	{
		int count=0;
	    if(array_A==null)
	    {
	    	return null;
	    }
	    int len=array_A.length;
	    for (int i = len-1; i >0; i--)
		{
			for (int j = 0; j < i; j++)
			{
				if (array_A[j]>array_A[j+1])
				{
					int temp=array_A[j];
					array_A[j]=array_A[j+1];
					array_A[j+1]=temp;
				}
			}
		}
	    Map<Integer,Integer> hm=new HashMap<Integer,Integer>();
	    for (int i = 0; i < len; i++)
		{
			if (!hm.containsValue(array_A[i]))
			{
				hm.put(count, array_A[i]);
				count++;
			}
		}
	    int[] output=new int[count];
	    for (int i = 0; i < count; i++)
		{
			output[i]=hm.get(i);
		}
	    return output;

	}	

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 04:18:36

2015华为机试—— 整型数排序的相关文章

华为机试—整型数组中出现次数最多的元素

取出整型数组中出现次数最多的元素,并按照升序排列返回. 要求实现方法: public static int[] calcTimes(int[] num, int len); [输入] num:整型数组: len :输入的整数个数 [返回] 按照升序排列返回整型数组中出现次数最多的元素 [注意]只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:num = {1,1,3,4,4,4,9,9,9,10} len = 10 返回:{4,9} #include <iostream>

2015华为机试—— 输入整型数组和排序标识,对其元素按照升序或降序进行排序

接口说明 原型: void sortIntegerArray(Integer[] pIntegerArray, int iSortFlag); 输入参数: Integer[] pIntegerArray:整型数组 int  iSortFlag:排序标识:0表示按升序,1表示按降序 输出参数: 无 返回值: void 这题比较简单,也没什么思路好说,直接看代码 代码如下: public final class Demo { // 功能:输入整型数组,对其元素按照升序或降序进行排序 // 输入:pI

华为机试—差值排序

对整形数组按照和指定整数的差值大小进行排序,按照差值升序排列返回. 要求实现方法: public staticint[] calcTimes(int[] num, int value); [输入] num:整型数组: value 指定的整数 [返回] 按照升序返回整型数组,排序按照各个整数和指定整数的差值大小 [注意]只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:num = {1,2,3,4,5,10,17,18,19}  value = 5 返回:{5,4,3,2,1,

2015华为机试

第一题(60分): 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ,"123456789",则输出为"abc00000","12345678","90000000" #include<iostream> using namespace std; void solve(char *str , int n , in

华为机试—字符串去重排序

输入一个字符串,去掉重复出现的字符,并把剩余的字符串排序输出. #include<iostream> #include<string> using namespace std; int main(int argc, char *argv[]) { string s; while(cin>>s) { for(int i=0;i<s.size();++i) for(int j=i+1;j<s.size();++j) { if(s[i]>s[j]) { ch

华为机试—提取数字排序

输入多个字符串,分别提取出里面的数字,排序输出所有的数字. #include<iostream> #include<cctype> #include<vector> #include<string> #include<algorithm> using namespace std; vector<int>vec; int main(int argc, char *argv[]) { int n; string s; while(cin&

2015华为机试——最高分是多少

题目描述: 老师想知道从某某同学到某某同学当中,分数最高的是多少. 现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 题目类别: 排序 难度: 初级 运行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 输入包含多组测试数据. 每组输入第一行是两个正整数N和M(0<N<=30000,0<M<5000),分表代表学生的数目和操作的数目. 学生ID编号从1编到N. 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩.

2015华为机试——小明的筷子

题目描述: 小明是个马大哈,某天他到超市买了若干双筷子(n<20)筷子的长度不尽相同,他把全部筷子都放在购物袋里面拿回家,路上不小心漏了一根 请你用程序帮他找出是漏掉的筷子是多长的. 输入:  剩下的筷子数组,如:1, 2, 3, 2, 1, 3, 2 返回值:漏掉的筷子长度,如上述输入返回:2(当输入的筷子数据异常时返回-1,如:找不到漏掉的筷子) 解题思路:使用HashMap对筷子的种类与数量进行键值对匹配存储,当出现重复筷子时,对应的筷子数量+1,然后遍历一次HashMap,获取筷子的数量

2015华为机试——计算两个正整数的最大公约数和最小公倍数

题目描述: 接口说明 原型: long getMaxDivisor(long lFirstInput, long lSecondInput); 输入参数: int first: 第一个整数; int second: 第二个整数; 返回值: 最大公约数 long getMinMultiple(long lFirstInput, long lSecondInput); 输入参数: int first: 第一个整数; int second: 第二个整数; 返回值: 最小公倍数 解题思路:使用辗转相除法