• 251. Flatten 2D Vector 平铺二维矩阵


    Design and implement an iterator to flatten a 2d vector. It should support the following operations: next and hasNext.

     

    Example:Vector2D iterator = new Vector2D([[1,2],[3],[4]]);

    iterator.next(); // return 1
    iterator.next(); // return 2
    iterator.next(); // return 3
    iterator.hasNext(); // return true
    iterator.hasNext(); // return true
    iterator.next(); // return 4
    iterator.hasNext(); // return false

    思路:
    不懂为啥要用两个iter,只有一个不行吗?

    这样就没有实现2D变1D的过程,所以需要有两个iter。但是判断、取出下一个元素都是根据colIter来的

    colIter = Arrays.stream(rowIter.next()).iterator();

    等于null是真没了,和hashNext是两个概念

    class Vector2D {
        //声明就行了
        private Iterator<int[]> rowIter;
        private Iterator<Integer> colIter;
    
        public Vector2D(int[][] v) {
            rowIter = Arrays.stream(v).iterator();
            if(rowIter.hasNext())
                colIter = Arrays.stream(rowIter.next()).iterator();
        }
        
        //返回colIter的下一个
        public int next() {
            if(!colIter.hasNext()) return -1;
            return colIter.next();
        }
        
        //判断colIter是否有下一个元素
        public boolean hasNext() {
            //等于null是真没了,和hashNext是两个概念
            if(colIter == null)
                return false;
            
            while(!colIter.hasNext() && rowIter.hasNext())
                colIter = Arrays.stream(rowIter.next()).iterator();
            
            return colIter.hasNext();
        }
    }
    View Code
  • 相关阅读:
    Linux下修改oracle的SID
    Linux下卸载Oracle 11g
    eclipse中spring开发环境的配置
    在VMWare上安装Arch Linux
    Junit单元测试
    leaflet获取arcgis服务图层所有信息
    IE浏览器下AJAX缓存问题导致数据不更新的解决办法
    js对url进行编码和解码
    DOM对象和JQuery对象
    typeof()
  • 原文地址:https://www.cnblogs.com/immiao0319/p/13654880.html
Copyright © 2020-2023  润新知