方法2不能返回1,返回是是坐标
题目要求://杨氏矩阵 有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); (题目出自剑指offer,曾经是华为的面试题) 例如:数组: 1 2 3  4 5 67 8 9  代码如下: #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include <stdlib.h>//方法一:最简单最挫的解法int main(){ int arr[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int i = 0; int j = 0; int key = 0; int x = 3; int y = 3; printf("请输入要查找的数:"); scanf("%d", &key); for (i = 0; i < x; i++) {  for (j = 0; j < y;j++)  if (key == arr[i][j])   printf("找到了\n");  else   printf("找不到\n"); } return 0;}方法二:struct Ret{ int x; int y;};struct Ret search(int arr[3][3], int k, int row, int col){ int x = 0; int y = col-1; struct Ret ret = {-1, -1}; while((x<row)&&(y>=0)) {  if(k>arr[x][y])  {   x++;  }  else if(k == arr[x][y])  {   ret.x = x;   ret.y = y;   return ret;  }  else  {   y--;  } } return ret;}int main(){ int arr[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int key = 0; printf("请输入要查找的数:"); scanf("%d", &key); struct Ret ret = {0}; ret = search(arr, key,3,3); if (ret == 1)  printf("找到了\n"); else  printf("找不到\n"); system("pause"); return 0;}//方法三 int search(int arr[3][3], int k, int* px, int *py){ int x = 0; int y = *py-1; while((x<*px)&&(y>=0)) {  if(k>arr[x][y])//  {   x++;  }  else if(k == arr[x][y])//找到了打印位置  {   *px = x;   *py = y;   printf("x=%d y=%d\n",x,y);   return 1;  }  else  {   y--;  }   } //如果找不到返回{-1,-1} *px = -1; *py = -1;}int main(){ int arr[3][3] = {1,2,3,4,5,6,7,8,9};  int key =0; printf("请输入要查找的数:"); scanf("%d", &key);    int ret = 0; int x = 3; int y = 3;  ret=search(arr, key, &x, &y); if (ret==1)  printf("找到了\n"); else  printf("找不到\n"); system("pause"); return 0;} 本人初出茅庐,编程能力匮乏,望各路大牛指正
点赞 0
评论 2
全部评论

相关推荐

02-01 12:05
复旦大学 Java
腾讯的提前批大概率应该是没有笔试的,但是这个时候有相当部分的同学简历估计都没有准备好,没准备好的同学也不用急,大部分都是3月之后开,这个时候开的绝大多数都是神仙打架,问的东西也比较难,打算投递的同学也多看下计算机网络和操作系统,腾讯对这部分的知识问的比较多。另外多刷下牛客的热门题库,刷题注意刷ACM模式,和牛客的周赛题,腾讯有的部门会从这里面出原题。我是@程序员花海关注我,带你了解更多校招资讯!
程序员花海:还没有来得及准备的同学可以看下学习路线:https://www.nowcoder.com/discuss/824693499982315520?sourceSSR=users算法题:https://www.nowcoder.com/feed/main/detail/20e7a999fa04485b88340a274411ca0d?sourceSSR=users八股文:https://www.nowcoder.com/discuss/833102362771251200?sourceSSR=users简历书写方式:https://www.nowcoder.com/discuss/839907820706205696?sourceSSR=users都是以前在牛客发的文章~
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
ros275229:社团删了吧,cf因该1200才勉强入门吧,也删了,你可以写算法刷了多少道,都比这个好
点赞 评论 收藏
分享
01-12 20:31
东北大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务