leetcode设计类题目
来源:互联网 发布:javascript是基于对象 编辑:程序博客网 时间:2024/05/21 15:41
341. Flatten Nested List Iterator
Given a nested list of integers, implement an iterator to flatten it.
Each element is either an integer, or a list -- whose elements may also be integers or other lists.
Example 1:
Given the list [[1,1],2,[1,1]]
,
By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,1,2,1,1]
.
Example 2:
Given the list [1,[4,[6]]]
,
By calling next repeatedly until hasNext returns false, the order of elements returned by next should be: [1,4,6]
.
/** * // 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 {public: NestedIterator(vector<NestedInteger> &nestedList) {//复制构造函数 int n=nestedList.size(); for(int i=n-1;i>=0;i--) { nodes.push(nestedList[i]); } } int next() { int res=nodes.top().getInteger(); nodes.pop(); return res; } bool hasNext() { while(!nodes.empty()) { NestedInteger cur=nodes.top(); if(cur.isInteger()) return true; else { vector<NestedInteger>& ap=cur.getList(); nodes.pop(); for(int i=ap.size()-1;i>=0;i--) { nodes.push(ap[i]); } } } return false; }private: stack<NestedInteger> nodes;};/** * Your NestedIterator object will be instantiated and called as such: * NestedIterator i(nestedList); * while (i.hasNext()) cout << i.next(); */
385. Mini Parser
Given a nested list of integers represented as a string, implement a parser to deserialize it.
Each element is either an integer, or a list -- whose elements may also be integers or other lists.
Note: You may assume that the string is well-formed:
- String is non-empty.
- String does not contain white spaces.
- String contains only digits
0-9
,[
,-
,
,]
.
Example 1:
Given s = "324",You should return a NestedInteger object which contains a single integer 324.
Example 2:
Given s = "[123,[456,[789]]]",Return a NestedInteger object containing a nested list with 2 elements:1. An integer containing value 123.2. A nested list containing two elements: i. An integer containing value 456. ii. A nested list with one element: a. An integer containing value 789.
/** * // This is the interface that allows for creating nested lists. * // You should not implement it, or speculate about its implementation * class NestedInteger { * public: * // Constructor initializes an empty nested list. * NestedInteger(); * * // Constructor initializes a single integer. * NestedInteger(int value); * * // 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; * * // Set this NestedInteger to hold a single integer. * void setInteger(int value); * * // Set this NestedInteger to hold a nested list and adds a nested integer to it. * void add(const NestedInteger &ni); * * // 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 Solution {public: NestedInteger deserialize(string s) { function<bool(char)> isNum=[](char c){return c=='-'||isdigit(c);}; stack<NestedInteger> res; res.push(NestedInteger()); string::const_iterator it=s.begin(); for(auto it=s.begin();it!=s.end();) { char& c=*it; if(isNum(c)) { auto it2=find_if_not(it,s.end(),isNum); int num=stoi(string(it,it2)); res.top().add(NestedInteger(num)); it=it2; } else { if(c=='[') { res.push(NestedInteger()); } else if(c==']') { NestedInteger temp=res.top(); res.pop(); res.top().add(temp); } it++; } } return res.top().getList().front(); }};
- leetcode设计类题目
- Leetcode数组类题目
- Leetcode字符串类题目
- Leetcode数学类题目
- LeetCode string类题目总结
- Leetcode二分查找类题目
- leetcode 数组类 所有题目
- leetcode题目
- LeetCode 题目
- < 题目 > LeetCode
- 【LeetCode】Linked List 类题目列表
- Leetcode 动态规划DP类题目
- 一个简单的类设计题目
- LeetCode题目 Insert Interval
- 【转载】【leetcode】题目分布
- Leetcode 题目分类
- leetcode题目解答---- SortList
- leetcode题目:LRU Cache
- jQuery动画效果-向右移动
- 解决Windows版本Nginx配置不生效问题
- 二叉树的遍历编程求解
- 接口和抽象类
- 自定义view实现水波纹效果
- leetcode设计类题目
- C++字符串连接,输入和输出
- 欢迎使用CSDN-markdown编辑器
- 自动化测试:behave
- Git设置本地理
- UVa 10263
- leetcode 101. Symmetric Tree BFS广度优先遍历
- 类之间关系
- node.js中render和send