📅  最后修改于: 2023-12-03 14:50:48.485000             🧑  作者: Mango
这是国际空间研究组织(ISRO)2020年计算机科学招聘考试的第79题。
给定由N
个元素组成的整数数组A
,找到最少需要删除多少个元素,以使剩余的元素构成一个非递减序列。
T
,代表测试用例的数量。N
,表示数组A
的大小。N
个空格分隔的整数,表示数组A
的元素。对于每个测试用例,请输出一个整数,它代表要删除的最小元素数,使得剩余的元素构成一个非递减序列。
2
5
30 40 20 10 60
3
10 20 30
2
0
遍历整个数组,维护一个记录当前非递减序列末尾元素的变量last
,如果当前元素A[i]
小于last
,则删除元素A[i]
,并更新计数器。否则,将当前元素A[i]
赋值给last
,继续遍历。
def count_deletions(arr):
last = arr[0]
count = 0
for i in range(1, len(arr)):
if arr[i] < last:
count += 1
else:
last = arr[i]
return count
t = int(input())
for i in range(t):
n = int(input())
arr = list(map(int, input().split()))
print(count_deletions(arr))
这道题提供了一种维护非递减序列的思路,可以应用于其他类似的问题。此外,还需要注意Python的输入输出格式,以及列表和元组等常见数据类型的使用。