题目求助|关于力扣每题时空限制

题目求助|关于力扣每题时空限制

萌新真诚求助,很久以前打周赛很郁闷的问题现在还没解决,求大佬帮助。

rt 每题的时间、空间限制是多少?在哪里看?还是说统一的,那么是多少呢?

另外,为什么把数组开在 class 里面和外面不一样,里面 t 了,外面过了???

https://leetcode.cn/problems/number-of-ways-to-separate-numbers/

这道题,比赛交了无数次这个

class Solution {

public:

const int P = 1e9 + 7;

int n, a[3505], f[3505][3505], g[3505][3505];

void inline add(int &x, int y) {

x += y;

if (x >= P) x -= P;

}

int numberOfCombinations(string s) {

n = s.size();

for (int i = 1; i <= n; i++) a[i] = s[i - 1] - '0';

a[n + 1] = 9;

for (int i = n; i; i--) {

for (int j = n; j >= i + 1; j--) {

if (a[i] == a[j]) {

g[i][j] = 1 + g[i + 1][j + 1];

}

}

}

if (a[1] == 0) return 0;

int ans = 0;

for (int i = 1; i <= n; i++) {

if (i > 1) for (int j = i + 1; j <= n; j++) {

add(f[i][j], f[i][j - 1]);

} else for (int j = 1; j <= n; j++) f[i][j] = 1;

for (int j = i; j <= n; j++) {

if (!f[i][j]) continue;

if (a[j + 1] != 0 && j + j - i + 1 <= n) {

int k = j + j - i + 1 + 1, t = g[i][j + 1];

if (t >= j - i + 1 || a[i + t] <= a[j + 1 + t]) {

k--;

}

if (k <= n) {

add(f[j + 1][k], f[i][j]);

}

}

}

}

for (int i = 1; i <= n; i++)

add(ans, f[i][n]);

return ans;

}

};

一直 t,现在结果把3500*3500开外面就过了?

int n, a[3505], f[3505][3505], g[3505][3505];

class Solution {

public:

const int P = 1e9 + 7;

void inline add(int &x, int y) {

x += y;

if (x >= P) x -= P;

}

int numberOfCombinations(string s) {

n = s.size();

for (int i = 1; i <= n; i++) a[i] = s[i - 1] - '0';

a[n + 1] = 9;

memset(f, 0, sizeof f);

memset(g, 0, sizeof g);

for (int i = n; i; i--) {

for (int j = n; j >= i + 1; j--) {

if (a[i] == a[j]) {

g[i][j] = 1 + g[i + 1][j + 1];

}

}

}

if (a[1] == 0) return 0;

int ans = 0;

for (int i = 1; i <= n; i++) {

if (i > 1) for (int j = i + 1; j <= n; j++) {

add(f[i][j], f[i][j - 1]);

} else for (int j = 1; j <= n; j++) f[i][j] = 1;

for (int j = i; j <= n; j++) {

if (!f[i][j]) continue;

if (a[j + 1] != 0 && j + j - i + 1 <= n) {

int k = j + j - i + 1 + 1, t = g[i][j + 1];

if (t >= j - i + 1 || a[i + t] <= a[j + 1 + t]) {

k--;

}

if (k <= n) {

add(f[j + 1][k], f[i][j]);

}

}

}

}

for (int i = 1; i <= n; i++)

add(ans, f[i][n]);

return ans;

}

};

另外,运行原理是什么哦,开在外面就需要,每次清零,很阴间??

相关推荐

英雄联盟新英雄戏命师烬子弹装填时间是多少?受冷却缩减影响吗?_百度
诺亚传说怀旧服5开攻略:轻松升级,畅游江湖
365足球打水封号还严重嘛

诺亚传说怀旧服5开攻略:轻松升级,畅游江湖

📅 01-31 👁️ 2799
䌸娶书生
Microsoft365个人版

䌸娶书生

📅 01-08 👁️ 1595
副业做什么比较挣钱,下班后适合长期做的8个项目!
365足球打水封号还严重嘛

副业做什么比较挣钱,下班后适合长期做的8个项目!

📅 08-17 👁️ 6192
梳妆台与床摆放知识 – 梳妆台跟床的正确摆放
Microsoft365个人版

梳妆台与床摆放知识 – 梳妆台跟床的正确摆放

📅 08-17 👁️ 918
PPT怎么开启兼容模式?兼容模式设置方法是什么?
365bet娱乐游戏

PPT怎么开启兼容模式?兼容模式设置方法是什么?

📅 11-08 👁️ 2376
建筑模板是什么?
365足球打水封号还严重嘛

建筑模板是什么?

📅 10-25 👁️ 3268
IMU校准(1)-误差源
365bet娱乐游戏

IMU校准(1)-误差源

📅 12-10 👁️ 6854
医院电子病历系统保留多久
365bet娱乐游戏

医院电子病历系统保留多久

📅 08-25 👁️ 2979
humble更多的中文(简体)翻译
365bet娱乐游戏

humble更多的中文(简体)翻译

📅 01-12 👁️ 7934
如何用日语说生日快乐
Microsoft365个人版

如何用日语说生日快乐

📅 07-09 👁️ 3296
绝杀法国晋级世界杯八强!中国男篮这回硬气了:三人男队创纪录!