剑指No1
Posted teyues
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指No1相关的知识,希望对你有一定的参考价值。
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
public static void main(String [] args){
int value = 563;
int times = 0;
int n = 10;
int arry[][] = new int[n][n];
//随机生成满足条件的二维数组
for(int i = 0;i<arry.length;i++){
for(int j=0;j<arry[i].length;j++){
if(j==0) {
if(i == 0) {
arry[i][j] = (int) (Math.random() * 100) + 1;
}else{
int rowgap = (int)(Math.random()*100)+1;
arry[i][j] = arry[i-1][j]+rowgap;
}
}else{
if(i ==0){
int columgap = (int)(Math.random()*100)+1;
arry[i][j] = arry[i][j-1]+columgap;
}else{
int rowcolgap = (int)(Math.random()*100)+1;
if(arry[i-1][j]<arry[i][j-1]){
arry[i][j] = arry[i][j-1]+rowcolgap;
}else{
arry[i][j] = arry[i-1][j]+rowcolgap;
}
}
}
}
}
//遍历输出数组 检验数组是否构造正确
for( int i = 0 ;i<arry.length;i++){
for(int j = 0;j<arry[i].length;j++){
if(j<n-1){
System.out.print(arry[i][j]+" ");
}else{
System.out.println(arry[i][j]);
}
}
}
//遍历查找二维数组中是否存在该值
int row = arry.length -1 ;
int colum = 0;
for (int k = row;k>=0; k --){
for(int b = colum ;b<arry.length; b ++){
if(value == (arry[row][colum])){
times =times +1;
System.out.print("Exist the value of "+value+"查找次数为"+times);
}else if(value>(arry[row][colum])){
times = times + 1;
colum =colum + 1;
}else{
times = times + 1;
row = row -1;
break;
}
}
}
System.out.println("查找次数为"+times+"Not exist the value of "+value);
}
以上是关于剑指No1的主要内容,如果未能解决你的问题,请参考以下文章
剑指 Offer 45. 把数组排成最小的数 剑指 Offer 61. 扑克牌中的顺子 剑指 Offer 40. 最小的k个数