利用回溯的写法,对先查找二维数组中与word第一个字符匹配的位置,然后利用对上下左右四个方向对idx位字符进行匹配,能匹配上了再将这个位置传给下一个该函数再次进行下一个字符(idx + 1)的匹配,一直到匹配完成 。
看看别的大哥的思路吧:
剑指 Offer 13. 机器人的运动范围
class Solution {public:int movingCount(int m, int n, int k) {vector
递归+回溯,用一个二维的数组存放机器人是否能到达,初始化为0,若能到达就将该位置的值改为1,最后加以判断,等递归结束,再便利这个二维数组,统计有多少个1就行了 。因为初始位置都是(0,0),所以不需要架循环,直接就从该位置开始,逐步便利其上下左右,当周围能走完的地方都走了之后,它就会返回,此时统计就行 。
剑指 Offer 14- I. 剪绳子
【普通版剑指 Offer 浅刷浅刷】class Solution {public:int cuttingRope(int n) {return n <= 3 ? n - 1 : pow(3, n / 3) * 4 / (4 - n % 3);}};//或者class Solution {public:int cuttingRope(int n) {if (n <= 3) {return n - 1;}if (n % 3 == 1) {return 4 * pow(3, n / 3 - 1);} else if (n % 3 == 2) {return 2 * pow(3, n / 3);} else {return pow(3, n / 3);}}};
经大数据计算,3最多的时候值是最大的,最优3,次优2,最后才是1 。
剑指 Offer 14- II. 剪绳子 II
class Solution {public:int cuttingRope(int n) {if (n <= 3) {return n - 1;}long int res = 1;while (n > 4) {res *= 3;res = res % 1000000007;n -= 3;}return (res * n) % 1000000007;}};
这道题是剪绳子的升级版,它的n可以到1000,所以我们得考虑存不存的下的问题,就不能直接使用pow函数了,所以这里我们使用循环相乘,通过n的大小判断,最终再返回乘积与n再相乘的结果,注意要时刻取余,不然容易超界 。
剑指 Offer 15. 二进制中1的个数
- 《窥情》未删减版在哪儿在线观看
- android应用程序开发!在字节跳动我是如何当面试官的,威力加强版
- 初一上册数学 初一上册数学书电子版
- 最值得普通人学的编程语言是哪个?
- win10企业版ltsc密钥 win10企业版ltsc有录屏功能吗
- 造梦西游4好号和密码真的90级 造梦西游4好号和密码真的手机版
- iqooneo7竞速版屏幕尺寸
- 一九四二电影免费完整版在哪儿在线观看
- 偷窥课程完整版是什么电影
- 医用口罩和普通口罩有什么区别