• 22 平面列表


    原题网址:http://www.lintcode.com/zh-cn/problem/flatten-list/

    给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。

     注意事项

    如果给定的列表中的要素本身也是一个列表,那么它也可以包含列表。

    样例

    给定 [1,2,[1,2]],返回 [1,2,1,2]

    给定 [4,[3,[2,[1]]]],返回 [4,3,2,1]

    挑战 

    请用非递归方法尝试解答这道题。

     1 #include <iostream>
     2 #include <vector>
     3 #include <math.h>
     4 #include <string>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8 
     9  class NestedInteger {
    10     public:
    11       // Return true if this NestedInteger holds a single integer,
    12       // rather than a nested list.
    13       bool isInteger() const;
    14  
    15       // Return the single integer that this NestedInteger holds,
    16       // if it holds a single integer
    17       // The result is undefined if this NestedInteger holds a nested list
    18       int getInteger() const;
    19  
    20       // Return the nested list that this NestedInteger holds,
    21       // if it holds a nested list
    22       // The result is undefined if this NestedInteger holds a single integer
    23      const vector<NestedInteger> &getList() const;
    24 
    25   };
    26 
    27  class Solution {
    28  public:
    29      // @param nestedList a list of NestedInteger
    30      // @return a list of integer 
    31  vector<int> result;
    32   vector<int> flatten( const vector<NestedInteger> &nestedList)  //注意getList()返回const引用,接收变量也应为const引用,所以修改lintcode原来函数参数;
    33   {
    34      
    35       int size=nestedList.size();
    36       for (int i=0;i<size;i++)
    37       {
    38           if (nestedList[i].isInteger())
    39           {
    40               result.push_back(nestedList[i].getInteger());
    41           }
    42           else
    43           {
    44               flatten(nestedList[i].getList());
    45           }
    46       }
    47       return result;
    48   }
    49  };
    50   /*
    51   //非递归;
    52   vector<int> flatten(vector<NestedInteger> &nestedList)
    53   {
    54       vector<int> result;
    55       int size=nestedList.size();
    56 
    57       for (int i=0;i<size;i++)
    58       {
    59           if (nestedList[i].isInteger())
    60           {
    61               result.push_back(nestedList[i].getInteger());
    62           }
    63           else
    64           {
    65               vector<NestedInteger> temp;
    66               temp=nestedList[i].getList();
    67           
    68               while(temp.empty()==false)
    69               {
    70                   NestedInteger t=temp.back();
    71                   temp.pop_back();
    72                   if (t.isInteger())
    73                   {
    74                       result.push_back(t.getInteger());
    75                   }
    76                   else
    77                   {
    78                       
    79                   }
    80               }  
    81           }
    82       }
    83       return result;
    84   }*/

    参考:

    https://blog.csdn.net/yekongzhongdemeng/article/details/79310313

  • 相关阅读:
    密码框组件
    文本框组件
    列表框组件
    复选框组件
    单选按钮组件
    nginx for windows
    Mesa 3D
    下载服务器文件到本地
    消息服务
    Redis查看已注册的提供者消费者信息
  • 原文地址:https://www.cnblogs.com/Tang-tangt/p/8633540.html
Copyright © 2020-2023  润新知