面试题

baillluu 2011-09-30 05:32:38
用户随便输入一串数字!“12 18 9 28 4 21 2 5 38 37 。。。。。。”,然后用5*5的格式照以下方式输出!

示例1:
2 18 40 55 80
4 21 42 67 82
5 28 47 69 83
9 37 51 75 87
12 38 53 78 95
示例1:
3 21 43 58 79
6 24 46 62 82
8 29 47 65 87
11 39 51 69 89
12 41 56 74 92

这个题目的输出是有规律的。。
...全文
185 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
baillluu 2011-10-02
  • 打赏
  • 举报
回复
这次面试我失败了!
面试时,那个人问我的都是框架技术,ajax,jq,spring,hibernate等。我每个都说不知道!
然后面试的人说让我去坐一下,等他想到问我什么了再叫我去面试一次,等了一会儿,那个人叫我过去,说还是不知道问我什么好!然后,说你还是回去等通知吧,如果决定要你的话,就会给你电话,没有电话,就是不通过!
我没有接到通知,我给over了,很可懂啊,华为的外包公司!蛮好的外包公司,现在我是苦其心志,天天学框架,希望不晚。。。
baillluu 2011-10-02
  • 打赏
  • 举报
回复
谢谢,各位的回答,题目其实我面试的时候做出来了,我只是想看看,我做的是不是最简单的,最容易理解的!
可是各位只说了思路,偶很难懂啊!
我做的如下!
public static void main(String[] args)
{
int[] numbers=new int[args.length];
//将控制的输入的的字符串转型为整型放入numbers数组内
for(int i=0;i<numbers.length;i++)
{
numbers[i]=Integer.parseInt(args[i);
}
//现在排序(冒泡)
for(int i=numbers.length;i>0;i--)
{
for(int k=0;k<numbers.length-1;k++)
{
if(numbers[k]>numbers[k+1]}
{
numbers[k]=numbers[k]+numbers[k+1];
numbers[k+1]=numbers[k]-numbers[k+1];
numbers[k]=numbers[k]-numbers[k+1];
}
}
}
//然后按5*5的方式输出如下:
for(int i=0;i<5;i++)
{
for(int k=0;k<5;k++)
{
System.out.print(numbers[k*5+i]+"/t");
}
}
}
当然还要做一些要必要的检察情况,我这里是在正常情况下;不输入非法数子,或少于25个数子下!所以没做检察!
baillluu 2011-10-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhangxw205 的回复:]
先把题目说详细点, 输入的数最多是25个吗
[/Quote]
不是最多25个,是最少不少于25个,少于25个的话,就没法5*5输出了。是不是!~
sjlzcj 2011-10-01
  • 打赏
  • 举报
回复

import java.util.Random;
import java.util.Set;
import java.util.TreeSet;

public class Test {

public static void main(String[] args) {
/*输入部分
* 就用这个随机数代替了
* 生成100次随机数
* 不重复的怎么也超过25个了
* 除非你中了五百万
* 借组treeset直接产生25个有序的数字
*/
Set<Integer> si = new TreeSet<Integer>();
Random r = new Random();
for (int i = 0; i < 100; i++) {
si.add(r.nextInt(100));
}
int[] ints = new int[25];
Integer[] temp = new Integer[si.size()];
temp =si.toArray(temp);
for (int i = 1; i < ints.length; i++) {
ints[i] = (ints[i - 1] + 5)>24?ints[i - 1] - 19:ints[i - 1] + 5;
}
for (int i = 0; i < ints.length; i++) {
System.out.print(temp[ints[i]]+" ");
if ((i + 1) % 5 == 0) {
System.out.println();
}
}
}
}

  • 打赏
  • 举报
回复
import java.util.Arrays;
import java.util.Scanner;

public class Format_25 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
String str = input.nextLine();
String[] s = str.split("\\s");
int[] arr = new int[s.length];
if (s.length != 25) {
System.out.println("你输入的数不是25个!");
}
for (int i = 0; i < s.length; i++) {

arr[i] = Integer.parseInt(s[i]);
}
Arrays.sort(arr);
for (int i = 1; i <= 5; i++) {
for (int j = i; j <= 25; j += 5) {
System.out.print(arr[j - 1] + " ");
}
System.out.println();
}
}

}



1 3 6 5 3 4 8 9 7 2 5 10 32 20 65 56 95 97 86 51 30 12 42 10 13
1 5 9 20 56
2 5 10 30 65
3 6 10 32 86
3 7 12 42 95
4 8 13 51 97
一蚊惊人小号 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qqlwq123 的回复:]
引用 4 楼 k3108001263 的回复:
Java code


Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 50; i++)
treeSet.add(new Integer(scanner.nextInt()));
ArrayList<Integer> arrayList = new ArrayL……
[/Quote]
那可以用字符串来接受,然后根据空格来分隔,再转成int类型
一蚊惊人小号 2011-09-30
  • 打赏
  • 举报
回复
唉,一开始用copy,这个数忘改了
[Quote=引用 8 楼 junjian1989 的回复:]
规律就是:假设用数组arr来存这些数,然后从小到大进行排序,输出为:
arr[0] arr[5] arr[10] arr[15] ...
arr[1] arr[6] arr[11] arr[16] ...
arr[2] arr[7] arr[12] arr[17] ...
...
...
...
[/Quote]
qqlwq123 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 k3108001263 的回复:]
Java code


Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 50; i++)
treeSet.add(new Integer(scanner.nextInt()));
ArrayList<Integer> arrayList = new ArrayList<Intege……
[/Quote]
要求输入只能一次吧。
一蚊惊人小号 2011-09-30
  • 打赏
  • 举报
回复
规律就是:假设用数组arr来存这些数,然后从小到大进行排序,输出为:
arr[0] arr[5] arr[10] arr[0] ...
arr[1] arr[6] arr[11] arr[16] ...
arr[2] arr[7] arr[12] arr[17] ...
...
...
...
一蚊惊人小号 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 k3108001263 的回复:]
Java code


Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 50; i++)
treeSet.add(new Integer(scanner.nextInt()));
ArrayList<Integer> arrayList = new ArrayList<I……
[/Quote]
算法应该没问题,不过,treeSet哪里来的?
笃志近思 2011-09-30
  • 打赏
  • 举报
回复
Java code

Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 50; i++)
treeSet.add(new Integer(scanner.nextInt()));
ArrayList<Integer> arrayList = new ArrayList<Integer>(treeSet);
for (int i = 0; i < 5; i++) {
for (int j = i; j < 21 + i; j += 5)
System.out.print(arrayList.get(j) + " ");
System.out.println();
}


可以试试
伟明 2011-09-30
  • 打赏
  • 举报
回复
先把题目说详细点, 输入的数最多是25个吗
打油的程序员 2011-09-30
  • 打赏
  • 举报
回复



Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 50; i++)
treeSet.add(new Integer(scanner.nextInt()));
ArrayList<Integer> arrayList = new ArrayList<Integer>(treeSet);
for (int i = 0; i < 5; i++) {
for (int j = i; j < 21 + i; j += 5)
System.out.print(arrayList.get(j) + " ");
System.out.println();
}

打油的程序员 2011-09-30
  • 打赏
  • 举报
回复
那就插入排序吧
打油的程序员 2011-09-30
  • 打赏
  • 举报
回复
这个题来自哪个公司?
你有没有偷工减料呀,
你给出10个数。却蹦出50个数来。
要不看到你的80%以上结帖率.....
Mourinho 2011-09-30
  • 打赏
  • 举报
回复
先排序,然后纵向填入数组。

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧