程序员面试金典17.18_go_最短超串
题目【程序员面试金典17.18_go_最短超串】假设你有两个数组 , 一个长一个短 , 短的元素均不相同 。
找到长数组中包含短数组所有的元素的最短子数组 , 其出现顺序无关紧要 。
返回最短子数组的左端点和右端点 , 如有多个满足条件的子数组 , 返回左端点最小的一个 。 若不存在 , 返回空数组 。
示例 1:输入:big = [7,5,9,0,2,1,3,5,7,9,1,1,5,8,8,9,7] small = [1,5,9] 输出: [7,10]
示例 2:输入: big = [1,2,3] small = [4] 输出: []
提示: big.length <= 100000
1 <= small.length <= 100000
解题思路分析1、滑动窗口;时间复杂度O(n) , 空间复杂度O(n)
文章插图
func shortestSeq(big []int, small []int) []int { res := make([]int, 0) m := make(map[int]int) for i := 0; i < len(small); i++ {m[small[i]]++ } total := len(m) j := 0 for i := 0; i < len(big); i++ {m[big[i]]--if m[big[i]] == 0 {total--}for total == 0 {m[big[j]]++if m[big[j]] > 0 {total++if len(res) == 0 || res[1]-res[0] > i-j {res = []int{j, i}}}j++} } return res}
总结Medium题目 , 滑动窗口题目
- 程序员为教师妻子开发应用:将iPhone变成文档摄像头
- 悔哭!一程序员误把7500个比特币当垃圾扔掉,估算约2.4亿美元
- 2.4亿美元打水漂!程序员小哥把7500个比特币当垃圾扔掉 硬盘找不回
- 程序员开发抢茅台脚本:2天就刷榜Github
- 为什么我喜欢C语言,却非常讨厌C++?一位国外程序员的回答
- 程序员怎么保护头发?雷军回应
- 北美程序员Tinder翻车实录
- 导航|攻坚“卫星导航信号弱”难题,高德程序员联手武大学子夺得国际室内定位大赛冠军
- 长沙|视频|聚焦“数字英雄”长沙银行冠名全国首档程序员电视真人秀
- 孙玲|从流水线女工逆袭成高薪程序员 一度爆红的她现在咋样了?