BM18 二维数组中的查找
题目描述
给定一个每个元素都是升序数组的二维数组和一个target,判断target是否在数组中
返回boolean类型
思路分析
- 方法一: 遍历每个元素,判断是否相等
- 方法二:将数组拍平,也就是数组扁平化,之后在判断里面有没有该target
- 方法三:对每个子数组都是用二分查找法,去判断其中有没有
代码参考
const Find1 = function (target, array) {
for (let arr of array) {
for (let ar of arr) {
if (ar === target) return true
}
}
return false
}
const Find2 = function (target, array) {
// toString之后再做处理
// return array.toString().split(',').map(item => Number(item)).includes(target)
// 自带的flat方法
return array.flat().includes(target)
}
function Find (target, array) {
for (let arr of array) {
let len = arr.length
if (!len) {
// 如果子元素是个空元素,则直接跳过
continue
}
// 二分查找
let [left, right] = [0, len - 1]
while (left <= right) {
let mid = left + Math.floor((right - left) / 2)
if (target === arr[mid]) return true
else if (target < arr[mid]) right = right - 1
else left = left + 1
}
console.log('没有找到')
}
return false
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理