Flatten Nested List Iterator Solutions in C++
Number 341
Difficulty Medium
Acceptance 53.0%
Link LeetCode
Other languages —
Solutions
C++ solution by haoel/leetcode
// Source : https://leetcode.com/problems/flatten-nested-list-iterator/// Author : Hao Chen// Date : 2016-05-30/*** // This is the interface that allows for creating nested lists.* // You should not implement it, or speculate about its implementation* class NestedInteger {* public:* // Return true if this NestedInteger holds a single integer, rather than a nested list.* bool isInteger() const;** // Return the single integer that this NestedInteger holds, if it holds a single integer* // The result is undefined if this NestedInteger holds a nested list* int getInteger() const;** // Return the nested list that this NestedInteger holds, if it holds a nested list* // The result is undefined if this NestedInteger holds a single integer* const vector<NestedInteger> &getList() const;* };*/class NestedIterator {private:vector<int> v;int index;void flatten(vector<NestedInteger> &nestedList) {for (auto item : nestedList){if (item.isInteger()){v.push_back( item.getInteger() );}else{flatten( item.getList() );}}}public:NestedIterator(vector<NestedInteger> &nestedList) {flatten(nestedList);index = 0;}int next() {return v[index++];}bool hasNext() {return (index < v.size() );}};/*** Your NestedIterator object will be instantiated and called as such:* NestedIterator i(nestedList);* while (i.hasNext()) cout << i.next();*/
C++ solution by liuyubobobo/Play-Leetcode
/// Source : https://leetcode.com/problems/flatten-nested-list-iterator//// Author : liuyubobobo/// Time : 2019-06-10#include <iostream>#include <vector>using namespace std;/// DFS/// Time Complexity: O(n)/// Space Complexity: O(h)// This is the interface that allows for creating nested lists.// You should not implement it, or speculate about its implementationclass NestedInteger {public:// Return true if this NestedInteger holds a single integer, rather than a nested list.bool isInteger() const{return true;}// Return the single integer that this NestedInteger holds, if it holds a single integer// The result is undefined if this NestedInteger holds a nested listint getInteger() const{return -1;}// Return the nested list that this NestedInteger holds, if it holds a nested list// The result is undefined if this NestedInteger holds a single integerconst vector<NestedInteger> &getList() const{return {};}};class NestedIterator {private:vector<int> data;int i;public:NestedIterator(vector<NestedInteger> &nestedList) {dfs(nestedList);i = 0;}int next() {return data[i ++];}bool hasNext() {return i < data.size();}private:void dfs(const vector<NestedInteger>& nestedList){for(const NestedInteger& e: nestedList)if(e.isInteger())data.push_back(e.getInteger());elsedfs(e.getList());}};int main() {return 0;}