news 2026/2/17 7:56:00

【十叉树的先序遍历】字典序的第K小数字

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【十叉树的先序遍历】字典序的第K小数字

求解代码

publicintfindKthNumber(intn,intk){intcur=1;// 从字典序第一个数字 1 开始k--;// 转换为 0 索引while(k>0){// 计算以cur为根的子树,包含的有效节点数量intsteps=getSteps(cur,n);if(steps<=k){// 目标不在当前子树,跳过整棵子树,更新k和当前节点k-=steps;cur++;}else{// 目标在子树中,进入子节点,k减1(跳过当前节点)cur*=10;k--;}}returncur;}// 计算以cur为根节点的子树中,<=n的节点总数privateintgetSteps(intcur,longn){intsteps=0;longfirst=cur;// 当前层起始节点longlast=cur;// 当前层结束节点while(first<=n){// 累加当前层的节点数,防止last超出nsteps+=Math.min(last,n)-first+1;// 进入下一层first*=10;last=last*10+9;}returnsteps;}

小贴士

  • k--是为了将1-based的输入转换为0-based计数
  • first/last必须用long类型,避免int乘法溢出;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/17 1:32:49

嵌入式编码器(Embedded Coder)

嵌入式编码器&#xff08;Embedded Coder&#xff09;是 MathWorks 提供的一个工具&#xff0c;它可以将 MATLAB 和 Simulink 模型自动转换成 C 和 C 代码&#xff0c;以便在嵌入式硬件上运行。这为嵌入式系统的开发提供了极大的便利&#xff0c;尤其是在需要高性能和实时处理能…

作者头像 李华
网站建设 2026/2/16 9:06:48

深度解析:Redis如何解决大数据热点问题

深度解析&#xff1a;Redis如何解决大数据热点问题关键词&#xff1a;Redis、热点问题、缓存击穿、缓存穿透、热点发现、流量削峰、分布式锁摘要&#xff1a;在高并发场景下&#xff0c;Redis作为“内存数据库急先锋”&#xff0c;常因某个Key被百万次访问&#xff08;热点Key&…

作者头像 李华