JZ01 -二维数组中的查找(JS)


题目介绍:滑动窗口最大值问题


在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。


加入知识分享 : JS定义和赋值二维数组


定义二维数组

var array  = [];

var rowCount = 3;  //定义二维数组的行数
var colCount = 3;  //定义二维数组的列数
for(var i = 0 ; i < rowCount; i++){
	array[i] = [];
	for(var j = 0; j < colCount; j++){
	//二维数组全部初始化为0
	array[i][j] = 0;
	}
}

在这里插入图片描述

//二维数组定义
var array = [[0,1,2],[3,4,5],[6,7,8]];


题目解析:


    function FindTarget(target,array){
        //取到每行的标记rowCount
        var rowCount = array.length - 1;

        //分别用i,j来表示对应的行和列
        var i ,j;

        //i代表行,j代表列,条件 i >= 0 && j < array[i].length; 确保查询元素不会越界
        for(i = rowCount, j = 0; i >= 0 && j < array[i].length;){
            //如果查询到了该数
            if(target == array[i][j]){
                return true;
            }  else if(target > array[i][j]){
                //如果这个数大于二维数组当前的元素,那么就依次向后移动j  从array[2][0] -> array[2][1] 等等
                j++;
                //继续执行
                continue;  
            }  else if(target < array[i][j]){
                //如果这个数小于二维数组当前的元素,那么就依次向后移动j  从array[2][0] -> array[1][0] 等等
                i--;
                continue;
            }
            
        }
        // 否则的话,返回false
        return false;
    }


测试结果:


在这里插入图片描述
念念不忘,必有回响!

根据提供的引用内容,问题是关于在一个二维数组查找一个整数的。这个二维数组的特点是每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。给定一个目标整数,要判断数组是否存在该整数。 根据引用的代码,可以使用两个针i和j来遍历二维数组,从右上角开始。如果当前元素等于目标整数,则返回True;如果当前元素大于目标整数,则向左移动j;如果当前元素小于目标整数,则向下移动i。重复这个过程直到找到目标整数或者遍历完整个数组。如果遍历完整个数组都没有找到目标整数,则返回False。 根据引用的思路1,可以先判断数组是否为空。如果数组为空,则直接返回False。然后遍历每一行,如果当前行的第一个数大于目标整数,则说明该行及其之后的行都不存在目标整数,可以直接退出循环。如果当前行的最后一个数小于目标整数,则说明该行的所有数都比目标整数小,继续查找下一行。否则,在当前行比对查找,如果找到目标整数,则返回True。如果遍历完整个数组都没有找到目标整数,则返回False。 所以,根据以上的方法和思路,可以用以下的代码来实现: ``` class Solution: def Find(self, target, array): if len(array) == 0: return False elif len(array > target: break if array[i][n-1 < target: continue else: for item in array[i]: if item == target: return True return False ``` 这样,就可以通过调用`Solution`类的`Find`方法来判断二维数组是否存在目标整数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [JZ1 二维数组查找 python](https://blog.csdn.net/qq_42187809/article/details/119544063)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [python JZ4 二维数组查找offer)](https://blog.csdn.net/qq_45894553/article/details/121388712)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值