2016-10-06 4 views
-2

が割り当てである:Unpassed隠された試験(codefights)

彼らは私が持っていたメソッドにパラメータとして渡される

String[] names, boolean[] statuses, int[] projects, int[] tasks 

異なる従業員の情報を示す4つの入力配列を有します書く。 出力が要求

を要件を満たしている従業員の名前であるべきである。各アレイの

  • I ^番目の要素は、I ^番目の従業員に属します。従業員の数はとBの例えば、ステータス、場合には、この従業員は、次の条件
  • のために検討するためにする必要があり
  • 彼/彼女のの状態を変化させますのタスクが、またはのタスクがであるものと同等ですが、のプロジェクトがより少ないものが選択されます。が選択されます。すべての従業員に対してこれを行います。
  • 戻る配列のこの従業員

例の名前(文字列)多分よう:

names = ["John", "Martin"], statuses = [false, false], 
projects = [2, 1] and tasks = [16, 5], 

出力は次のようになります。

smartAssigning(names, statuses, projects, tasks) = "Martin". 

そして、ここは私ですコード:(これはメソッドのみ)

String smartAssigning(String[] names, boolean[] statuses, int[] projects, int[] tasks) { 
String name = null; 
int task = tasks[0]; 
int order = 0; 
int mainOrder = 0; 
int project; 
int[] list = new int[names.length]; 
for (int i = 1; i < tasks.length; i++) { 
    if (tasks[i] < task && statuses[i] == false) { 
     task = tasks[i]; 
    } 
} 
for (int i = 0; i < tasks.length; i++) { 
    if (task == tasks[i]) { 
     list[order] = i; 
     order++; 
    } 
} 
project = list[0]; 
if (order > 1) { 
    for (int i = 1; i < order; i++) { 
    if (project > projects[list[i]]) { 
     project = projects[list[i]]; 
     mainOrder = list[i]; 
     } 
    } 
} else mainOrder = list[0]; 
return names[mainOrder]; 

} 

問題は、利用可能な11のテストのうち2つを通過できなかったことです。しかし、その2人は隠されていた。誰でも私にいくつかの提案を与えることができますか?

+0

私は何をするあなたを教えていますか分かりません(同じ配列について異なる情報を保持する複数の配列)がありますが、実際にはEmployeeクラスを作成する必要があります。 –

+0

いいえ、私はcodefights、コーディングのウェブサイトからこれを得ました – allicanseenow

答えて

0

コードの下に確認してください。 文字列smartAssigning(String []型の名前、ブール[]ステータスは、[]プロジェクトをint型、[]タスクをint型){

String assignTo = null; 
    int minvaluep = projects[0]; 
    int minvaluepi = 0; 
    int minvaluet = tasks[0]; 
    int minvalueti = 0; 
    int duplicate = -1; 

    for (int j = 0; j < names.length; j++) { 
     if (statuses[j] == false) { 
      if (tasks[j] < minvaluet) { 
       minvaluet = tasks[j]; 
       minvalueti = j; 
      } 
      assignTo = names[minvalueti]; 
     } 
    } 
    for (int k = 0; k < projects.length; k++) { 
     for (int l = k + 1; l < projects.length; l++) { 
      if (String.valueOf(projects[k]).equals(String.valueOf(projects[l]))) { 
       duplicate = k; 
      } 
     } 
    } 

    for (int j = 0; j < names.length; j++) { 
     if (statuses[j] == false) { 
      if (tasks[j] < minvaluet) { 
       minvaluet = tasks[j]; 
       minvalueti = j; 
      } 
     } 
    } 

    if (duplicate > -1) { 
     for (int i = 0; i < names.length; i++) { 
      if (statuses[i] == false) { 
       if (projects[i] < minvaluep) { 
        minvaluep = projects[i]; 
        minvaluepi = i; 
       } 

      } 
     } 
     assignTo = names[minvaluepi]; 

    } 

    return assignTo; 

}