美文网首页
601. 摊平二维向量

601. 摊平二维向量

作者: 6默默Welsh | 来源:发表于2018-01-17 10:51 被阅读17次

描述

设计一个迭代器来实现摊平二维向量的功能

样例

给一个二维向量
[ [1,2], [3], [4,5,6] ]
通过重复调用,直到hasNext返回false,下一个返回的元素的顺序应该是:[1,2,3,4,5,6]

代码

public class Vector2D implements Iterator<Integer> {
    Stack<List<Integer>> stack = new Stack<>();
    Stack<Integer> stackj;
    
    void pushListListToStack(List<List<Integer>> vec2d) {
    Stack<List<Integer>> temp = new Stack<>();
        for (List<Integer> nested : vec2d) {
            temp.push(nested);
        }
        
        while (!temp.isEmpty()) {
            stack.push(temp.pop());
        }
    }
    
    void pushListToStack(List<Integer> vec) {
    Stack<Integer> temp = new Stack<>();
        for (Integer nested : vec) {
            temp.push(nested);
        }
        
        while (!temp.isEmpty()) {
            stackj.push(temp.pop());
        }
    }
    
    public Vector2D(List<List<Integer>> vec2d) {
        pushListListToStack(vec2d);
        // Initialize your data structure here
        stackj = new Stack<>();
    }

    public Integer next() {
        // Write your code here
        if(!hasNext()) {
            return null;
        }
        return stackj.pop();
    }

    public boolean hasNext() { // 准备下一个元素
        // Write your code here
        while (stackj.isEmpty() && !stack.isEmpty())
            pushListToStack(stack.pop());
        return !stackj.isEmpty();
    }
    
    public void remove() {}
}
public class Vector2D implements Iterator<Integer> {

    private Iterator<List<Integer>> i;
    private Iterator<Integer> j;

    public Vector2D(List<List<Integer>> vec2d) {
        // Initialize your data structure here
        i = vec2d.iterator();
        j = null;
    }

    @Override
    public Integer next() {
        // Write your code here
        hasNext();
        return j.next();
    }

    @Override
    public boolean hasNext() {
        // Write your code here
        while ((j == null || !j.hasNext()) && i.hasNext())
            j = i.next().iterator();
        return j != null && j.hasNext();
    }

    @Override
    public void remove() {}
}

/**
 * Your Vector2D object will be instantiated and called as such:
 * Vector2D i = new Vector2D(vec2d);
 * while (i.hasNext()) v[f()] = i.next();
 */

相关文章

  • 601. 摊平二维向量

    描述 设计一个迭代器来实现摊平二维向量的功能 样例 给一个二维向量[ [1,2], [3], [4,5,6] ]通...

  • 摊平二维向量 flatten-2d-vector

    设计一个迭代器来实现摊平二维向量的功能 flatten-2d-vector 样例 例1: 例2: 源码地址 htt...

  • LeetCode-251-展开二维向量

    LeetCode-251-展开二维向量 251 展开二维向量 题目描述:请设计并实现一个能够展开二维向量的迭代器。...

  • Unity shader基础学习(三) ------ 数学基础

    本系列文章是学习siki学院Unity Shader入门(Unity2018.3)笔记 一.二维向量 二维向量运算...

  • 线性代数之——向量简介

    1. 二维向量 在二维平面中,一个二维向量可以用一个箭头来表示,这个箭头起始于原点,终点坐标 分别为向量中的两个...

  • 摊平

    开始整理父亲所有东西,我和母亲分工,她负责衣物被褥,我负责写字台和书柜的东西。 先看了一下,父亲的东西...

  • 向量的长度和单位长度_线性代数_day5

    向量的长度 向量的长度又叫向量的模,使用双竖线来包裹向量表示向量的长度 下面是二维向量中取模的算法,使用勾股定理即...

  • 使用python来实现向量的基本运算操作

    向量的长度 向量的长度又叫向量的模,使用双竖线来包裹向量表示向量的长度 下面是二维向量中取模的算法,使用勾股定理即...

  • MIT 线性代数 15 子空间投影

    二维空间的投影推导 问题描述:对于二维平面而言,想要计算从向量 到向量 的投影 ,其中可以看出 , ,( 是我们需...

  • numpy中的行向量和列向量

    在numpy中,用二维矩阵而不是一维矩阵来表示行向量和列向量: 行向量的形状:(n, 1) 列向量的形状:(1, ...

网友评论

      本文标题:601. 摊平二维向量

      本文链接:https://www.haomeiwen.com/subject/rrhkixtx.html