2017-09-27 2 views
-2

時間差が最大の0と1の最も長い部分配列を見つけるにはどうすればいいですか? O(n)とO(1)のスペース? &のソリューションをフィードバックしてくれてありがとう! 入力配列は{3、3、4、5、5、6、6、7、7、7、7}で、 のようになります。開始インデックスは6です。 入力配列は{5,5、5,5、3、3、2、2、1}と 出力:指標0と長さ4どのように時間差O(n)と空間O(1)で最大差が0と1の最長の部分配列を見つけることができますか?

解決策7

別の例は長さ: var iとvar jを持つ入れ子のforループを使用しています

+4

...私は今日のためにあなたを養うことができますが、このようなものを学び、生涯のために自分自身を養うために必要があります。さらに、あなたが求めていることは明らかではありません。 「0と1の最大差」はどういう意味ですか? –

+0

宿題の警告?非常に単純で、親配列を繰り返し処理し、各サブ配列の長さを比較します。これはmax()実装のようなものです。スペースO(1)は単純な変数になり、ループはあなたのO(n)時間の複雑さになります。 – Rafael

+0

ようこそスタックオーバーフロー。これはコード作成サービスではありません。問題の内容を述べて誰かがあなたのためにコードを書くことを期待することはできません。あなたは、問題を解決しようとする試みを示すコードを掲示することによって、自分自身で問題を解決する努力を示す必要があります。あなたの "可能な解決策"は、あなたが何かをしたことを示唆しています。それを見てみましょう。 – AJNeufeld

答えて

0

あなたはこれをコピーしてaしかし、それはあなたにそれを行う方法についての洞察を提供する必要があります。

class Find { 
    public static void main(String args[]) { 
     int parent[][] = { 
      {1,2,3,4}, 
      {8,7,6,5,8}, 
      {9,8}, 
      {8,7,6,5,8,0,0,0,9,9,9}, 
      {8} 
     }; 

     int max = parent[0].length; 
     int i = 0;//CONSTANT SPACE O(1) 
     //LINEAR TIME O(n) 
     for (int j = 1; j < parent.length; j++) { 
      if (parent[j].length > max) { 
       max = parent[j].length; 
       i = j; 
      } 
     } 

     System.out.println("Longest sub-array index: " + i); 
    } 
} 

これは宿題の質問のように聞こえる

関連する問題