本系列将会不定时更新剑指offer一书,牛客网的题目解析
致力于用流程图和画图解释清楚思路
1.
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param numbers int整型一维数组
* @param numbersLen int numbers数组长度
* @return int整型
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
int duplicate(int* numbers, int numbersLen ) {
if(numbersLen!=0)
{ for(int i=0;i<numbersLen;i++){
if(numbers[i]>numbersLen-1||numbers[i]<0)
return -1;
}
int* p=numbers;
int i=numbersLen;
int count=0;
int j,c;
for(int c=0;c<i;c++){
for( j=1;j<numbersLen-c;j++){
if(*p==*(p+j))
goto flag;
count++;
}
p++;
}
flag:return *p;
if(count==j*c)
return 0;
}
else
return -1;
}
2.
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param target int整型
* @param array int整型二维数组
* @param arrayRowLen int array数组行数
* @param arrayColLen int* array数组列数
* @return bool布尔型
*
* C语言声明定义全局变量请加上static,防止重复定义
*/#include<stdbool.h>
bool Find(int target, int** array, int arrayRowLen, int* arrayColLen ) {
// write code here
int row=0;int cols=*arrayColLen-1;
if(target<array[0][0]||target>array[arrayRowLen-1][cols])
return false ;
while(row<arrayRowLen&&cols>=0){
if(target==array[row][cols])
return true ;
else if(target>array[row][cols])
row++;
else
cols--;
}
return false;
}
创作不易,感谢观看