我的代码在竞赛平台中出现时间限制错误
I am getting time limit error in the competition platform for my code
我正在尝试使用以下代码在在线编码平台(下面给出的问题)中解决这个问题。比赛平台显示时间限制错误。
问题:
Tahir 和 Mamta 正在 TCS 的一个项目中工作。 Tahir 是一个问题解决者,他为他的朋友 Mamta 想出了一个有趣的问题。
问题由一个长度为 N 的字符串组成,并且只包含小写字母。
接下来是Q个查询,其中每个查询将包含一个整数P(1<=P<=N),表示字符串中的位置。
Mamta 的任务是找到该位置出现的字母表,并确定给定位置 P 之前相同字母表的出现次数。
Mamta 忙于她的办公室工作。所以,她让你帮她。
约束条件
1 <= N <= 500000
S 由小写字母组成
1 <= Q <= 10000
1 <= P <= N
输入格式
第一行包含一个整数N,表示字符串的长度。
第二行包含字符串 S 本身仅包含小写字母 ('a' - 'z')。
第三行包含一个整数 Q,表示将被询问的查询数。
接下来的 Q 行包含一个整数 P (1 <= P <= N),您需要为此找到 P 之前第 P 个位置出现的字符的出现次数。
输出
对于每个查询,在单行上打印一个表示答案的整数。
时间限制
1
我的代码:
n=int(input())
a=input()[:n]
for i in range(int(input())):
p=int(input())
print(a[:p-1].count(a[p-1]))
示例输入、输出:
示例 1
输入
9
abacsddaa
2
9
3
输出
3
1
说明
这里Q = 2
对于 P=9,第 9 个位置的字符是 'a'。 P前'a'的出现次数,即9是三。
同样对于P=3,第3个字符是'a'。 P前'a'的出现次数,即3为1。
我是 Python 的新手,所以请帮我解决错误。
你的解决方案的复杂度是O(n2),它会导致时间限制错误。
您应该使用 prefix sum array
算法。看看这个 link 并为每个字母表定义一个前缀和数组。
我正在尝试使用以下代码在在线编码平台(下面给出的问题)中解决这个问题。比赛平台显示时间限制错误。
问题:
Tahir 和 Mamta 正在 TCS 的一个项目中工作。 Tahir 是一个问题解决者,他为他的朋友 Mamta 想出了一个有趣的问题。
问题由一个长度为 N 的字符串组成,并且只包含小写字母。
接下来是Q个查询,其中每个查询将包含一个整数P(1<=P<=N),表示字符串中的位置。
Mamta 的任务是找到该位置出现的字母表,并确定给定位置 P 之前相同字母表的出现次数。
Mamta 忙于她的办公室工作。所以,她让你帮她。
约束条件
1 <= N <= 500000
S 由小写字母组成
1 <= Q <= 10000
1 <= P <= N
输入格式 第一行包含一个整数N,表示字符串的长度。
第二行包含字符串 S 本身仅包含小写字母 ('a' - 'z')。
第三行包含一个整数 Q,表示将被询问的查询数。
接下来的 Q 行包含一个整数 P (1 <= P <= N),您需要为此找到 P 之前第 P 个位置出现的字符的出现次数。
输出 对于每个查询,在单行上打印一个表示答案的整数。
时间限制
1
我的代码:
n=int(input())
a=input()[:n]
for i in range(int(input())):
p=int(input())
print(a[:p-1].count(a[p-1]))
示例输入、输出:
示例 1
输入
9
abacsddaa
2
9
3
输出
3
1
说明
这里Q = 2
对于 P=9,第 9 个位置的字符是 'a'。 P前'a'的出现次数,即9是三。
同样对于P=3,第3个字符是'a'。 P前'a'的出现次数,即3为1。
我是 Python 的新手,所以请帮我解决错误。
你的解决方案的复杂度是O(n2),它会导致时间限制错误。
您应该使用 prefix sum array
算法。看看这个 link 并为每个字母表定义一个前缀和数组。