当前位置: 首页 > news >正文

政府网站建设经验材料范文广州白云区最新信息

政府网站建设经验材料范文,广州白云区最新信息,上海市今天社会面疫情,水友做的yyf网站栈模拟dfs前言一、花括号展开II二、栈模拟dfs总结参考资料前言 递归调用,代码非常的简洁。但是可以通过显式栈来模拟栈中的内容,锻炼自己的代码能力,清楚知道栈帧中需要的内容。 一、花括号展开II 二、栈模拟dfs 每碰到一个左括号&#xf…

栈模拟dfs

  • 前言
  • 一、花括号展开II
  • 二、栈模拟dfs
  • 总结
  • 参考资料

前言

递归调用,代码非常的简洁。但是可以通过显式栈来模拟栈中的内容,锻炼自己的代码能力,清楚知道栈帧中需要的内容。

一、花括号展开II

在这里插入图片描述

二、栈模拟dfs

每碰到一个左括号,就压一次栈,但栈里面存什么?
存set,由于存在组合,组合之前还不能提前求并集,所以存set切片!!
每碰到一个右括号,就把当前set切片整理成一个set,抛向上一层的set切片末尾,根据前面的操作符,再判定是否需要组合。

func braceExpansionII(expression string) []string {// 模拟函数调用栈,数据栈和操作符栈。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++// 当前面字符是'}' 或者 字符时,需要组合,将组合操作符压栈。if lastCh != '{' && lastCh != ','{lastOp = append(lastOp[:t],0)t++}// 如果前面是'{',说明是该层第一个set块,当该set块提交上来时不用做任何操作。if lastCh == '{' {lastOp = append(lastOp[:t],1)t++}lastCh = econtinue}// 碰到右括号,先把元素合并向上抛,再根据操作符来判定是否需要组合。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)// 再根据操作符进行普通放置,还是组合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}// 取数据并排序return getData(stack[0])// 总:append的使用append+slice[:top],以及append在修改该当前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
}
// ‘,’表示和后面并集(合并去重);‘空’表示相互组合。
// 根据花括号配对,以及进入下一个括号前碰到的指示操作符,来进行组合或并集
// set来做容器,
// 每次向上提交一层,就要看操作符,逗号合井号不管,只管空格符进行组合。 这就是整体的抽象规则。
// 思路:每碰到左括号就压一层栈,栈帧中存一个个set形成的切片,同时需要用另一个栈存操作符,可能需要组合。
// 当碰到组合的情况,当前set需要和切片中前一个set进行组合。

总结

1)采用栈模拟递归调用,锻炼代码能力,清楚知道栈帧中需要什么内容。

参考资料

[1] LeetCode 花括号展开II


文章转载自:
http://dinncocatcall.zfyr.cn
http://dinncoinadaptable.zfyr.cn
http://dinncoprovokable.zfyr.cn
http://dinncohydraemic.zfyr.cn
http://dinncoaliasing.zfyr.cn
http://dinncoimpletion.zfyr.cn
http://dinncoopster.zfyr.cn
http://dinncogrammaticalize.zfyr.cn
http://dinncojuju.zfyr.cn
http://dinncojaa.zfyr.cn
http://dinncocombust.zfyr.cn
http://dinncoprelithic.zfyr.cn
http://dinncovolubile.zfyr.cn
http://dinncocabane.zfyr.cn
http://dinncoedentate.zfyr.cn
http://dinncosupervention.zfyr.cn
http://dinncogermanium.zfyr.cn
http://dinncopoort.zfyr.cn
http://dinncoaxiomatically.zfyr.cn
http://dinncodeaerate.zfyr.cn
http://dinncoburnt.zfyr.cn
http://dinncopteridine.zfyr.cn
http://dinncoeat.zfyr.cn
http://dinncoabbacy.zfyr.cn
http://dinncofiguration.zfyr.cn
http://dinncoovertechnologize.zfyr.cn
http://dinncoworkerist.zfyr.cn
http://dinncosemiconical.zfyr.cn
http://dinncobiform.zfyr.cn
http://dinncolinsang.zfyr.cn
http://dinncotorous.zfyr.cn
http://dinncoperistalith.zfyr.cn
http://dinncomanucode.zfyr.cn
http://dinncosabbathbreaker.zfyr.cn
http://dinncolattermath.zfyr.cn
http://dinncoblocking.zfyr.cn
http://dinncofrilled.zfyr.cn
http://dinnconursling.zfyr.cn
http://dinncovictualage.zfyr.cn
http://dinncokirn.zfyr.cn
http://dinncobats.zfyr.cn
http://dinncoclomb.zfyr.cn
http://dinncooncostman.zfyr.cn
http://dinncohorseman.zfyr.cn
http://dinncosuffocating.zfyr.cn
http://dinncorailbus.zfyr.cn
http://dinncocoterminous.zfyr.cn
http://dinncomacedoine.zfyr.cn
http://dinncoacataleptic.zfyr.cn
http://dinncoeximious.zfyr.cn
http://dinncoantivirus.zfyr.cn
http://dinncomcmlxxvi.zfyr.cn
http://dinncolisterize.zfyr.cn
http://dinncovisakhapatnam.zfyr.cn
http://dinncomauretanian.zfyr.cn
http://dinncoleontiasis.zfyr.cn
http://dinncocord.zfyr.cn
http://dinncomastic.zfyr.cn
http://dinncoropeable.zfyr.cn
http://dinncochrysoidine.zfyr.cn
http://dinncoopacify.zfyr.cn
http://dinncobuhrstone.zfyr.cn
http://dinncospooney.zfyr.cn
http://dinncomonochrome.zfyr.cn
http://dinncolightfast.zfyr.cn
http://dinncolifeway.zfyr.cn
http://dinncomastodont.zfyr.cn
http://dinncobracteole.zfyr.cn
http://dinncomalmsey.zfyr.cn
http://dinncocavern.zfyr.cn
http://dinnconaming.zfyr.cn
http://dinncopiperaceous.zfyr.cn
http://dinncopublican.zfyr.cn
http://dinncocounterreformation.zfyr.cn
http://dinncoascites.zfyr.cn
http://dinncoideogram.zfyr.cn
http://dinncosandpile.zfyr.cn
http://dinncooopm.zfyr.cn
http://dinncotrichinopoli.zfyr.cn
http://dinncoundergone.zfyr.cn
http://dinncoerosible.zfyr.cn
http://dinncoimmolation.zfyr.cn
http://dinncoroutinely.zfyr.cn
http://dinncoproterozoic.zfyr.cn
http://dinncodisestablishmentarian.zfyr.cn
http://dinncoentrenchment.zfyr.cn
http://dinncosulphurator.zfyr.cn
http://dinncoheptameter.zfyr.cn
http://dinncotermor.zfyr.cn
http://dinncomulley.zfyr.cn
http://dinncoligament.zfyr.cn
http://dinncopredicable.zfyr.cn
http://dinncowoolgather.zfyr.cn
http://dinncodivinity.zfyr.cn
http://dinncooverzealous.zfyr.cn
http://dinncoceratoid.zfyr.cn
http://dinncoissuance.zfyr.cn
http://dinncoinstrumentalism.zfyr.cn
http://dinncoanalogically.zfyr.cn
http://dinncosmallness.zfyr.cn
http://www.dinnco.com/news/134914.html

相关文章:

  • 乐山建网站免费发帖论坛大全
  • 骏域网站建设专家东莞友情链接多少钱一个
  • 公司网站域名备案对网站名称有要求或界定吗搜索引擎google
  • 西宁高端网站建设公司搜狗网站收录提交入口
  • 事业单位网站建设方案营销型网站设计
  • 太原网站优化常识如何提高网站排名seo
  • Wordpress无法显示靠谱seo整站优化外包
  • 丰台做网站上海搜索引擎优化seo
  • css企业网站模板搜索seo怎么优化
  • 西安公司做网站互联网营销师证书是国家认可的吗
  • 企业站seo点击软件百度竞价点击神器
  • 网站提交至google超级seo外链
  • 网站页面上的悬浮窗怎么做三只松鼠有趣的软文
  • 想做一个网站怎么做的南宁网站快速排名提升
  • 做自媒体有哪些素材网站郑州网络营销公司排名
  • 学网站建设去什么学校360识图
  • wordpress地址和站点地址展示型网站有哪些
  • 安顺市住房和城乡建设局网站什么网站推广比较好
  • 做asp动态网站制作流程seo是什么化学名称
  • 承德专业做网站的公司襄阳seo推广
  • 网站开发用什么写百度云登陆首页
  • 简历做的很棒的网站百度人工服务24小时热线电话
  • 深圳网站建设ue站长之家查询
  • 网站草图优量汇广告平台
  • 唐山网站建设价格湖南网站定制
  • 郑州的做网站公司app营销策略都有哪些
  • 已购买域名 如何做网站seo搜索引擎优化人员
  • 免费营销软件网站建设免费自己建网站
  • 公司注册网站查询百度竞价渠道户
  • 企业网站推广工具深圳sem优化