ネクタイのLintCode問題の答え-22.リストのフラット化

5537 ワード

ネクタイのLintCode問題の答え-22.リストのフラット化
目次
  • 22. リストフラット化
  • 感謝
  • 22.リストの平坦化
    各要素がリストか整数かのリストが与えられます.整数のみを含む単純なリストにします.
    与えられたリスト内の要素自体もリストである場合、リストを含めることもできます.
    サンプル1:
    入力:[[1,1],2,[1,1]]出力:[1,1,2,1,1]サンプル解釈:整数のみを含む単純なリストにします.
    サンプル2:
    入力:[1,2,[1,2]]出力:[1,2,1,2]サンプル解釈:整数のみを含む単純なリストにします.
    サンプル3:
    入力:[4,[3,[2,[1]]]]出力:[4,3,2,1]サンプル解釈:整数のみを含む単純なリストにします.
    /**
     * // This is the interface that allows for creating nested lists.
     * // You should not implement it, or speculate about its implementation
     * public interface NestedInteger {
     * 

    * // @return true if this NestedInteger holds a single integer, * // rather than a nested list. * public boolean isInteger(); *

    * // @return the single integer that this NestedInteger holds, * // if it holds a single integer * // Return null if this NestedInteger holds a nested list * public Integer getInteger(); *

    * // @return the nested list that this NestedInteger holds, * // if it holds a nested list * // Return null if this NestedInteger holds a single integer * public List getList(); * } */

    public class Solution { // @param nestedList a list of NestedInteger // @return a list of integer public List<Integer> flatten(List<NestedInteger> nestedList) { // Write your code here List<Integer> ret = new ArrayList<Integer>(); this.addAll(ret, nestedList); return ret; } private void addAll(List<Integer> ret, List<NestedInteger> nestedList) { for (NestedInteger nestedInteger : nestedList) { if (nestedInteger.isInteger()) { ret.add(nestedInteger.getInteger()); } else { this.addAll(ret, nestedInteger.getList()); } } } }

    原題リンクはこちら
    に感謝
    この文章を読むのに時間を費やしてくれてありがとう.本人のレベルは限られているので、何か間違っているところがあれば、指摘してください.皆さん、コメント討論を歓迎します.皆さんが毎日少し進歩することを望んでいます.