日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

22. 平面列表

發布時間:2023/12/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 22. 平面列表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

給定一個列表,該列表中的每個要素要么是個列表,要么是整數。將其變成一個只包含整數的簡單列表。

?注意事項

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

您在真實的面試中是否遇到過這個題?? Yes 樣例

給定?[1,2,[1,2]],返回?[1,2,1,2]。

給定?[4,[3,[2,[1]]]],返回?[4,3,2,1]。

挑戰?

請用非遞歸方法嘗試解答這道題。

題解

非遞歸的做法,stack作為一個容器,來保存每一層的數據
當我們遇到一個元素是列表,我們就把當前列表存起來,把這個元素當作新列表,再枚舉處理,再繼續上面的操作,
直到某個只有數字的元素,則開始回溯,把stack的列表一個一個pop出來繼續處理,直到stack全部處理結束。
這題還有注意的是進來的可能只是一個數字,所以我先[,]下,反正后面會自己解開。還有就是有一些空集合,導致我代碼提早跳出,代碼還能寫更漂亮才對。

?

def flatten(nestedList):idx = 0lst = []stack = []curList = [nestedList,]while 1:if type(curList[idx]) == list:stack.append([curList, idx])curList = curList[idx]idx = -1else:lst.append(curList[idx])idx += 1if idx == len(curList):while 1:if len(stack) == 0:return lstcurList, idx = stack.pop()idx += 1if idx < len(curList):break

?

轉載于:https://www.cnblogs.com/usp10/p/8619043.html

總結

以上是生活随笔為你收集整理的22. 平面列表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。