今天面试给出的一个很简单的面试题

bananaplan 2011-06-28 07:20:05
今天去软通面试,过程很不理想,我想我不在状态吧。
快结束的时候,面试官出了一道面试题,很简单。完事他出去了,过了大约5到10分钟的样子,就回来了,我还只写了1/3,主要前面花了1、2分钟考虑有木有捷径可走,或更好的方法。最后他让我说一下思路,我就很简单很简单的说了下,就是说的很苍白,我想他也不满意吧。
下面是那个题目,各位大侠不知有木有什么另辟蹊径的捷径解法?

题目是这样的:给出一个字符串,如“1,2,1,3,4,2,5”,要求去除重复数字并且按从大到小排序。没骗你,很简单吧,大侠们啥思路?
...全文
117 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
healer_kx 2011-06-28
  • 打赏
  • 举报
回复
面试中,并非都是技术面试,其实题目中也可能暗含沟通问题。


比如说,面试官可能会怪你,为什么不问问我,为什么是String,而不是int数组呢。
【我曾经去某公司面试的时候,就吃亏了。】
bananaplan 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 alexandertech 的回复:]
应该是考你算法
我觉得效率最高就是用冒泡排序,其中比较相邻元素时,如果相等就直接删掉。
排序,去冗余同时完成
[/Quote]
赞一个,这才是我期盼的最终答案,我想也是面试官期盼的答案,可是,我那笨笨的思路,太糟糕了,很让他失望呀,我2各月没写代码了,真的不在状态,话说,即使在状态,我也不一定能这么短时间想到这方法。还是自己现在的头脑不太敏锐了吧,不在状态呀。要努力呀,同志哥。。。
healer_kx 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 happysmhzp 的回复:]

引用 1 楼 healer_kx 的回复:
如果是Java,他可能是考你用TreeSet呢,如果是C++,那就不一样了。


支持一下
[/Quote]

因为它给的不是 一个 int[], 而是以 逗号分隔的 字符串,你肯定得用 split(',')了.

然后呢,要比较大小,还得把String => int

然后才是考察 所谓的算法。。

如果真的是考算法,不如直接给出来 int[] 了。。。

我估计是考核以下几个知识点:
split(regexp)
Comparable接口。
TreeSet
happysmhzp 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]
如果是Java,他可能是考你用TreeSet呢,如果是C++,那就不一样了。
[/Quote]

支持一下
bananaplan 2011-06-28
  • 打赏
  • 举报
回复
我的思路是这样的

String str = "1,2,1,3,4,2,5";
String[] num= str.split(",");
// 从第一个数字去判断下面是否有和它重复的,把后面重复的都置为null
for(int i == 0; i < num.length; i++)
{
// 如果为null,说明原先该位置的数字和前面的重复,忽略掉它
if(num[i] == null)
{
continue;
}
else
{
for(int j = i + 1; j < num.length; j++)
{
if(Integer.parseInt(num[i]) == Integer.parseInt(num[j]))
{
num[j] = null;
}
}
}

//下面开始冒泡排序了

}
飞跃颠峰 2011-06-28
  • 打赏
  • 举报
回复
应该是考你算法
我觉得效率最高就是用冒泡排序,其中比较相邻元素时,如果相等就直接删掉。
排序,去冗余同时完成
healer_kx 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bananaplan 的回复:]

wokao,一个个的都这么高级,看来我做J2ME做惯了,总想着用低级方法
[/Quote]

好习惯。
bananaplan 2011-06-28
  • 打赏
  • 举报
回复
wokao,一个个的都这么高级,看来我做J2ME做惯了,总想着用低级方法
gutaocslg 2011-06-28
  • 打赏
  • 举报
回复
import java.util.Arrays;
import java.util.Collection;
import java.util.TreeSet;

楼主看看满足你的要求吗?
public class Test1 {

public static void main(String[] args)
{
Collection<Integer> s = new TreeSet<Integer>(Arrays.asList(1,2,1,3,4,2,5));
System.out.print(s);
}
}
tom_66 2011-06-28
  • 打赏
  • 举报
回复
set里面好像有这样的方法吧。网上曾经看到一个面试题,就是将一个数组添加到一个set中,然后添加的会自动去掉重复的。这里面可以将一个数组添加到一个空的set中应该就能得到你要的结果吧。你查下api吧,我也没用过
bananaplan 2011-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]

如果是Java,他可能是考你用TreeSet呢,如果是C++,那就不一样了。
[/Quote]
我想他还是想考我算法
healer_kx 2011-06-28
  • 打赏
  • 举报
回复
如果是Java,他可能是考你用TreeSet呢,如果是C++,那就不一样了。

62,614

社区成员

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

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