[LeetCode] Longest Palindromic Substring 使用2D-vector 和 2D-array的区别

来源:互联网 发布:膜法传奇知乎 编辑:程序博客网 时间:2024/05/28 01:35
一下这段代码,我是用的是dynamic programming的方法。采用了以2D-vector作为memoization的做法。结果系统告诉我超时。当我采用普通二维数组的时候就被接受了。其实两种方法世间复杂度都是O(n^2),空间复杂度也都是O(n^2)。所以我觉得才用STL会一定程度上占用更多的时间来完成任务。
// Memoizationclass Solution {public:    string longestPalindrome(string s) {        int size = s.size();        vector<vector<bool>> memo(s.length(), vector<bool>(s.length(), false));        int tmpSt = 0, tmpEnd = 0;        int maxLen = 1;                for(int i = 0; i < size; i++)             for(int j = 0; j < size; j++)               if(i >= j) memo[i][i] = true;               for(int j = 1; j < size; j++)            for(int i = 0; i < j; i++)            {                if(memo[i+1][j-1] == true && s[i] == s[j])                {                    memo[i][j] = true;                    if(maxLen < j - i + 1)                    {                        tmpSt = i; tmpEnd = j;                        maxLen = j - i + 1;                    }                }                else                    memo[i][j] = false;            }                return s.substr(tmpSt, tmpEnd - tmpSt + 1);    }};

0 0
原创粉丝点击