Запишите функцию: int solution (int K, int A [], int N); , что, учитывая целое число K и непустой нуль-индексированный массив A из N целых чисел, возвращает количество ограниченных_средств массива A. Если число ограниченных_средств превышает 1,000,000,000, функция должна вернуть 1,000,000,000. Например, если: А [0] = 3 А [1] = 5 А [2] = 7 А [3] = 6 А [4] = 3 функция должна возвращать 9, как объяснено выше. Предположим, что: • N - целое число в диапазоне [1..100.000]; • K - целое число в диапазоне [0,1,000,000,000]; • каждый элемент массива A является целым числом в диапазоне [-1,000,000,000..1,000,000,000]. Сложность: • ожидаемая наихудшая временная сложность - O (N); • ожидаемая наихудшая сложность пространства - это O (N), за пределами хранения ввода (не считая хранения, необходимого для входных аргументов). */Код Вопрос об объединении
мой код не работает в O (N), и я хочу, любое предложение ?? import java.util.ArrayList;
общественного класса Решение {
/**
* @param args
*/
public int solution(int K, int[] A)
{
int numberOfSlices=0;
ArrayList<Integer>listOfSlices=new ArrayList<Integer>();
for(int i=0;i<A.length;i++)
{
for(int j=0;j<A.length;j++)
{
if((!listOfSlices.contains(A[i])
&&!listOfSlices.contains(A[j]))&&(max(A[i],A[j])-min(A[i],A[j]))<=K)
{
numberOfSlices++;
}
}
listOfSlices.add(A[i]);
}
return numberOfSlices;
}
/* return the max between two numbers */
public int max(int p,int q)
{
if(p>q)
{
return p;
}
else
{
return q;
}
}
/*return the min between two numbers */
public int min(int p,int q)
{
if(p<q)
{
return p;
}
else
{
return q;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution solution=new Solution();
int[] array={3,5,7,6,3};
System.out.println("the number of slices in the array is "+solution.solution(2, array));
}
}
Сегодня каждый, кажется, задает тот же вопрос. http://stackoverflow.com/q/21100261/1401351 – Peter
если у вас есть какие-либо предложения, это будет оценено :) – Marcel