您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

【剑指Offer for JS】在二维数组中找到指定的值。 <源码分享>

  • 时间:2022-09-03 00:37 编辑: 来源: 阅读:312
  • 扫一扫,手机访问
摘要:【剑指Offer for JS】在二维数组中找到指定的值。 <源码分享>
在二维数组中,每行从左到右排序,每列从上到下排序。 请完成一个函数,输入这样一个二维数组和一个整数,判断数组是否能包含整数。 例如,底部的二维数组意味着每行和每列都按升序排序。 如果在这个数组中找到数字7,它将返回true;如果您寻找数字5,因为它不在数组中,您将返回false。 1 8 92 4 9 124 7 10 136 8 11 15最简单也是最残忍的解题方法就是依次遍历数组中的元素。 函数findInMatrixExhaustive(matrix:number[][],target:number):boolean { for(let rowIndex = 0;rowIndex & lt矩阵.长度;rowindex++){ for(let colIndex = 0;colIndex & lt矩阵[rowIndex]。长度;colindex++){ const current = matrix[rowIndex][colIndex];if (current === target) {返回true} } }返回false}使用现有API进行搜索可以看作是第一种方法的变种,但是使用现有API绝对可以简化代码函数finding matrix with API(matrix:number[][],target:number):boolean { return matrix . flat map(item = >;项)。包括(目标);}这种双索引搜索的方法在时间复杂度上优于前两种方法,利用行列索引的移动来逐步找到目标值。 从题目中给出的信息,我们可以知道行和列是按顺序排列的。如果筛选矩阵中的任意一个元素与目标值进行比较,会出现以下三种情况:如果element >: Target,则目标值的可能位置一定在该元素的左上方;如果element < Target,目标值的可能位置必须在元素的右下方;如果element = target,则命中目标值。 通过上面的target-element.png辅助图我们可以看到目标可能重叠的地方,那么有什么办法可以简化这种情况呢?让我们试着把元素移到矩阵的右上角。这时候你会发现重叠的部分消失了!至此,target-element-no-overlap.png将元素和目标的关系简化为:如果element >: Target,则目标必须出现在元素的左侧;如果元素<目标,则目标必须出现在元素下面;如果element=target,则命中目标值。 当我们把上面的方法带入到例子中,会得到如下的过程:target-element-result.png,最后我们匹配了相应的元素,匹配成功。 在匹配过程中,如果行索引超过最大行数或者列索引小于0,则意味着整个矩阵不包含目标元素,匹配失败。 函数findInMatrix(matrix: number[][],target:number):boolean { const rowSize = matrix . length;const columnSize = matrix[0]。长度;if (rowSize === 0) {返回false}设row = 0;设col = columnSize-1;while(row & lt;rowSize & amp& ampcol & gt= 0){ const current = matrix[row][col];if (current === target) {返回true} if(当前& gttarget){-col;} else { ++ row;} }返回false}


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【域名/主机/服务器|】qq邮箱提醒在哪里打开(2024-06-04 18:58)
【技术支持|常见问题】1556原创ng8文章搜索页面不齐(2024-05-01 14:43)
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部