最小基因变化
题目链接: https://leetcode.cn/problems/minimum-genetic-mutation
解题思路:
判断
startGene
与endGene
是否相等,相等直接返回0将
bank
转成map
,判断endGene
是否在bank
中,不在直接返回-1从
startGene
开始处理,将每个字符用ACGT
中与之不同的字符进行替换,并判断生成的新的基因是否在bank
中,如果在,则判断是否是endGene
,若是,则返回step+1
,否则重新组建step
存入队列,同时将该基因从bank
中删除(若后续基因变换出现重复,那变换次数必然比这次多,所以可以直接从bank
中移除不用判断是否重复)重复步骤3,直至找到
endGene
或者queue
清空,若queue
清空,则返回-1
复杂度分析
时间复杂度: 时间复杂度为,为基因序列的长度,为
bank
的长度,为基因的字符个数ACGT
空间复杂度: 空间复杂度为,为基因序列的长度,为
bank
的长度,为基因的字符个数ACGT
最后更新于