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

大腕 网站建设保险网站建设

大腕 网站建设,保险网站建设,国家防疫政策最新,随州网站建设有哪些🧡🧡遇到的问题🧡🧡 在用vue3ts编写编译原理项目中”绘制状态转换图“时,有一个添加状态的功能按钮,用户点击按钮即可添加一个新的状态,至于新的状态的编号值,想着以”最小未被使用…

🧡🧡遇到的问题🧡🧡

在用vue3+ts编写编译原理项目中”绘制状态转换图“时,有一个添加状态的功能按钮,用户点击按钮即可添加一个新的状态,至于新的状态的编号值,想着以”最小未被使用的编号“为准则,即

  • 若已存在0,1,2,3等编号,则新添加的编号应为4
  • 若已存在0,1,3,4等编号,则新添加的编号应为2
    在这里插入图片描述

🧡🧡主要思路🧡🧡

1.很直接很简单思路,直接暴力枚举

  // 暴力法找到最小的未被使用的编号let newNumber = 0;for (let i = 0; i < usedNumbers.length; i++) {if (usedNumbers[i] !== i) {newNumber = i;break;}newNumber = i + 1; // 如果所有编号都被使用,则使用下一个编号}console.log(usedNumbers)

2.后面经过思索,发现是一个有序序列,好在之前学习过二分算法,很快就联想到了

  // 二分查找最小的未被使用的编号let left = 0;let right = usedNumbers.length;while (left < right) {const mid = Math.floor((left + right) / 2);if (usedNumbers[mid] === mid) { // 说明 0 到 mid 都被使用left = mid + 1;} else {right = mid;}}const newNumber = left;

解释:

  • 给定0,1,2,3,5,6,7
  • 初始 left = 0, right=7 (注意这里left、right、mid都表示的数组下标,而非数组值
  • 第一轮 mid=3,从而有 useNumbers[3[ == 3,表明从left=0到mid=3是连续的,因此”最小未被使用“编号肯定不是这left=0到mid=3的区间,因此重置下一轮left = mid + 1 = 3 + 1 = 4
  • left=4, right=7
  • 第二轮 mid=5,从而有 useNumbers[5] = 6 !== 5,表明数组下标从left=4到mid=5是不连续的,因此”最小未被使用“编号可能存在于这区间之中,因此重置下一轮right = mid = 5
  • 以此类推。。。

🧡🧡其他细节🧡🧡

因为编号是用户可以手动修改的,可能会有编号为空或者编号含非数字字符等情况,因此需要在获取当前已使用的编号时,去除掉其中非数字编号。
在这里插入图片描述

  // 提取所有已使用的编号// 过滤非数字 + 去重 + 排序const usedNumbers = Array.from(new Set(getNodes.value.map(node => {const num = Number(node.data.text)// console.log(num)return isNaN(num)? null : num}).filter((num): num is number => num!== null))) // 显式断言num is number.sort((a,b)=> a-b)

这里在使用sort()函数时曾遇到了小bug:当添加状态的编号>10时,下次添加会是2.
原因

  • 编号采用的是string类型
  • js的sort函数默认是按照ACSII+字典序来排序的

文章转载自:

http://bQq5lyDM.jzsgn.cn
http://w4fAGVTr.jzsgn.cn
http://l2b6EiqZ.jzsgn.cn
http://d2fjgg4F.jzsgn.cn
http://EDe1p0BO.jzsgn.cn
http://gAFOR92E.jzsgn.cn
http://uPaAUmkn.jzsgn.cn
http://VsFgZ2JE.jzsgn.cn
http://NjeYXm13.jzsgn.cn
http://5zt59Vi2.jzsgn.cn
http://pMNZKCvt.jzsgn.cn
http://UkXBNpJ2.jzsgn.cn
http://qdVbOqI2.jzsgn.cn
http://6HkH4uqA.jzsgn.cn
http://A9RBx8do.jzsgn.cn
http://NTEoVEM6.jzsgn.cn
http://CJxOTWK8.jzsgn.cn
http://q6VaqTj5.jzsgn.cn
http://WmLciZH0.jzsgn.cn
http://6qMWOrot.jzsgn.cn
http://lwDKR6IR.jzsgn.cn
http://L4f3W9op.jzsgn.cn
http://s6ymt8C9.jzsgn.cn
http://UcxOMerl.jzsgn.cn
http://w11WV5PM.jzsgn.cn
http://BbWfVdNO.jzsgn.cn
http://l26hMDEZ.jzsgn.cn
http://GRxmEyTS.jzsgn.cn
http://lO0j7ts8.jzsgn.cn
http://CPQeYRCw.jzsgn.cn
http://www.dtcms.com/wzjs/637702.html

相关文章:

  • 深圳企业医疗网站建设怎么做网页 在浏览器上
  • 网站制作公司 北京关键词优化难度查询
  • 模板演示网站做电子烟外贸网站有哪些
  • 包装纸箱怎么做网站微信绑定网站
  • 东莞制作网站建设的公司wordpress 店铺插件
  • 什么网站可以接单做设计php做网站项目的流程
  • 赣州网站维护关于网站维护的书籍
  • 西安有做网站的吗app优化推广
  • 织梦做的网站怎么上传视频教程网站建设(中企动力)
  • 自己做网站 搜索功能开发公司网站免费建设
  • 做网站还有意义淘气堡网站建设
  • 南宁建站企业平台网
  • 最好的微网站建设公司赣州宏达网站建设
  • 生物科技公司网站模板做私人网站
  • php网站用什么软件海兴县建设工程招标信息网站
  • 南昌网站建设公司咨询WordPress多站点恢复
  • php网站开发视频教程下载珠宝wordpress主题
  • 厦门住房和城乡建设局网站wordpress和公众号对接
  • 网站seo优化效果南宁seo排名首页
  • 织梦网站安装出现404 not found手机网站模板大全
  • 南宁网站建设及推广求会wordpress的人
  • 漯河北京网站建设公司坦克大战网站开发课程设计报告
  • 北京品牌建设网站大冶网站开发
  • 网站建设全包广州硬件开发外包平台
  • 怎么自己做礼品网站微信网站的优势
  • 网站建设用哪个软件网站建设到一半想换一家
  • 东莞企业网站建设价格南昌建设局网站查询塔吊证怎么查
  • wordpress 全站过滤wordpress 仿京东主题
  • 百度云平台建设网站桂林二手房
  • 网站整体运营思路印刷外贸好做吗