2021-12-30:分裂问题。 一个数n,可以分裂成一个数组[n/2, n%2, n/2], 这个数组中哪个数不是1或者0,就继续分裂下去。 比如 n = 5,一开始分裂成[2, 1, 2], [2
2021-12-30:分裂问题。
一个数n,可以分裂成一个数组[n/2, n%2, n/2],
这个数组中哪个数不是1或者0,就继续分裂下去。
比如 n = 5,一开始分裂成[2, 1, 2],
[2, 1, 2]这个数组中不是1或者0的数,会继续分裂下去,比如两个2就继续分裂,
[2, 1, 2] -> [1, 0, 1, 1, 1, 0, 1],
那么我们说,5最后分裂成[1, 0, 1, 1, 1, 0, 1]。
每一个数都可以这么分裂,在最终分裂的数组中,假设下标从1开始,
给定三个数n、l、r,返回n的最终分裂数组里[l,r]范围上有几个1。
n <= 2 ^ 50,n是long类型,
r - l <= 50000,l和r是int类型。
我们的课加个码:
n是long类型随意多大都行,
l和r也是long类型随意多大都行,但要保证l<=r。
来自腾讯。
答案2021-12-31:
每次裂变都放到map中。
时间复杂度:O(logN)。
空间复杂度:O(logN)。
代码用golang编写。代码如下:
package mainimport "fmt"func main() {ret := nums2(5, 4, 7)fmt.Println(ret)
}func nums2(n, l, r int) int {allMap := make(map[int]int)return dp(n, l, r, allMap)
}func size(n int) int {if n == 1 || n == 0 {return 1} else {half := size(n / 2)return (half << 1) + 1}
}func dp(n, l, r int, allMap map[int]int) int {if n == 1 || n == 0 {return twoSelectOne(n == 1, 1, 0)}half := size(n / 2)all := (half << 1) + 1mid := n & 1if l == 1 && r >= all {if _, ok := allMap[n]; ok {return allMap[n]} else {count := dp(n/2, 1, half, allMap)ans := (count << 1) + midallMap[n] = ansreturn ans}} else {mid = twoSelectOne((l > half+1 || r < half+1), 0, mid)left := twoSelectOne(l > half, 0, dp(n/2, l, getMin(half, r), allMap))right := twoSelectOne(r > half+1, dp(n/2, getMax(l-half-1, 1), r-half-1, allMap), 0)return left + mid + right}
}func twoSelectOne(c bool, a, b int) int {if c {return a} else {return b}
}func getMax(a, b int) int {if a > b {return a} else {return b}
}func getMin(a, b int) int {if a < b {return a} else {return b}
}
执行结果如下:
左神java代码
2021-12-30:分裂问题。 一个数n,可以分裂成一个数组[n/2, n%2, n/2], 这个数组中哪个数不是1或者0,就继续分裂下去。 比如 n = 5,一开始分裂成[2, 1, 2], [2相关推荐
- 东软始业教育结业考试 2021.12.30
一.单选题 1企业文化的三个层次包括精神理念层,()和形象物质层.1分/1分 A.行为管理层 B.行为制度层 C.制度理念层 D.管理制度层 提交答案:B正确答案:B 展开解析 2中国最大的离岸软件外 ...
- 2021.1.30课程摘要(逻辑教育-王劲胜)
2021.1.30课程摘要 逻辑教育-13期-Python基础班-王劲胜 一.集合 二.函数(上) 三.作业讲解 逻辑教育-13期-Python基础班-王劲胜 一.集合 1.集合简介 • 集合表现形式 ...
- 2021.03.30【2021省赛】模拟 比赛总结
2021.03.30[2021省赛]模拟 比赛总结 地址: https://gmoj.net/senior/#contest/home/3350 T1: 神奇纸牌(uno) T2: 凌乱平衡树 (tr ...
- 2021.12.20-12.26 AI行业周刊(第77期):平平淡淡的人生
篇章一:人生的真谛 不知不觉,2021年已经走到了年尾,下周再看到周刊的文章时,已经是2022年了. 回想这一年,年前树立的目标实现了吗?是否有遗憾?有憧憬? 上周去青岛出差,参与公司一个政府AI项目 ...
- Java初级知识复习-2021.12.27~2022.02.09
文章目录 Java语法基础1 1.Java简介 Java三大版本含义 Java的特性和核心优势 2.Java开发环境配置 Java应用程序的运行机制 开发环境搭建 3.Java基础语法 4.Java基 ...
- DayDayUp:吴晓波—2018.12.30年终秀——《预见2019:国运70》演讲重点概览【文字+视频】
DayDayUp:吴晓波-2018.12.30年终秀--<预见2019:国运70>演讲重点概览[文字+视频] 目录 一.回顾2018 回看2017年终秀的8个预言 五大悬念 二.展望201 ...
- 2021/10/30的1+X大数据Java答案
2021/10/30 步骤二 public Member() { }public Member(String name,String pwd,float score,int rank) {this.n ...
- 2021.12.6-12.12 AI行业周刊(第75期):AI流程化
篇章一:AI流程化 如果深度参与很多的人工智能项目,很多人会发现,大多数的项目都是长尾场景. 以城市管理和工业视觉两个方向为例,城市管理更偏向于智慧城市.智慧交通等领域,而工业视觉则偏向于工业自动化领 ...
- 2021.12.28activiti
2021.12.28activiti 1.使用流程 部署activiti activiti是一个工作流引擎(其实就是一堆jar包api),业务系统访问(操作)activiti的接口,就可以方便的操作流 ...
最新文章
- oracle rodo 查看大小,Checkpoint not complete故障
- 奚记--最简洁的记账软件
- 前端学习(799):根据位置返回字符
- bmp280c语言程序,51单片机读取BMP280 180 280气压值1602显示程序
- ArcGIS API + Echarts 实现动态雷达图
- Site-Site Ipsec ×××配置和验证
- ip-guard网页浏览放开微信二维码和QQ截图
- pde中微元分析法的主要思想_有限元法(FEM)
- 测试网卡芯片型号的软件,查看电脑无线网卡型号_查看无线网卡芯片型号
- 用观察者模式设计一个气象台
- URL是什么意思?基础知识普及
- html制作钢铁侠心脏,心脏术后我变成了“钢铁侠”
- 远程控制计算机显示为什么不能满屏,win7系统连接远程桌面却不能全屏显示的解决方法...
- 2017-4-15,16_akala啦_新浪博客
- Windows10 错误代码:0xc000007b 问题解决
- 三大主流Mac清理软件实测:Cleaner One | 柠檬清理 | CleanmyMac
- 【Oracle】plsql连接64位的Oracle
- webpack2.0+ vue2.0
- 微软新冠病毒感染员工的自白
- 一键清理浏览器缓存bat文件