-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Submit 341. Flatten Nested List Iterator
- Loading branch information
Showing
2 changed files
with
66 additions
and
128 deletions.
There are no files selected for viewing
65 changes: 65 additions & 0 deletions
65
...Playground.playground/Pages/341_FlattenNestedListIterator.xcplaygroundpage/Contents.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
//: [Previous](@previous) | ||
|
||
import Foundation | ||
|
||
// | ||
// 341. 扁平化嵌套列表迭代器 | ||
// | ||
// 题目链接:https://leetcode-cn.com/problems/flatten-nested-list-iterator/ | ||
// | ||
|
||
protocol NestedInteger { | ||
// Return true if this NestedInteger holds a single integer, rather than a nested list. | ||
func isInteger() -> Bool | ||
|
||
// 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 | ||
func getInteger() -> Int | ||
|
||
// Set this NestedInteger to hold a single integer. | ||
func setInteger(value: Int) | ||
|
||
// Set this NestedInteger to hold a nested list and adds a nested integer to it. | ||
func add(elem: NestedInteger) | ||
|
||
// 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 | ||
func getList() -> [NestedInteger] | ||
} | ||
|
||
class NestedIterator { | ||
private var vals: [Int] = [] | ||
private var current: Int? | ||
|
||
init(_ nestedList: [NestedInteger]) { | ||
dfs(nestedList) | ||
current = vals.first | ||
} | ||
|
||
func next() -> Int { | ||
return vals.removeFirst() | ||
} | ||
|
||
func hasNext() -> Bool { | ||
return !vals.isEmpty | ||
} | ||
|
||
private func dfs(_ nestedList: [NestedInteger]) { | ||
for nest in nestedList { | ||
if nest.isInteger() { | ||
vals.append(nest.getInteger()) | ||
} else { | ||
dfs(nest.getList()) | ||
} | ||
} | ||
} | ||
} | ||
|
||
/** | ||
* Your NestedIterator object will be instantiated and called as such: | ||
* let obj = NestedIterator(nestedList) | ||
* let ret_1: Int = obj.next() | ||
* let ret_2: Bool = obj.hasNext() | ||
*/ | ||
|
||
//: [Next](@next) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,129 +1,2 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
<playground version='6.0' target-platform='macos' display-mode='raw'> | ||
<pages> | ||
<page name='1_TwoSum'/> | ||
<page name='2_AddTwoNumbers'/> | ||
<page name='3_LongestSubstringWithoutRepeatingCharacters'/> | ||
<page name='4_MedianofTwoSortedArrays'/> | ||
<page name='5_LongestPalindromicSubstring'/> | ||
<page name='8_StringToInteger'/> | ||
<page name='9_PalindromeNumber'/> | ||
<page name='10_RegularExpressionMatching'/> | ||
<page name='11_ContainerWithMostWater'/> | ||
<page name='14_LongestCommonPrefix'/> | ||
<page name='15_ThreeSum'/> | ||
<page name='16_3SumClosest'/> | ||
<page name='19_RemoveNthNodeFromEndOfList'/> | ||
<page name='20_ValidParentheses'/> | ||
<page name='21_mergeTwoSortedLists'/> | ||
<page name='024_SwapNodesInPairs'/> | ||
<page name='25_ReverseNodesink-Group '/> | ||
<page name='26_RemoveDuplicatesFromSortedArray'/> | ||
<page name='27_RemoveElement'/> | ||
<page name='33_SearchinRotatedSortedArray'/> | ||
<page name='35_SearchInsertPosition'/> | ||
<page name='41_FirstMissingPositive'/> | ||
<page name='44_WildcardMatching'/> | ||
<page name='45_JumpGameII'/> | ||
<page name='50_Pow(x, n)'/> | ||
<page name='53_MaximumSubarray'/> | ||
<page name='54_Spiral_Matrix'/> | ||
<page name='61_RotateList'/> | ||
<page name='63_UniquePathsII'/> | ||
<page name='64_MinimumPathSum'/> | ||
<page name='66_PlusOne'/> | ||
<page name='67_AddBinary'/> | ||
<page name='70_ClimbingStairs'/> | ||
<page name='71_SimplifyPath'/> | ||
<page name='75_SortColors'/> | ||
<page name='76_MinimumWindowSubstring'/> | ||
<page name='80_RemoveDuplicatesFromSortedArray_II'/> | ||
<page name='84_LargestRectangleinHistogram'/> | ||
<page name='88_MergeSortedArray'/> | ||
<page name='93_RestoreIPAddresses'/> | ||
<page name='95_UniqueBinarySearchTreesII'/> | ||
<page name='96_UniqueBinarySearchTrees '/> | ||
<page name='98_ValidateBinarySearchTree'/> | ||
<page name='101_SymmetricTree'/> | ||
<page name='102_BinaryTreeLevelOrderTraversal'/> | ||
<page name='104_MaximumDepthofBinaryTree'/> | ||
<page name='105_ConstructBinaryTreefromPreorderandInorderTraversal'/> | ||
<page name='108_ConvertSortedArraytoBinarySearchTree'/> | ||
<page name='112_PathSum'/> | ||
<page name='118_Pascal'sTriangle'/> | ||
<page name='120_Triangle'/> | ||
<page name='121_BestTimetoBuyandSellStock'/> | ||
<page name='122_BestTimetoBuyandSellStockII'/> | ||
<page name='124_BinaryTreeMaximumPathSum'/> | ||
<page name='125_ValidPalindrome'/> | ||
<page name='126_WordLadderII'/> | ||
<page name='128_LongestConsecutiveSequence'/> | ||
<page name='139_WordBreak'/> | ||
<page name='146_LRUCache'/> | ||
<page name='150_EvaluateReversePolishNotation'/> | ||
<page name='151_ReverseWordsInString'/> | ||
<page name='152_MaximumProductSubarray'/> | ||
<page name='155_MinStack'/> | ||
<page name='167_TwoSumII'/> | ||
<page name='174_DungeonGame '/> | ||
<page name='198_HouseRobber'/> | ||
<page name='202_HappyNumber'/> | ||
<page name='203_RemoveLinkedListElements'/> | ||
<page name='206_ReverseList'/> | ||
<page name='209_MinimumSizeSubarraySum'/> | ||
<page name='210'/> | ||
<page name='215_FindKthLargestInAnArray'/> | ||
<page name='221_MaximalSquare'/> | ||
<page name='234_PalindromeLinkedList'/> | ||
<page name='236_LowestCommonAncestorofaBinaryTree'/> | ||
<page name='238_ProductofArrayExceptSelf'/> | ||
<page name='274_H-Index'/> | ||
<page name='283_MoveZeroes'/> | ||
<page name='287_FindtheDuplicateNumber'/> | ||
<page name='297_SerializeandDeserializeBinaryTree'/> | ||
<page name='309_BestTimetoBuyandSellStockwithCooldown'/> | ||
<page name='312_BurstBalloons'/> | ||
<page name='315_CountofSmallerNumbersAfterSelf'/> | ||
<page name='328_OddEvenLinkedList'/> | ||
<page name='343_IntegerBreak'/> | ||
<page name='345_ReverseVowelsOfAString'/> | ||
<page name='350_IntersectionofTwoArraysII '/> | ||
<page name='378_KthSmallestElementinaSortedMatrix'/> | ||
<page name='392_IsSubsequence'/> | ||
<page name='394_DecodeString'/> | ||
<page name='498_DiagonalTraverse'/> | ||
<page name='560_SubarraySumEqualsK'/> | ||
<page name='622_DesignCircularQueue'/> | ||
<page name='680_Valid_Palindrome_II'/> | ||
<page name='695_MaxAreaofIsland'/> | ||
<page name='707_DesignLinkedList'/> | ||
<page name='718_MaximumLengthofRepeatedSubarray'/> | ||
<page name='724_FindPivotIndex'/> | ||
<page name='739_DailyTemperatures'/> | ||
<page name='747_LargestNumberAtLeastTwiceofOthers'/> | ||
<page name='785_IsGraphBipartite?'/> | ||
<page name='837_New21Game'/> | ||
<page name='880_DecodedStringAtIndex'/> | ||
<page name='912_SortAnArray'/> | ||
<page name='974_SubarraySumsDivisiblebyK '/> | ||
<page name='983_MinimumCostForTickets'/> | ||
<page name='990_SatisfiabilityofEqualityEquations'/> | ||
<page name='1003_CheckIfWordIsValidAfterSubstitutions'/> | ||
<page name='1014_BestSightseeingPair'/> | ||
<page name='1025_DivisorGame'/> | ||
<page name='1028_RecoveraTreeFromPreorderTraversal'/> | ||
<page name='1300_SumofMutatedArrayClosesttoTarget'/> | ||
<page name='1371_FindtheLongestSubstringContainingVowelsinEvenCounts'/> | ||
<page name='1431_KidsWiththeGreatestNumberofCandies'/> | ||
<page name='程序员面试金典 - 面试题 02.01. 移除重复节点'/> | ||
<page name='程序员面试金典 - 面试题 10.01. 合并排序的数组'/> | ||
<page name='程序员面试金典 - 面试题 16.11. 跳水板'/> | ||
<page name='程序员面试金典 - 面试题 17.13. 恢复空格'/> | ||
<page name='剑指 Offer - 面试题29. 顺时针打印矩阵'/> | ||
<page name='剑指 Offer - 面试题46. 把数字翻译成字符串'/> | ||
<page name='剑指 Offer - 面试题64. 求1+2+…+n'/> | ||
<page name='剑指 Offer 09. 用两个栈实现队列'/> | ||
<page name='剑指 Offer 11. 旋转数组的最小数字'/> | ||
<page name='其他 - 合并K个排序数组'/> | ||
</pages> | ||
</playground> | ||
<playground version='6.0' target-platform='macos' display-mode='raw'/> |