当前位置: 首页 > news >正文

C语言 | Leetcode C语言题解之第542题01矩阵

题目:

题解:

/*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/
typedef struct{int x;int y;
}coordinate;//坐标结构体int** updateMatrix(int** mat, int matSize, int* matColSize, int* returnSize, int** returnColumnSizes){int dx[4]={-1,0,1,0};//用作坐标偏移int dy[4]={0,-1,0,1};//新建队列,存放坐标数组coordinate* queue=(coordinate*)malloc(sizeof(coordinate) * 10240);int front=0;int rear=0;//设置结果数组返回值*returnSize=matSize;*returnColumnSizes=matColSize;//returnColumnSizes是一个二级指针,解引用之后是一个一级指针,可以直接等于//定义二级指针,申请空间构建二维数组当结果int** result=(int**)malloc(sizeof(int*) * matSize);//申请matSize个空间存储每一个行指针for(int i=0;i<matSize;i++){//result[i]=(int*)malloc(sizeof(int) * (*matColSize)); *(result+i)=(int*)malloc(sizeof(int) * (*matColSize));//给行指针申请*matColSize个空间//初始化二维数组--原数组为0的地方初始化为0,为1的地方初始化化为max,方便后面进行距离比较for(int j=0;j<*matColSize;j++){if(mat[i][j]==0){result[i][j]=0;queue[rear].x=i;queue[rear].y=j;//将该坐标入队rear++;//队尾指针后移一位,指向空}else{result[i][j]=INT_MAX;//INT_MAX --> 整数类型所能表达的最大值}}}//开始进行广度优先搜索int x,y;//扩散后的坐标while(front!=rear){for(int i=0;i<4;i++){x=queue[front].x+dx[i];y=queue[front].y+dy[i];if(x>=0 && x<matSize && y>=0 && y<*matColSize){//result[x][y]为INT_MAX的时候if(result[x][y] > result[queue[front].x][queue[front].y]+1){result[x][y] = result[queue[front].x][queue[front].y]+1;queue[rear].x=x;//将新的已经被赋值所求距离的位置坐标入队queue[rear].y=y;rear++;}}}front++;//队列头指针后移,接着往后遍历}return result;
}
http://www.lryc.cn/news/478363.html

相关文章:

  • 论文阅读笔记:Image Processing GNN: Breaking Rigidity in Super-Resolution
  • 前端介绍|基础入门-html+css+js
  • [WSL][桌面][X11]WSL2 Ubuntu22.04 安装Ubuntu桌面并且实现GUI转发(Gnome)
  • PMC如何根据实际情况调整生产作业计划?
  • unity中 骨骼、纹理和材质关系
  • 18、论文阅读:AOD-Net:一体化除雾网络
  • Hadoop生态圈框架部署(五)- Zookeeper完全分布式部署
  • 【机器学习】聚类算法分类与探讨
  • MySQL中distinct与group by之间的性能进行比较
  • 计算机视觉读书系列(1)——基本知识与深度学习基础
  • 怎么查看navicat的数据库密码
  • webrtc前端播放器完整案例
  • GORM优化器和索引提示
  • linux驱动-i2c子系统框架学习(1)
  • 元戎启行嵌入式面试题及参考答案
  • 【EasyExcel】EasyExcel导出表格包含合计行、自定义样式、自适应列宽
  • es数据同步(仅供自己参考)
  • apt镜像源制作-ubuntu22.04
  • libaom 源码分析: 预测编码过程梳理
  • 从0开始学习Linux——Yum工具
  • 【Linux】Linux管道揭秘:匿名管道如何连接进程世界
  • 【LeetCode】【算法】155. 最小栈
  • 3.3 windows,ReactOS系统中页面的换出----1
  • QCustomPlot添加自定义的图例,实现隐藏、删除功能(二)
  • Linux云计算 |【第五阶段】CLOUD-DAY8
  • 岛屿数量 广搜版BFS C#
  • hive切换表底层文件类型以及分隔符
  • ChatGPT o1与GPT-4o、Claude 3.5 Sonnet和Gemini 1.5 Pro的比较
  • asp.net文件防盗链
  • 【日志】力扣58.最后一个单词的长度//14.最长公共前缀//28. 找出字符串中第一个匹配项的下标