[剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]

【问题描述】

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

【坑】

1. 不能以某一行最后一个或者第二行第一个比较大小,进行筛选
2. 从左上开始移动,容易越界 不能保证两个方向一增一减

1 5 9
10 15 16

【解答思路】

1. 遍历

每一行看成有序递增的数组,利用二分查找,通过遍历每一行得到答案
时间复杂度是nlogn

public class Solution {public boolean Find(int target, int [][] array) {for(int i=0;i<array.length;i++){int low=0;int high=array[i].length-1;while(low<=high){int mid=(low+high)/2;if(target>array[i][mid])low=mid+1;else if(target<array[i][mid])high=mid-1;elsereturn true;}}return false;}
}
2.递增
  • 选取右上角或者左下角的元素a[row][col]与target进行比较

  • 当target小于元素a[row][col]时,那么target必定在元素a所在行的左边,即col–;

  • 当target大于元素a[row][col]时,那么target必定在元素a所在列的下边,即row++;

public class Solution {public boolean Find(int [][] array,int target) {int row=0;int col=array[0].length-1;while(row<=array.length-1&&col>=0){if(target==array[row][col])return true;else if(target>array[row][col])row++;elsecol--;}return false;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/425061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[CodeForces-1138B] *Circus 解方程|数学

题意&#xff1a;有两场表演&#xff0c;n个艺术家&#xff0c;根据规则找出我们要挑选的人的编号&#xff0c;输出编号。 规则1 保证每个人只能参加一场表演&#xff0c;也就是同一个艺术家不能出现在两场表演中 规则2 两场表演参演的艺术家的数量是相同的 规则3 第一场可以…

概率论与数理统计

记录概率论与数理统计的笔记。课程是中国大学MOOC 浙江大学的《概率论与数理统计》课程。 本系列所有内容来源于&#xff1a;概率论与数理统计的学习内容来源于中国大学MOOC&#xff0c;以及参考书籍《概率论与数理统计》第四版&#xff0c;浙江大学。 必然的、确定性的事件…

[Leetcode][程序员面试金典][面试题08.03][JAVA][魔术索引][递归][优化]

【问题描述】[简单] 【解答思路】 1. 逐个查找 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(1) public int findMagicIndex(int[] nums) {for (int i 0, length nums.length; i < length; i) {if (i nums[i])return i;}return -1;}2. 逐个查找优化 有序升序…

5如何让进行项目管理

项目管理分为五个过程组

python练习题-day25

class Person:  __key123def __init__(self,username,password):self.usernameusernameself.__passwordpassworddef __get_pwd(self):return self.__passworddef login(self):self.__get_pwd() alexPerson("alex","alex3714") print(alex._Person__passw…

第一章 概率论的基本概念

概率论与数理统计的学习内容来源于中国大学MOOC&#xff0c;以及参考书籍《概率论与数理统计》第四版&#xff0c;浙江大学。 随机现象  在一定条件下&#xff0c;有可能出现多种结果&#xff1b;而且在事情发生前不能知道结果。 随机试验  概念&#xff1a;对随机现象的…

【知识导图】数据结构与算法

[基础知识点] 10 个数据结构&#xff1a;数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树&#xff1b; 10 个算法&#xff1a;递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法 [学习技巧] 学习它的“来历”“…

CF 1174 D. Ehab and the Expected XOR Problem 异或技巧

题意就是给我们两个数n,x。让我们构造个数组&#xff0c;数组有三个条件 1.要有尽可能多的元素 2.要其中任何一段数字的异或和不等于0和x 3.元素的范围是[ 1, 2n2^n2n&#xff09; 分析&#xff1a;如果对异或足够敏感的话 应该能想到其中第二个条件的意思&#xff0c;其实…

第三十七期:刷脸支付叫好不叫座,为啥消费者和商家都不愿用先进科技?

移动支付相信大多数人都不陌生&#xff0c;中国移动支付的普及被人称为“新四大发明”&#xff0c;在中国移动支付产品发展如火如荼的今天&#xff0c;刷脸支付成为了新的时尚&#xff0c;然而这个时尚的支付方式却显得叫好不叫座&#xff0c;刷脸支付的问题到底出在哪了? 移动…

Hadoop 配置文件 启动方式

配置文件&#xff1a; 默认的配置文件&#xff1a;相对应的jar 中 core-default.xml hdfs-default.xml yarn-default.xml mapred-default.xml 自定义配置文件$HADOOP_HOME/etc/hadoop/ core.site.xml hdfs-site.xml yarn-site.xml mapredu-site.xml 启动方式&#xff1a; 各个服…

第二章 随机变量

随机变量  目标&#xff1a;将实验结果数量化。实验结构有数字型和非数字型。数字型&#xff1a;降雨量、上车人数等。非数字型&#xff1a;晴天/阴天/下雨、化验结果阴性/阳性等。  定义&#xff1a;随机试验样本空间S&#xff0c;如果XX(e)为定义在S上的实数单值函数&…

[Leetcode][第632题][JAVA][最小区间][堆][滑动窗口]

【问题描述】[困难] 【解答思路】 1. 堆 复杂度 class Solution {public int[] smallestRange(List<List<Integer>> nums) {//区间的左边和右边int rangeLeft 0, rangeRight Integer.MAX_VALUE;//最小范围int minRange rangeRight - rangeLeft;//区间的左边最…

第十期:过去50年间,十大热门语言及发明者大盘点

本文收集了十大热门编程语言背后的程序员和设计者的名字和大家分享。以下是十大热门编程语言及其创建者&#xff0c;排名不分先后。 软件领域有许多编程语言&#xff0c;每年还涌现出越来越的新语言。新发布的语言有Scala、Kotlin、Go和Closure&#xff0c;但历史证明&#xff…

2018-2019-2 20165212《网络攻防技术》Exp5 MSF基础应用

2018-2019-2 20165212《网络攻防技术》Exp5 MSF基础应用 攻击成果 主动攻击的实践 ms17010eternalblue payload windows/x64/meterpreter/reverse_tcp&#xff08;成功&#xff09;payload generic/shellreversetcp&#xff08;成功&#xff09;ms17010psexec&#xff08;成功且…

【数据结构与算法】复杂度分析

一、什么是复杂度分析&#xff1f; 1.数据结构和算法解决是“如何让计算机更快时间、更省空间的解决问题”。 2.因此需从执行时间和占用空间两个维度来评估数据结构和算法的性能。 3.分别用时间复杂度和空间复杂度两个概念来描述性能问题&#xff0c;二者统称为复杂度。 4.复杂…

第十一期:30秒内便能学会的30个实用Python代码片段

许多人在数据科学、机器学习、web开发、脚本编写和自动化等领域中都会使用Python&#xff0c;它是一种十分流行的语言。 Python流行的部分原因在于简单易学。 本文将简要介绍30个简短的、且能在30秒内掌握的代码片段。 1. 唯一性 以下方法可以检查给定列表是否有重复的地方&…

使用scikit中的聚类

这是一次数据实验。基于七月算法邹博讲义和scikit-lean官网。 聚类&#xff1a;就是对大量未知标注的数据集&#xff0c;按数据的内在相似性将数据划分为多个类别&#xff0c;使得类别内的数据相似性较大而类别间的相似性较小。 1 k-means算法  参数&#xff1a;聚类的数目…

概率中比较重要的知识

-什么是协方差&#xff1f; 就是衡量两个随机变量&#xff08;X,YX,YX,Y&#xff09;之间相关性的量&#xff0c;取多个两个量的样本&#xff0c;通过判断他们大小变化关系&#xff0c;判断这两个量是正相关还是负相关或无相关。 记做&#xff1a;Cov(X,Y)E[(X−E(X))(Y−E(Y)…