创新工厂 笔试

lya046 2009-10-21 10:37:17
创新工厂的笔试题目,大家一起来讨论一下。
1、把输入的字符串转置。比如输入“I love YOU too ”,则输出“too YOU love I”。
2,输入一个整数,计算出比该整数大的最小的质数。
3,输入一个数组,生成一个二叉排序树。
...全文
1609 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
tntsuifeng 2009-10-26
  • 打赏
  • 举报
回复
学习下了
Sodino 2009-10-26
  • 打赏
  • 举报
回复
学习了
zjhzyzc 2009-10-26
  • 打赏
  • 举报
回复
感觉第二题还是打表比较快


private static int biggerPrime(int num){
int count = 0;
int[] tag = new int[2*num];
int[] p = new int[num];

for(int i=0; i<tag.length; i++){
tag[i] = 0;
}

for(int i=2; i<2*num; i++){
if(tag[i] == 0){
if(i > num) return i;
p[count++] = i;
}
for(int j=0; (j < count && i*p[j] < 2*num && (p[j] <= tag[i] || tag[i] == 0)); j++)
tag[i*p[j]]=p[j];
}
return -1;
}
sforiz 2009-10-25
  • 打赏
  • 举报
回复
顶一下、、、
haojia0716 2009-10-25
  • 打赏
  • 举报
回复
第一题

public static void function(String s) {
String[] s1 = s.split("\\s");
String s2 = "";
for (int i = s1.length - 1; i >= 0; i--) {
s2 += s1[i] + " ";
}
s2 = s2.substring(0, s2.length() - 1);
System.out.println(s2);
}

public static void main(String[] args) {
String s = "I love YOU too";
function(s);
}
acRush7 2009-10-25
  • 打赏
  • 举报
回复
第一题如何处理空格?用比较简单的方式
Agile牧 2009-10-25
  • 打赏
  • 举报
回复
学习了
舷Kelvin 2009-10-25
  • 打赏
  • 举报
回复
这次我参加的百度商务搜索部面试第一题和这个第一题一样
acRush7 2009-10-25
  • 打赏
  • 举报
回复
rookie001的图像 >.<
sunyimaying1 2009-10-25
  • 打赏
  • 举报
回复
晚了 先mark一下 明天再想想
haojia0716 2009-10-24
  • 打赏
  • 举报
回复
回楼上 这里break和return其实一样的 因为只有一层循环而且while后面没有语句了
循环里用return从语法上来说是没完全没有问题的 有很多递归算法都有这种写法啊

如果说排序效率的话 我想平均说来还是快速排序最好 如果数据量很小可以选择插入排序
xylia123 2009-10-24
  • 打赏
  • 举报
回复
这个题其实就是对数组元素的排序呢,比起诸如冒泡、选择、插入等排序方法效率怎么样呢?


还有 return 能否改成break,循环里用return 不太好吧,效果应该是一样的,跳出循环后,这个方法就结束,自然也就return了;
rookie001 2009-10-24
  • 打赏
  • 举报
回复
之前李开复来我们学校做宣讲时说过创新工场面试不强调
算法,google则强调算法,看来果真如此,题目蛮简单的
xylia123 2009-10-24
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 haojia0716 的回复:]
重新发过
Java codepublicclass T {publicstaticvoid main(String[] args) {int[] data= {8,1,7,8,5,6,4,8,9,3,0,2 };
TreeNode t=new TreeNode(data[0]);for (int i=1; i< data.length; i++) {
t.insert(data[i]);
}
t.print();
}
}class TreeNode {
TreeNode left, right;int value;public TreeNode(int value) {this.value= value;
}publicvoid insert(int value) {
TreeNode root=this;
TreeNode node=new TreeNode(value);while (true) {if (root.value> value) {if (root.left==null) {
root.left= node;return;
}
root= root.left;
}else {if (root.right==null) {
root.right= node;return;
}
root= root.right;
}
}
}publicvoid print() {if (left!=null) {
left.print();
}
System.out.println(value+"");if (right!=null) {
right.print();
}
}
}
[/Quote]

学习了!
zhuzeitou 2009-10-21
  • 打赏
  • 举报
回复
public boolean isPrime(int n) {
if (n < 0)
return isPrime(-n);
if (n <= 1)
return false;
if (n == 2)
return true;
int sqrt = (int) Math.sqrt(n);
for (int i = 2; i <= sqrt; i++)
if (n % i == 0)
return false;
return true;
}

public int getMinPrime(int n) {
while (!isPrime(++n));
return n;
}


这个是我的第二题
JackCF1 2009-10-21
  • 打赏
  • 举报
回复
郁闷我,我数据结构学的不是很好,就在这乱写啦!
zhouyongyang 2009-10-21
  • 打赏
  • 举报
回复
上面的printMinNumber() 方法中在打出n之后要return 不然是个死循环了
zhouyongyang 2009-10-21
  • 打赏
  • 举报
回复
第二题:
int m 输入的那个整数
int n ;比m大的最小质数

public void printMinNumber()
{
for(int i = m + 1;;m++)
{
if(check(m))
{
n = m;
System.out.print("比M大的最小质数n为:" + n);
}
}
}
public boolean check(int number)
{
for(int i = 2; i <= number / 2; i++)
{
if(number % i == 0)
{
return true;
}
}
return false;
}
haojia0716 2009-10-21
  • 打赏
  • 举报
回复
我想了想 应该把我写的类Tree的名字改成TreeNode
zhouyongyang 2009-10-21
  • 打赏
  • 举报
回复
1、把输入的字符串转置。比如输入“I love YOU too ”,则输出“too YOU love I”。
:把这个字符串压入栈,然后打出来就可以了(先进后出的原理)
加载更多回复(18)

62,614

社区成员

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

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