Как найти пифагоровых троек в массиве быстрее, чем за o(п^2)?

Для начала скажу, что я зарабатываю через вот этого брокера, проверен он временем! А вот хороший пример заработка, человек зарабатывает через интернет МНОГО МНОГО МНОГО и показывает все на примерах, переходи и читай! Добавь страницу в закладки. А теперь читаете информацию ниже и пишите свой отзыв

Кто-нибудь может предложить алгоритм, который находит все Пифагоровых троек среди чисел в массиве? Если это возможно, пожалуйста, предложите алгоритм быстрее, чем о(N2).

Пифагорейские тройки – это множество {a,b,с}, таких, что а2 = в2 + с2. Пример: для массива [9, 2, 3, 4, 8, 5, 6, 10] на выходе алгоритм должен быть {3, 4, 5} и {6, 8, 10}.

import java.io.*; import java.lang.*; import java.util.*;  class PythagoreanTriplets {  public static void main(String args[])throws IOException  {   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));    int n = Integer.parseInt(br.readLine());   int arr[] = new int[n];   int i,j,k,sum;   System.out.println("Enter the numbers ");   for(i=0;i<n;i++)    {     arr[i]=Integer.parseInt(br.readLine());     arr[i]=arr[i]*arr[i];    } Arrays.sort(arr);   for(i=n-1;i>=0;i--)    {      for(j=0,k=i-1;j<k;)         {             sum=arr[j]+arr[k];           if(sum==arr[i]){System.out.println((int)Math.sqrt(arr[i]) +","+(int)Math.sqrt(arr[j])+","+(int)Math.sqrt(arr[k]));break;}           else if(sum>arr[i])k--;           else j++;          }    }  } } 
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Оставить комментарий

Ваш email нигде не будет показанОбязательные для заполнения поля помечены *

*