中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

政府網(wǎng)站建設(shè)經(jīng)驗材料范文軟文推廣去哪個平臺好

政府網(wǎng)站建設(shè)經(jīng)驗材料范文,軟文推廣去哪個平臺好,網(wǎng)站最佳顏色搭配,網(wǎng)店該怎么推廣棧模擬dfs前言一、花括號展開II二、棧模擬dfs總結(jié)參考資料前言 遞歸調(diào)用,代碼非常的簡潔。但是可以通過顯式棧來模擬棧中的內(nèi)容,鍛煉自己的代碼能力,清楚知道棧幀中需要的內(nèi)容。 一、花括號展開II 二、棧模擬dfs 每碰到一個左括號&#xf…

棧模擬dfs

  • 前言
  • 一、花括號展開II
  • 二、棧模擬dfs
  • 總結(jié)
  • 參考資料

前言

遞歸調(diào)用,代碼非常的簡潔。但是可以通過顯式棧來模擬棧中的內(nèi)容,鍛煉自己的代碼能力,清楚知道棧幀中需要的內(nèi)容。

一、花括號展開II

在這里插入圖片描述

二、棧模擬dfs

每碰到一個左括號,就壓一次棧,但棧里面存什么?
存set,由于存在組合,組合之前還不能提前求并集,所以存set切片!!
每碰到一個右括號,就把當(dāng)前set切片整理成一個set,拋向上一層的set切片末尾,根據(jù)前面的操作符,再判定是否需要組合。

func braceExpansionII(expression string) []string {// 模擬函數(shù)調(diào)用棧,數(shù)據(jù)棧和操作符棧。stack := make([][]map[string]interface{},1)top := 1lastOp := make([]byte,0) // 0代表需要組合,1代表不用組合。t := 0lastCh := ',' // 初始化,表示不用組合,set取交集即可。for _,e := range expression {// 碰到括號就壓棧if e == '{' {stack = append(stack[:top],make([]map[string]interface{},0))top++// 當(dāng)前面字符是'}' 或者 字符時,需要組合,將組合操作符壓棧。if lastCh != '{' && lastCh != ','{lastOp = append(lastOp[:t],0)t++}// 如果前面是'{',說明是該層第一個set塊,當(dāng)該set塊提交上來時不用做任何操作。if lastCh == '{' {lastOp = append(lastOp[:t],1)t++}lastCh = econtinue}// 碰到右括號,先把元素合并向上拋,再根據(jù)操作符來判定是否需要組合。if e == '}' {// 先把元素取交集向上層拋newMap := map[string]interface{}{}curSlice := stack[top - 1]top--for _,sc := range curSlice {for k := range sc {newMap[k] = struct{}{}}}stack[top - 1] = append(stack[top - 1],newMap)// 再根據(jù)操作符進(jìn)行普通放置,還是組合if t != 0 && lastOp[t - 1] == 0 {cur := stack[top - 1]m1,m2 := cur[len(cur) - 1],cur[len(cur) - 2]nm := map[string]interface{}{}for k2 := range m2 {for k1 := range m1 {nm[k2+k1] = struct{}{}}}stack[top - 1] = append(stack[top-1][:len(cur)-2],nm)}// 操作符出棧if t != 0 {t--}}else if e == ',' {lastOp = append(lastOp[:t],1)t++}else {// 右貼字符型,需要立即組合cur := stack[top - 1]if lastCh != ',' && lastCh != '{'{m := cur[len(cur) - 1]nm := map[string]interface{}{}for k := range m {nm[k + string(e)] = struct{}{}}stack[top-1]=append(stack[top-1][:len(cur)-1],nm)}else {m := map[string]interface{}{}m[string(e)] = struct{}{}stack[top - 1] = append(stack[top - 1],m)// 逗號操作符出棧if lastCh == ',' && t != 0 {t--}}}lastCh = e}// 取數(shù)據(jù)并排序return getData(stack[0])// 總:append的使用append+slice[:top],以及append在修改該當(dāng)前slice的情況
}
func getData(ms []map[string]interface{}) []string{ans := []string{}for _,m := range ms {for k := range m {ans = append(ans,k)}}sort.Slice(ans,func(i,j int)bool{return ans[i] < ans[j]})return ans
}
// ‘,’表示和后面并集(合并去重);‘空’表示相互組合。
// 根據(jù)花括號配對,以及進(jìn)入下一個括號前碰到的指示操作符,來進(jìn)行組合或并集
// set來做容器,
// 每次向上提交一層,就要看操作符,逗號合井號不管,只管空格符進(jìn)行組合。 這就是整體的抽象規(guī)則。
// 思路:每碰到左括號就壓一層棧,棧幀中存一個個set形成的切片,同時需要用另一個棧存操作符,可能需要組合。
// 當(dāng)碰到組合的情況,當(dāng)前set需要和切片中前一個set進(jìn)行組合。

總結(jié)

1)采用棧模擬遞歸調(diào)用,鍛煉代碼能力,清楚知道棧幀中需要什么內(nèi)容。

參考資料

[1] LeetCode 花括號展開II

http://www.risenshineclean.com/news/1714.html

相關(guān)文章:

  • 怎么做銷售網(wǎng)站周口網(wǎng)絡(luò)推廣哪家好
  • 佛山新網(wǎng)站制作市場網(wǎng)絡(luò)熱詞有哪些
  • 用cms做網(wǎng)站怎么樣關(guān)鍵詞優(yōu)化seo
  • .net可以做網(wǎng)站做游戲 博客園廣州線上教學(xué)
  • 手機wap網(wǎng)頁游戲廣州網(wǎng)站建設(shè)方案優(yōu)化
  • 電話銷售做網(wǎng)站推銷seo網(wǎng)站優(yōu)化軟件
  • wordpress美化文章標(biāo)題seo排名點擊軟件
  • win本地網(wǎng)站建設(shè)網(wǎng)絡(luò)優(yōu)化軟件
  • 做網(wǎng)站要收訂金嗎百度seo快速見效方法
  • 成都科技網(wǎng)站建設(shè)服務(wù)熱線seo實戰(zhàn)培訓(xùn)班
  • 網(wǎng)站維護 代碼開封網(wǎng)站設(shè)計
  • 招聘網(wǎng)站開發(fā)不受限制的搜索瀏覽器
  • wordpress手機建站教程軍事新聞最新消息
  • 常州建設(shè)工程質(zhì)量監(jiān)督網(wǎng)站鄭州seo代理外包
  • 如何對網(wǎng)站做優(yōu)化網(wǎng)絡(luò)營銷的基本內(nèi)容有哪些
  • 做電影網(wǎng)站犯法網(wǎng)絡(luò)營銷公司全網(wǎng)推廣公司
  • 開封做網(wǎng)站百度手機導(dǎo)航官方新版
  • 第一家中文商務(wù)網(wǎng)站明年2024年有疫情嗎
  • 湖南省住房城鄉(xiāng)建設(shè)廳網(wǎng)站磁力搜索
  • 做網(wǎng)站主要欄目內(nèi)競價托管信息
  • 網(wǎng)站后臺如何做做搜索引擎優(yōu)化的企業(yè)
  • 門戶網(wǎng)站開發(fā)報價單企業(yè)的網(wǎng)絡(luò)推廣
  • 文山州住房建設(shè)網(wǎng)站企業(yè)網(wǎng)絡(luò)推廣計劃
  • 微信小程序模版廣州seo網(wǎng)站推廣公司
  • 南通高端網(wǎng)站建設(shè)公司培訓(xùn)網(wǎng)頁
  • 承德做網(wǎng)站優(yōu)化搜狗網(wǎng)址大全
  • 國內(nèi)產(chǎn)品推廣網(wǎng)站廣州市疫情最新情況
  • 編程和做網(wǎng)站有關(guān)系嗎招商外包
  • 微信api文檔徐州seo代理計費
  • 泉州市住房與城鄉(xiāng)建設(shè)局網(wǎng)站seo外鏈?zhǔn)鞘裁匆馑?/a>