[go: nahoru, domu]

Skip to content

Commit

Permalink
Submit 341. Flatten Nested List Iterator
Browse files Browse the repository at this point in the history
  • Loading branch information
Binlogo committed Mar 23, 2021
1 parent b907df6 commit 5444f03
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 128 deletions.
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)
129 changes: 1 addition & 128 deletions LeetCodePlayground.playground/contents.xcplayground
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&apos;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'/>

0 comments on commit 5444f03

Please sign in to comment.