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

C语言 | Leetcode C语言题解之第433题最小基因变化

题目:

题解:

int minMutation(char * start, char * end, char ** bank, int bankSize) {int m = strlen(start);int **adj = (int **)malloc(sizeof(int *) * bankSize);int endIndex = -1;for (int i = 0; i < bankSize; i++) {adj[i] = (int *)malloc(sizeof(int) * bankSize);memset(adj[i], 0, sizeof(int) * bankSize);}for (int i = 0; i < bankSize; i++) {if (!strcmp(end, bank[i])) {endIndex = i;}for (int j = i + 1; j < bankSize; j++) {int mutations = 0;for (int k = 0; k < m; k++) {if (bank[i][k] != bank[j][k]) {mutations++;}if (mutations > 1) {break;}}if (mutations == 1) {adj[i][j] = 1;adj[j][i] = 1;}}}if (endIndex == -1) {return -1;}int *queue = (int *)malloc(sizeof(int) * bankSize);bool *visited = (bool *)malloc(sizeof(bool) * bankSize);memset(visited, 0, sizeof(bool) * bankSize);int head = 0;int tail = 0;int step = 1;for (int i = 0; i < bankSize; i++) {int mutations = 0;for (int k = 0; k < m; k++) {if (start[k] != bank[i][k]) {mutations++;}if (mutations > 1) {break;}}if (mutations == 1) {queue[tail++] = i;visited[i] = true;}}        while (head != tail) {int sz = tail - head;for (int i = 0; i < sz; i++) {int curr = queue[head++];if (curr == endIndex) {for (int i = 0; i < bankSize; i++) {free(adj[i]);}free(adj);free(queue);free(visited);return step;}for (int j = 0; j < bankSize; j++) {if (visited[j] || !adj[curr][j]) {continue;}visited[j] = true;queue[tail++] = j;}}step++;}for (int i = 0; i < bankSize; i++) {free(adj[i]);}free(adj);free(queue);free(visited);return -1; 
}

http://www.mrgr.cn/news/34765.html

相关文章:

  • 如何在Java后端中实现弹性伸缩:从线程池到容器化的完整指南
  • 手势手语识别数据集,YOLOv5目标检测两个数据集,图大量,模型精度高分别为近100类
  • vue2知识汇总
  • 【vue-media-upload 升级玩法】一个页面用两个Uploader,一个上传图片,一个上传视频(分开传,容易分开设置和展示图片和视频)
  • 库仑定律-库仑力-两个电荷之间静电力的计算公式
  • fo-dicom是如何实现DICOM 的网络通信功能
  • 远程升级,你成功了吗?
  • 【漏洞复现】HIKVISION 视频编码设备接入网关 showFile.php 任意文件下载漏洞
  • 解决方案:TypeError:float() argument must be a string or a number,not “NoneType”
  • OmniPeek 空口抓包软件安装指导
  • vue3知识汇总
  • 扩大产品库存怎么破?手把手教你,全开源哦!
  • JavaScript 是一种令人着迷但也充满争议的编程语言
  • 综合题第二题(路由器的配置)
  • PhpStudy —— README
  • 热斑黄斑光伏发电板 红外黄斑检测图像数据集内含最高温度信息 1200张,jpg格式。
  • 分库分表-分页排序查询
  • Golang | Leetcode Golang题解之第题432题全O(1)的数据结构
  • Golang | Leetcode Golang题解之第433题最小基因变化
  • GNU链接器(LD):LMA、VMA等链接脚本基本概念