楼主: hercule24
跳转到指定楼层
上一主题 下一主题
收起左侧

Qumulo Phone Interview

🔗
丢丢棠线 2016-2-17 04:45:26 | 只看该作者
全局:
hercule24 发表于 2016-2-17 02:49
应该是 IntersectionIterator (Iterator i1,Iretator i2) {
}
这样子的吧,这样子就是实现一个类了

多谢楼主! 那个请问能给个邮箱么 我觉得我写的还是感觉有点问题 能跟你交流一下么 马上就要电面了 有点捉急!谢谢!!
回复

使用道具 举报

🔗
JamesJi 2016-2-17 04:59:58 | 只看该作者
全局:
感觉题目很常规啊
回复

使用道具 举报

🔗
丢丢棠线 2016-2-17 05:03:56 | 只看该作者
全局:
JamesJi 发表于 2016-2-17 04:59
感觉题目很常规啊

唔 。。。那么 可否指导一下 iterator 那个。。。
irisleaving@gmail.com

跪谢!
回复

使用道具 举报

🔗
JamesJi 2016-2-17 05:06:38 | 只看该作者
全局:
丢丢棠线 发表于 2016-2-16 16:03
唔 。。。那么 可否指导一下 iterator 那个。。。

楼主不是说了做法了吗
回复

使用道具 举报

🔗
hotinherre 2016-2-17 13:15:39 | 只看该作者
全局:
qumulo 好喜欢问两个list找相同呀, 你们怎么都那么喜欢map...  我看到另外一个帖子小哥做的找string也是上来就map..
回复

使用道具 举报

🔗
hotinherre 2016-2-17 13:49:19 | 只看该作者
全局:
  1. public class IntersectionIterator{
  2.         int nextNum;   // record the number of the next iterator
  3.         boolean callHasNext; // check if call hasNext function before calling next function
  4.         Iterator itr1;
  5.         Iterator itr2;
  6.        
  7.         public IntersectionIterator(Iterator itr1, Iterator itr2){
  8.                 this.itr1 = itr1;  //Iterator itr = list.Iterator();
  9.                 this.itr2 = itr2;
  10.         }

  11.         // check if hasNext, and update the nextNum
  12.         public boolean hasNext(){
  13.                 if(!itr1.hasNext() || !itr2.hasNext()) return false;
  14.                 int num1 = itr1.next();
  15.                 int num2 = itr2.next();
  16.                 // keep move two iterator, until two numers are same or one of the iterator doesn't have next number.
  17.                 while(true){
  18.                         if(num1 == num2){
  19.                                 nextNum = num1;
  20.                                 return true;
  21.                         }
  22.                         // move the iterator of the smaller number forward
  23.                         else if(num1 < num2){
  24.                                 if(!itr1.hasNext()) return false;
  25.                                 num1 = itr1.next();
  26.                         }
  27.                         else{
  28.                                 if(!itr2.hasNext()) return false;
  29.                                 num2 = itr2.next();
  30.                         }
  31.                 }
  32.         }

  33.         public int next(){
  34.                 if(!callHasNext){
  35.                         // if user call next funtion but no more intersection number
  36.                         if(!hasNext()){
  37.                                 System.out.println("No more intersection number!");
  38.                                 return Integer.MIN_VALUE;
  39.                         }
  40.                         else{
  41.                                 callHasNext = false; //reset the callHasNext
  42.                                 return nextNum;
  43.                         }
  44.                 }
  45.                 else{
  46.                         callHasNext = false; // reset
  47.                         return nextNum;
  48.                 }
  49.         }
  50. }
复制代码
Iterator 的代码我写了一下, 大家看看对不对

回复

使用道具 举报

🔗
aifer 2016-2-22 06:41:50 | 只看该作者
全局:
hotinherre 发表于 2016-2-17 13:49
Iterator 的代码我写了一下, 大家看看对不对

你的这个有Bug吧。如果连续调用hasNext()函数的话,而不调用next(),你的写法会刷新nextNum的值。
比如楼主的例子。调用两次hasNext()之后,在next() 你这个返回的就是8不是1了。而且你的callHasNext变量也没有设置过true??
回复

使用道具 举报

🔗
aifer 2016-2-22 06:49:33 | 只看该作者
全局:
给一个我写的例子吧。
  1. public class IntersectionIterator implements Iterator<Integer>{

  2.         private Iterator<Integer> iter1;
  3.         private Iterator<Integer> iter2;
  4.         private Integer item;        // cache the number appeared in both lists
  5.        
  6.         public IntersectionIterator(Iterator<Integer> a, Iterator<Integer> b){
  7.                 iter1 = a;
  8.                 iter2 = b;
  9.                 item = null;
  10.                 cacheNext();
  11.         }

  12.         @Override
  13.         public boolean hasNext() {
  14.                 return item != null;
  15.         }

  16.         @Override
  17.         public Integer next() {
  18.                 Integer cur = item;
  19.                 item = null;
  20.                 cacheNext();
  21.                 return cur;
  22.         }
  23.        
  24.         /*
  25.          * cache number appeared in both lists.
  26.          */
  27.         private void cacheNext(){
  28.                 if(iter1.hasNext() && iter2.hasNext()){
  29.                         Integer x = iter1.next();
  30.                         Integer y = iter2.next();
  31.                         while(x!= null && y != null && x != y) {
  32.                                 if(x < y && iter1.hasNext()) x = iter1.next();
  33.                                 else if(x < y) x = null;
  34.                                 else if(x > y && iter2.hasNext()) y = iter2.next();
  35.                                 else if( x> y) y = null;
  36.                         }
  37.                         // find the first repeated number and cache it.
  38.                         if(x != null && y != null && x.equals(y)) item = x;
  39.                 }
  40.         }
  41. }
复制代码
回复

使用道具 举报

全局:
谢唐神!马上面qumulo
回复

使用道具 举报

🔗
benjaminxu 2016-2-24 03:04:26 | 只看该作者
全局:
shiloh00 发表于 2016-2-23 13:18
谢唐神!马上面qumulo

can 姐加油啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表