跳到主要内容

284.窥视迭代器

链接:284.窥视迭代器
难度:Medium
标签:设计、数组、迭代器
简介:给定一个迭代器类的接口,接口包含两个方法: next()  和  hasNext()。设计并实现一个支持  peek()  操作的顶端迭代器 -- 其本质就是把原本应由  next()  方法返回的元素  peek()  出来。

题解 1 - javascript

  • 编辑时间:2020-04-17
  • 执行用时:75ms
  • 内存消耗:35MB
  • 编程语言:javascript
  • 解法介绍:缓存值
class PeekingIterator {
constructor(iterator) {
this.iterator = iterator;
this.cacheNext = iterator.next();
this.cacheHasNext = iterator.hasNext();
}
/**
* @return {number}
*/
peek() {
return this.cacheNext;
}
/**
* @return {number}
*/
next() {
const cache = this.cacheNext;
this.cacheHasNext = this.iterator.hasNext();
this.cacheNext = this.iterator.next();
return cache;
}
/**
* @return {boolean}
*/
hasNext() {
return this.cacheHasNext;
}
}

题解 2 - typescript

  • 编辑时间:2021-10-05
  • 执行用时:80ms
  • 内存消耗:39.4MB
  • 编程语言:typescript
  • 解法介绍:储存下一个值。
class PeekingIterator {
private nextVal: number;
private nextState: boolean;
constructor(private iterator: Iterator) {
this.next();
}
peek(): number {
return this.nextVal;
}
next(): number {
const ans = this.nextVal;
this.nextState = this.iterator.hasNext();
this.nextVal = this.iterator.next();
return ans;
}
hasNext(): boolean {
return this.nextState;
}
}