leetcode日记(67)单词搜索

太坑了!老是时间超限,不是时间超限就是内存超限!

思路很简单,就是先遍历整个网格寻找开头,然后上下左右搜寻找下一个字母,引用递归。

最终看边答案边写出来的:

cpp 复制代码
class Solution {
public:
    bool exist(vector<vector<char>>& board, string word) {
        m=board.size();
        n=board[0].size();
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(hs(board,word,i,j,0)==1) return 1;
            }
        }
        return 0;
    }
private:
    int m,n;
    bool hs(vector<vector<char>> &board,string word,int x,int y,int k){
        if(word[k]!=board[x][y]) return 0;
        if(k==word.size()-1) return 1;
        board[x][y]='/0';
        bool b=0;
        k++;
        if(x>0) b=b||hs(board,word,x-1,y,k);
        if(y>0) b=b||hs(board,word,x,y-1,k);
        if(x<m-1) b=b||hs(board,word,x+1,y,k);
        if(y<n-1) b=b||hs(board,word,x,y+1,k);
        board[x][y]=word[k-1];
        return b;
    }
};

看了下面的评论老哥,学到了一个时间超限的知识点...

意思是函数直接传入值比传入指针慢很多(可以解释为什么我照着答案抄都抄不对了),于是又去试了一下,将递归函数的传入参数都尽量改成了指针:

cpp 复制代码
class Solution {
public:
    bool exist(vector<vector<char>>& board, string word) {
        m=board.size();
        n=board[0].size();
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                int k=0;
                if(hs(board,word,i,j,k)==1) return 1;
            }
        }
        return 0;
    }
private:
    int m,n;
    bool hs(vector<vector<char>> &board,string &word,int x,int y,int &k){
        if(word[k]!=board[x][y]) return 0;
        if(k==word.size()-1) return 1;
        board[x][y]='/0';
        bool b=0;
        k++;
        if(x>0) b=b||hs(board,word,x-1,y,k);
        if(y>0) b=b||hs(board,word,x,y-1,k);
        if(x<m-1) b=b||hs(board,word,x+1,y,k);
        if(y<n-1) b=b||hs(board,word,x,y+1,k);
        k--;
        board[x][y]=word[k];
        return b;
    }
};

果不其然啊!!

相关推荐
朱剑君7 小时前
第四天——贪心算法——种花
算法·贪心算法
TextIn智能文档云平台7 小时前
PDF文档解析新突破:图表识别、公式还原、手写字体处理,让AI真正读懂复杂文档!
图像处理·人工智能·算法·自然语言处理·pdf·ocr
Panesle8 小时前
HunyuanCustom:文生视频框架论文速读
人工智能·算法·音视频·文生视频
hie988948 小时前
matlab稳定求解高精度二维对流扩散方程
算法·机器学习·matlab
蓝婷儿8 小时前
前端面试每日三题 - Day 30
前端·面试·职场和发展
买了一束花8 小时前
MATLAB导出和导入Excel文件表格数据并处理
人工智能·算法·matlab
纪元A梦8 小时前
贪心算法应用:顶点覆盖问题详解
java·算法·贪心算法
爱补鱼的猫猫9 小时前
22、近端策略优化算法(PPO)论文笔记
论文阅读·算法
开心星人10 小时前
【论文阅读】Reconstructive Neuron Pruning for Backdoor Defense
论文阅读·算法·剪枝