[74] 搜索二维矩阵

复制代码
 1 /**
 2  * @param {number[][]} matrix
 3  * @param {number} target
 4  * @return {boolean}
 5  */
 6 const searchMatrix = function (matrix, target) {
 7   const yLen = matrix.length;
 8   const xLen = matrix[0].length;
 9   if (matrix[0][0] > target || matrix[yLen - 1][xLen - 1] < target) {
10     return false;
11   }
12   let sx = 0; let sy = 0; let ex = xLen - 1; let ey = yLen - 1;
13   let midx, midy;
14   while (ey > sy || (ey === sy && ex >= sx)) {
15     if ((ey + sy) % 2 === 0) {
16       midy = (ey + sy) / 2;
17       midx = ~~((ex + sx) / 2);
18     } else {
19       midy = (ey + sy) / 2 >> 0;
20       if (ex > xLen - sx - 1) {
21         midx = ~~((ex - (xLen - sx - 1)) / 2);
22         midy += 1;
23       } else {
24         midx = ~~((xLen + sx - 1 - ex) / 2);
25       }
26     }
27     if (matrix[midy][midx] === target) {
28       return true;
29     } else if (matrix[midy][midx] > target) {
30       if (midx === 0) {
31         ey = midy - 1;
32         ex = xLen - 1;
33       } else {
34         ey = midy;
35         ex = midx - 1;
36       }
37     } else if (midx === xLen - 1) {
38       sy = midy + 1;
39       sx = 0;
40     } else {
41       sy = midy;
42       sx = midx + 1;
43     }
44   }
45   return false;
46 };
复制代码

 

posted @   人恒过  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示