Я столкнулся с этой проблемой в хакатоне, но не мог понять, где я ошибался.
Постановка проблемы была
Count the number of subsequences in an array where the difference of the first and last element is <= K
Each subsequence is contiguous
Input: 11 5 2 15 25
Output: 6
Explanation: {11}, {5}, {2}, {15}, {25}, {5, 2}
Я полагаю, что они рассматривали один элемент в качестве действительной подпоследовательности, поэтому
что я пытался вернуть длину массива + количество.
int getCount(int *a, int n, int k){
sort(a, a + n);
int c = 0;
for(int i=0; i<n; i++){
int j = i + 1;
while(j < n and a[j] - a[i] <= k){
c+=1;
j+=1;
}
}
return n + c;
}
Я пробовал сортировку, но время все равно истекло!