ネクタイの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]サンプル解釈:整数のみを含む単純なリストにします.
原題リンクはこちら
に感謝
この文章を読むのに時間を費やしてくれてありがとう.本人のレベルは限られているので、何か間違っているところがあれば、指摘してください.皆さん、コメント討論を歓迎します.皆さんが毎日少し進歩することを望んでいます.
目次
各要素がリストか整数かのリストが与えられます.整数のみを含む単純なリストにします.
与えられたリスト内の要素自体もリストである場合、リストを含めることもできます.
サンプル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());
}
}
}
}
原題リンクはこちら
に感謝
この文章を読むのに時間を費やしてくれてありがとう.本人のレベルは限られているので、何か間違っているところがあれば、指摘してください.皆さん、コメント討論を歓迎します.皆さんが毎日少し進歩することを望んでいます.