|  | @@ -24,30 +24,56 @@
 | 
	
		
			
				|  |  |   *     };
 | 
	
		
			
				|  |  |   * };
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Array.prototype.peek = function() {
 | 
	
		
			
				|  |  | +    return this[this.length - 1]
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @constructor
 | 
	
		
			
				|  |  |   * @param {NestedInteger[]} nestedList
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  var NestedIterator = function(nestedList) {
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -};
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +	this.st = [nestedList]
 | 
	
		
			
				|  |  | +	this.idx = [0]
 | 
	
		
			
				|  |  | +	this.findNext()
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @this NestedIterator
 | 
	
		
			
				|  |  |   * @returns {boolean}
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  NestedIterator.prototype.hasNext = function() {
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -};
 | 
	
		
			
				|  |  | +	return this.idx.length !== 0
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @this NestedIterator
 | 
	
		
			
				|  |  |   * @returns {integer}
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  NestedIterator.prototype.next = function() {
 | 
	
		
			
				|  |  | -    
 | 
	
		
			
				|  |  | -};
 | 
	
		
			
				|  |  | +	let val = this.st.peek()[this.idx.peek()].getInteger()
 | 
	
		
			
				|  |  | +	this.idx[this.idx.length-1]++
 | 
	
		
			
				|  |  | +	this.findNext()
 | 
	
		
			
				|  |  | +	return val
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +NestedIterator.prototype.findNext = function() {
 | 
	
		
			
				|  |  | +	while (this.idx.length !== 0) {
 | 
	
		
			
				|  |  | +		if (this.idx.peek() == this.st.peek().length) { // Out of bound
 | 
	
		
			
				|  |  | +			this.idx.pop()
 | 
	
		
			
				|  |  | +			this.st.pop()
 | 
	
		
			
				|  |  | +			if (this.st.length !== 0) {
 | 
	
		
			
				|  |  | +				this.idx[this.idx.length-1]++
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +		} else if (!this.st.peek()[this.idx.peek()].isInteger()) { // Go into list
 | 
	
		
			
				|  |  | +			this.st.push(this.st.peek()[this.idx.peek()].getList())
 | 
	
		
			
				|  |  | +			this.idx.push(0)
 | 
	
		
			
				|  |  | +		} else { // Found
 | 
	
		
			
				|  |  | +			break
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Your NestedIterator will be called like this:
 |