2016-12-07 10 views
-3

配列があります。 {3,2,5,7,10,1,5,7,11,15}。 私はこのアレイの最も長いシリーズを探したいです。 たとえば、{2,5,7,10}と{1,5,7,11,15}はこの配列の増加系列ですが、2番目の配列は長くなります。java配列の配列の長さが最も長くなっています。

+4

あなたと*トラブル*を持っているものたちを表示します。今、この質問は広すぎます。 – Gendarme

+0

例が明確でない –

答えて

0

これがそうするのも楽しいの一種だったが、私はそれを

int[] allNumbers = {3,2,5,7,10,1,5,7,11,15,1,2,3}; 
    ArrayList<Integer> series = new ArrayList<>(); 
    ArrayList<Integer> currentLongestSeries = new ArrayList<>(); 

    for(int index = 0; index < allNumbers.length; index++) 
    { 
     System.out.println("Checking " + allNumbers[index] + "\nCurrent series is " + Arrays.toString(series.toArray())); 
     //starting condition 
     if(series.size() == 0) 
     { 
      series.add(allNumbers[index]); 
     } 
     //adding to our series 
     else if(series.get(series.size() - 1) < allNumbers[index]) 
     { 
      series.add(allNumbers[index]); 
     } 
     //check how big our list is 
     else 
     { 
      if(series.size() > currentLongestSeries.size()) 
      { 
       currentLongestSeries = series; 
       series = new ArrayList<>(); 
       series.add(allNumbers[index]); 
      } 
      else 
      { 
       series = new ArrayList<>(); 
       series.add(allNumbers[index]); 
      } 
      System.out.println("Current biggest series is " + Arrays.toString(currentLongestSeries.toArray())); 
     } 
    } 
    //now lets check one last time because we still have a series to check 
    if(series.size() > currentLongestSeries.size()) 
    { 
     currentLongestSeries = series; 
     System.out.println("Current biggest series is " + Arrays.toString(currentLongestSeries.toArray())); 
    } 
    else 
    { 
     System.out.println("Last series is " + Arrays.toString(series.toArray())); 
    } 
    System.out.println("FINAL SERIES is " + Arrays.toString(currentLongestSeries.toArray())); 
0

を紹介します。この宿題へのソリューションは、あなたが行くように値に上昇要素のリストを作成し、配列を反復することである。示し

値が大きくない場合は、前のリストでこのリストをチェックします。長い場合は、前のリストを置き換えます。

このタスクを実行するには多くの方法があります。ここに私のバージョンがあります:

import java.util.ArrayList; 
import java.util.List; 

public class TheLongestSequence { 

    public static void main(String[] args) { 
     int[] myArray = new int[]{3,2,5,7,10,1,5,7,11,15}; 

     // Prime the pump with the first element 
     int previous = myArray[0]; 
     List<Integer> longestArray = new ArrayList<Integer>(); 
     List<Integer> currentArray = new ArrayList<Integer>(); 
     currentArray.add(previous); 

     // Cycle through the array 
     for (int i = 1; i < myArray.length; i++) { 
      if (myArray[i] > previous) { 
       currentArray.add(myArray[i]); 
      } else { 
       previous = myArray[i]; 
       // Check if this array is larger than the previous one 
       if (currentArray.size() > longestArray.size()) { 
        longestArray = currentArray; 
       } 

       currentArray = new ArrayList<Integer>(); 
       currentArray.add(myArray[i]); 
      } 
     } 

     // Double check the last array isn't the longest one 
     if (currentArray.size() > longestArray.size()) { 
      longestArray = currentArray; 
     } 

     System.out.println(longestArray); 
    } 
} 

出力:

[1, 5, 7, 11, 15]