📣 VIP通行证夏日特惠 限时立减$68
楼主: bearcat001
跳转到指定楼层
上一主题 下一主题
收起左侧

10.6 Facebook 电面

🔗
 楼主| bearcat001 2016-10-9 06:43:18 | 只看该作者
全局:
forestwn 发表于 2016-10-9 06:37
这题C++怎么解 感觉现在只用了2个变量是用了语言特性…

我记得C++ iterator可以被保存下来,这样你可以不存value,存特定位置iterator,然后iterator可以判断是否为null,或者直接*it取值
回复

使用道具 举报

🔗
leixiang5 2016-10-9 10:49:26 | 只看该作者
全局:
都做了两题表现还是不好呀? 要求好高~
回复

使用道具 举报

🔗
iPhD 2016-10-13 09:53:33 | 只看该作者
全局:
  1. <p>class SortedIterator {</p><p>
  2. </p><p><span class="Apple-tab-span" style="white-space:pre">        </span>Iterator itrA;</p><p><span class="Apple-tab-span" style="white-space:pre">        </span>Iterator itrB;</p><p><span class="Apple-tab-span" style="white-space:pre">        </span>Integer prevA;</p><p><span class="Apple-tab-span" style="white-space:pre">        </span>Integer prevB;</p><p>
  3. </p><p>    public SortedIterator(Iterator a, Iterator b) {</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>itrA = a;</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>itrB = b;</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>prevA = null;</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>prevB = null;</p><p>    }</p><p>
  4. </p><p>    public boolean hasNext() {</p><p>        return itrA.hasNext() || itrB.hasNext();</p><p>    }</p><p>
  5. </p><p>    public int next() {</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>if (!hasNext()) return -1;</p><p>
  6. </p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>if (prevA == null && itrA.hasNext()) {</p><p>    <span class="Apple-tab-span" style="white-space:pre">                </span>prevA = itrA.next();</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>}</p><p>
  7. </p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>if (prevB == null && itrB.hasNext()) {</p><p>    <span class="Apple-tab-span" style="white-space:pre">                </span>prevB = itrB.next();</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>}</p><p>
  8. </p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>if (prevA == null) return prevB;</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>if (prevB == null) return prevA;</p><p>
  9. </p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>int min = 0;</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>if (prevA < prevB) {</p><p>            min = prevA;</p><p>
  10. </p><p>            if (itrA.hasNext()) {</p><p>            <span class="Apple-tab-span" style="white-space:pre">        </span>prevA = itrA.next();</p><p>            } else {</p><p>            <span class="Apple-tab-span" style="white-space:pre">        </span>prevA = null;</p><p>            }</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>} else {</p><p>    <span class="Apple-tab-span" style="white-space:pre">                </span>min = prevB;</p><p>
  11. </p><p>            if (itrB.hasNext()) {</p><p>            <span class="Apple-tab-span" style="white-space:pre">        </span>prevB = itrB.next();</p><p>            } else {</p><p>            <span class="Apple-tab-span" style="white-space:pre">        </span>prevB = null;</p><p>            }</p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>}</p><p>
  12. </p><p>    <span class="Apple-tab-span" style="white-space:pre">        </span>return min;</p><p>    }</p><p>
  13. </p><p>}</p>
复制代码
大家帮忙看下这样行吗?
回复

使用道具 举报

🔗
iPhD 2016-10-13 09:54:25 | 只看该作者
全局:
iPhD 发表于 2016-10-13 09:53
大家帮忙看下这样行吗?

class SortedIterator {

        Iterator itrA;
        Iterator itrB;
        Integer prevA;
        Integer prevB;

    public SortedIterator(Iterator a, Iterator b) {
            itrA = a;
            itrB = b;
            prevA = null;
            prevB = null;
    }

    public boolean hasNext() {
        return itrA.hasNext() || itrB.hasNext();
    }

    public int next() {
            if (!hasNext()) return -1;

            if (prevA == null && itrA.hasNext()) {
                    prevA = itrA.next();
            }

            if (prevB == null && itrB.hasNext()) {
                    prevB = itrB.next();
            }

            if (prevA == null) return prevB;
            if (prevB == null) return prevA;

            int min = 0;
            if (prevA < prevB) {
            min = prevA;

            if (itrA.hasNext()) {
                    prevA = itrA.next();
            } else {
                    prevA = null;
            }
            } else {
                    min = prevB;

            if (itrB.hasNext()) {
                    prevB = itrB.next();
            } else {
                    prevB = null;
            }
            }

            return min;
    }

}
回复

使用道具 举报

🔗
Matcha 2016-10-20 23:14:31 | 只看该作者
全局:
iPhD 发表于 2016-10-13 09:54
class SortedIterator {

        Iterator itrA;

if (!hasNext()) return -1;
要是你prevA prevB里有数值,但是两个iterator里是空了的话,这句话就有问题了吧?
回复

使用道具 举报

🔗
iPhD 2016-10-20 23:18:43 | 只看该作者
全局:
Matcha 发表于 2016-10-20 23:14
if (!hasNext()) return -1;
要是你prevA prevB里有数值,但是两个iterator里是空了的话,这句话就有问 ...

对,后来发现有bug了,多谢提醒
回复

使用道具 举报

🔗
RedAlice 2016-10-21 01:53:23 | 只看该作者
全局:
为什么你们出结果都好快……为何面试人告诉我要等一周……………………
回复

使用道具 举报

🔗
glad2mu 2016-10-21 02:14:15 | 只看该作者
全局:
bearcat001 发表于 2016-10-9 06:43
我记得C++ iterator可以被保存下来,这样你可以不存value,存特定位置iterator,然后iterator可以判断是 ...

C++ Iterator 可以用判断是不是null来决定结束么?  

补充内容 (2016-10-21 02:19):
不好意思 没打完。 我看到的Iterator都是在判断是不是 XXX.end() 来结束。没见过用NULL比较的.
我刚才在ide测了一下,用NULL会报错, end() 可以。
不知道有没有大神解释一下, 我觉得C++只有两个iterator没法停止
回复

使用道具 举报

🔗
RedAlice 2016-10-21 03:01:03 | 只看该作者
全局:
glad2mu 发表于 2016-10-21 02:14
C++ Iterator 可以用判断是不是null来决定结束么?  

补充内容 (2016-10-21 02:19):

C++的迭代器存的是内存地址 可以一直不停加下去 越界除非导致段错误 否则你只会得到出乎预料的值

然后如果在迭代过程中对vector有增删的话就不要用迭代器
回复

使用道具 举报

🔗
glad2mu 2016-10-21 05:51:15 | 只看该作者
全局:
RedAlice 发表于 2016-10-21 03:01
C++的迭代器存的是内存地址 可以一直不停加下去 越界除非导致段错误 否则你只会得到出乎预料的值

然后 ...

可以简单解释一下这道题 如果用c++的iterator, 如果判断短的vector已经遍历结束?
回复

使用道具 举报

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

本版积分规则

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