跳至主要内容

L家面试题 iterator for nested integer求


http://www.mitbbs.com//article_t/JobHunting/32921023.html

发信人: yuxrose (鱼香肉丝), 信区: JobHunting
标  题: L家面试题 iterator for nested integer求讨论
发信站: BBS 未名空间站 (Sun Mar 29 14:22:37 2015, 美东)

L家最爱考的面试题之一就是nested integer了,
还爱考各种iterator的implementation
这题是把两个最爱合在一起了。。。。感觉很有可能出,但网上没找到满意的答案.

题目是这样的
eg: {{1,2},3,{4,{5,6}}}
不断调用iterator的next()返回的序列是 1 2 3 4 5 6

这个data structure的interface是这样的
public interface Data<T> {
    // Does this Data hold a collection?
    public boolean isCollection();
    // Returns the collection contained by this Data, or null if it is a
single element
    public Collection<Data<T>> getCollection();
    // Returns the single element contained by this Data, or null if it is a
collection
    public T getElement();
}

我的思路把iterator放在一个stack里,有点像Preorder traversal,如果是element就
存进一个暂时的variable store里,call next的时候就return这个,如果是
isCollection的话,就再push stack里。但我对什么时候pop有点糊涂,其实我很怕用
generic type写东西,特别抽象,只好自己脑补成一个list

下面是我的solution,还请大家给点建议

public class iterator_nestedmap<T>{
    private Stack<Iterator<Data<T>>> stack;
    private T store;
    public iterator_nestedmap(Collection<Data<T>> collection){
        stack = new Stack<Iterator<Data<T>>>();
        stack.push(collection.iterator());
    }
   
    public boolean hasNext(){
        if(store != null){
            return true;
        }
        while(!stack.isEmpty()){
            Iterator<Data<T>> iter = stack.peek();
            if(!iter.hasNext()){
                stack.pop();
                continue;
            }
            Data<T> element = iter.next();
            if(element.isCollection()){
                Collection<Data<T>> col = element.getCollection();
                stack.push(col.iterator());
            }
            else{
                store = element.getElement();
                return true;
            }
        }
        return false;
    }
   
    public T next(){
        T result = null;
        if(hasNext() || store != null){
            result = store;
            store = null;
            return result;
        }
        return null;
    }
}

--
我用奔跑告诉你,我不回头
※ 修改:·yuxrose 於 Mar 29 14:23:21 2015 修改本文·[FROM: 76.]

评论

此博客中的热门博文

记者探访H&M实体店,店员:我们也爱国,希望明天就关门

http://www.mitbbs.com/article_t/ChinaNews/32684337.html 发信人: jiuna (), 信区: ChinaNews 标  题: 记者探访H&M实体店,店员:我们也爱国,希望明天就关门 发信站: BBS 未名空间站 (Thu Mar 25 02:55:55 2021, 美东) 3月25日中午,《环球时报》记者走访了北京市三里屯核心商区,探访新疆棉事件对H&M 及Nike等品牌实体店的影响。记者发现,在整整占据了三层的北京最大的H&M店之一的 店铺内,顾客稀少,门可罗雀,一些路人进店挑选后也选择不购买其产品即离开。 "看到了H&M和Nike的声明之后,近期不会再购买他们的产品了。既然想在中国做生意 ,还侮辱中国人,那中国人肯定不会支持,"一位路人在接受《环球时报》采访时表示 。"抵制他们的产品对我们并不会产生什么影响,因为替代产品有很多。国内很多品牌 都有很好的设计和质量,大多数时间也都在网上逛淘宝,样式和质量都比H&M好很多, "一位姓赵的北京居民表示。 在接受采访时,一些路人表示,除非H&M展现出道歉的诚意,否则将来也不会再选择这 个品牌。 位于上海某繁华商业街的一家HM店,今天门口有保安值守,店员十分警戒,不让记者拍 摄。两名店员对《环球时报》记者表示他们也希望明天就关店,也不希望发生这样的事 情,他们也是爱国的,但他们只是店员,希望得到记者理解。 王先生是一位在上海南京西路附近上班的打工族,由于听到关于HM的消息,他特地在午 休时间来HM店面转转。王先生告诉记者,"作为一家大公司应该吸取经验教训,在中国 做生意,想赚中国人的钱,就更应该尊重中国人民的感情。" 王先生告诉记者,中国老百姓应该拿出一点实际行动,给这些国外公司一些警告以及反 馈信息。王先生说希望这个事件能给更多的类似企业传递更多的信息,中国人民欢迎外 企来做生意,但是前提一定是秉持公平公正的原则,尊重中国人民的感情。 -- ...

贡献一个485的详细清单,希望对大家有帮助

http://www.mitbbs.com/article_t/Immigration/33151393.html 发信人: gsu (niuer), 信区: Immigration 标  题: 贡献一个485的详细清单,希望对大家有帮助! 发信站: BBS 未名空间站 (Sat Jan 18 12:06:21 2014, 美东) 我们是一家三口,小孩小于14岁,签证都是从J1-waiver-H1B or H4, 希望对和我一样 情况的递交485时有所帮助,在必要时根据自己的情况调整。 主申请人: January 18, 2014 USCIS Texas Service Center 4141 North St. Augustine Road Dallas, TX 75227 Re:  Form I-485, Application to Adjust Status          Form I-765, Application for Employment Authorization          Form I-131, Application for Advance Parole        Applicant: **** (Primary Applicant) Dear Immigration Officer: I am filing Application to Adjust Status based on my approval for Form I-140 under classification 203(b)(1)(A) with receipt number **** My current status is H1B. Enclosed please for filing in the above referenced matter the followin...

分享一下在ICC工作的经验,以及contractor行业的注意事项。

http://www.mitbbs.com/article_t/JobHunting/33509585.html 发信人: poyang (), 信区: JobHunting 标  题: 分享一下在ICC工作的经验,以及contractor行业的注意事项。 发信站: BBS 未名空间站 (Fri May 22 02:28:24 2020, 美东) 最近由于疫情很多new grad同学没法上岸,很多一线大厂更是lay off出来一批大神, new grad的简历在hr眼里更是没法看了。所以很多同学都在考虑去ICC苟住身份,楼主 作为一个在icc工作了一年多的人,写下这篇帖子介绍一下ICC里的一些情况,希望在这 个非常时期帮助到各位还在找工作的同学。 1. 什么是ICC,ICC运作模式是怎么样的? ICC是India Consulting Company 的简称主要从事科技软件行业的外包业务。现在信息 时代每个行业都要像数字化方面转型,特别是大型企业。但除了一些大型科技公司,需 要大量稳定的Full time SDE。市场上大部分的传统行业包括医疗,金融, 通信,零售 等行业也需要大量技术支持和销售业务转型,所以也需要大量的码农。但为了维持公司 (client)的灵活性,所以只招收contractor(合同工). 这样可以简化招聘流程,不需要 承担contractor的身份问题,也可以随时进行人员精简,比如现在项目结束client可以 随时开除目前的合同工并且不给任何补助,也不需要给合同工任何福利。 一般来说Client公司不能直接到市场上招contractor,需要通过第三方公司(vendor) 来 招聘合同工,vendor手上握有大量client的招聘资源,但是手上不一定有很多 candidate 来应聘这些岗位。所以就会把资源放给别的公司(比如ICC)来收取一定的 提成。正常情况下大部分的公司都会给合同工$60~$90 一小时的rate, 但会被vendor抽 掉一部分,再被icc抽掉一部分,你能拿到手可能就只剩下$40~$70一小时。这个抽成具 体取决于icc和vend...