leetcode 面试题 17.22. 单词转换(DFS+回溯)
- 题目描述
- 思路分析
这题回溯,先想出它的空间解是什么,这里空间解,其实就是给的原字符串到结束字符串中间的变形过程,那么就可以容易的画出一个解空间树,用深度搜索进行搜索,
剪枝后,进入下一个维度,再进行搜索,最后到达出口即得到结束字符串时,将结果返回,放下脚本
class Solution {
public:
bool judge(string& a,string& b)
{
if(a.size()!=b.size()) return false;
int count=0;
for(int i=0;i<a.size();i++)
{
if(a[i]!=b[i])
{
count++;
}
}
return count==1;
}
bool findres(string &curWord,string& endWord,vector<string>& wordList,vector<bool> &visit,vector<string>& result)
{
if(curWord==endWord) return true;
for(int i=0;i<wordList.size();i++)
{
if(visit[i]||!judge(curWord,wordList[i])) continue;
visit[i]=true;
result.push_back(wordList[i]);
if(findres(wordList[i],endWord,wordList,visit,result)) return true;
result.pop_back();
}
return false;
}
vector<string> findLadders(string beginWord, string endWord, vector<string>& wordList) {
vector<string> result={beginWord};
vector<bool> visit(wordList.size(),false);
if(findres(beginWord,endWord,wordList,visit,result))
{
return result;
}
return vector<string>();
}
};
回溯法学习链接:https://blog.csdn.net/shinanhualiu/article/details/52016481
leetcode 面试题 17.22. 单词转换(DFS+回溯)的更多相关文章
- leetcode面试题 17.16. 按摩师
leetcode面试题 17.16. 按摩师 又一道动态规划题目 动态规划的核心就是总结出一个通行的方程. 但是这道题似乎不太适合使用递归的方式. 所以使用for循环遍历数组. class Solut ...
- [LeetCode] 79. 单词搜索(DFS,回溯)
题目 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单元格 ...
- [LeetCode]面试题67. 把字符串转换成整数
题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...
- Leetcode面试题17.20_连续中值
题目地址 实现一个数列的动态添加和查询中位数. 复杂点的话应该可以写个平衡树什么的,然后查询第k大,还可以删除数字. 简单点的话显然可以维护两个堆,一个大顶堆一个小顶堆,而且大顶堆最多比小顶堆多一个, ...
- 最短路径算法-Dijkstra算法的应用之单词转换(词梯问题)(转)
一,问题描述 在英文单词表中,有一些单词非常相似,它们可以通过只变换一个字符而得到另一个单词.比如:hive-->five:wine-->line:line-->nine:nine- ...
- LeetCode刷题 DFS+回溯
一.DFS介绍 二.LeetCode 实战 LC 17. 电话号码的字母组合 解法思路 解题步骤 代码 LC 79. 单词搜索 解题思路 解题步骤 代码 LC 46. 全排列 解题思路一 解题步骤 代 ...
- [CareerCup] 18.10 Word Transform 单词转换
18.10 Given two words of equal length that are in a dictionary, write a method to transform one word ...
- C#刷遍Leetcode面试题系列连载(4) No.633 - 平方数之和
上篇文章中一道数学问题 - 自除数,今天我们接着分析 LeetCode 中的另一道数学题吧~ 今天要给大家分析的面试题是 LeetCode 上第 633 号问题, Leetcode 633 - 平方数 ...
- C# 刷遍 Leetcode 面试题系列连载(3): No.728 - 自除数
前文传送门: C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介 C#刷遍Leetcode面试题系列连载(2): No.38 - 报数 系列教程索引 传送门:https://enjoy2 ...
随机推荐
- Mybatis Mapper 映射文件(xxxMapper.xml)
什么是 Mapper 映射文件 Mapper 映射文件是 Mybatis 用于实现 ORM 映射规则的配置文件,Mybatis 通过映射文件可将数据库查询结构映射为 Java 对象. 创建 Mappe ...
- 网上的说TB6560存在的问题
https://www.amobbs.com/thread-5506456-2-1.html
- python3 贪吃蛇小游戏
贪吃蛇 #!/usr/bin/env python import pygame,sys,time,random from pygame.locals import * # 定义颜色变量 redColo ...
- [源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
[源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 目录 [源码解析] 深度学习分布式训练框架 Horovod --- (1) 基础知识 0x00 摘要 0x01 分布式并 ...
- Python+Selenium自动化-设置等待三种等待方法
Python+Selenium自动化-设置等待三种等待方法 如果遇到使用ajax加载的网页,页面元素可能不是同时加载出来的,这个时候,就需要我们通过设置一个等待条件,等待页面元素加载完成,避免出现 ...
- node.js学习(2)函数
1 简答函数 2 匿名函数 3 回调函数
- 面部表情视频中进行远程心率测量:ICCV2019论文解析
面部表情视频中进行远程心率测量:ICCV2019论文解析 Remote Heart Rate Measurement from Highly Compressed Facial Videos: an ...
- MindSpore图像分类模型支持(Lite)
MindSpore图像分类模型支持(Lite) 图像分类介绍 图像分类模型可以预测图片中出现哪些物体,识别出图片中出现物体列表及其概率. 比如下图经过模型推理的分类结果为下表: 类别 概率 plant ...
- 编写CUDA内核
编写CUDA内核 介绍 与用于CPU编程的传统顺序模型不同,CUDA具有执行模型.在CUDA中,编写的代码将同时由多个线程(通常成百上千个)执行.解决方案将通过定义网格,块和线程层次结构进行建模. N ...
- Java IO学习笔记一:为什么带Buffer的比不带Buffer的快
作者:Grey 原文地址:Java IO学习笔记一:为什么带Buffer的比不带Buffer的快 Java中为什么BufferedReader,BufferedWriter要比FileReader 和 ...