这个LC问题的时间复杂度是多少

问题描述 投票:1回答:1

有人可以引导我分析这个问题的时间复杂度吗?https://leetcode.com/problems/palindrome-partitioning/

我有一个使用DFS +回溯+ DP的解决方案,如下所示,我认为从时间复杂度上讲,它归结为麦芽汁情况下您可以拥有的分区数量,但是正在努力弄清它是什么。] >

class Solution {
public:
    vector<string> cur;
    vector<vector<string>> ans;
    vector<vector<bool>> isPalindrome;
    unordered_map<int,vector<int>> pairs;

    vector<vector<string>> partition(string s) {
        isPalindrome.resize(s.length(),vector<bool>(s.length(),false));
        buildPalindromePairs(s);
        backtracking(s,0);
        return ans;
    }

    void buildPalindromePairs(string s)
    {
        for(int i=0;i<s.length();++i)
        {
            for(int j=i;j>=0;j--)
            {
                if(i==j) 
                    isPalindrome[j][i]=true;
                else if(j==i-1 && s[j]==s[i]) 
                    isPalindrome[j][i]=true;
                else if(s[j]==s[i] && isPalindrome[j+1][i-1])
                    isPalindrome[j][i]=true;

                if(isPalindrome[j][i])
                    pairs[j].push_back(i);
            }
        }
    }

    void backtracking(string s, int start)
    {
        if(start==s.length()) 
        {
            ans.push_back(cur);
            return;
        }

        for(auto end:pairs[start])
        {
            cur.push_back(s.substr(start, end-start+1));
            backtracking(s,end+1);
            cur.pop_back();
        }
    }
};

有人可以引导我分析这个问题的时间复杂度吗? https://leetcode.com/problems/palindrome-partitioning/我有如下使用DFS +回溯+ DP的解决方案,我...

time-complexity
1个回答
0
投票

isPalindrome()的方法可以在O(n)中求解。

© www.soinside.com 2019 - 2024. All rights reserved.