貨拉拉面試題

題目:

AB兩個數組,正int,不重復,且A是B的子集,求A的每個元素在B中的下一個比它大的值,如果沒有則結果為-1
eg:A:(4, 2, 5, 1),B:(4, 2, 3, 5, 1),result:(5, 3, -1, -1)

scala求解:

def calculateHLL(a: List[Int], b: List[Int]): ListBuffer[Int] = {
    var indexB = -1
    val cntA = a.length
    val cntB = b.length
    val resultList = ListBuffer[Int]()

    for (i <- 0 until cntA) {
      // 計算i元素在B中的index
      for (j <- 0 until cntB) {
        if (a(i) == b(j)) {
          indexB = j
        }
      }
      // 從i元素在B的下一個索引開始,將下一個大于i的B元素寫入resultList,沒有大于i的B元素,則寫入-1
      var resultTemp = -1
      for (n <- indexB+1 until cntB) {
        if (resultTemp.equals(-1) && b(n) > a(i)) {
          resultTemp = b(n)
        }
      }
      resultList.insert(i, resultTemp)
    }

    resultList
  }

測試結果:

@Test
  def HLL(): Unit = {
    /**
     * AB兩個數組,正int,不重復,且A是B的子集,求A的每個元素在B中的下一個比它大的值,如果沒有則結果為-1
     * eg:A:(4, 2, 5, 1),B:(4, 2, 3, 5, 1),result:(5, 3, -1, -1)
     */
    val listA = List(4, 2, 5, 1)
    val listB = List(4, 2, 3, 5, 1)
    val resultAB = calculateHLL(listA, listB)
    println(s"listA: ${listA}")
    println(s"listB: ${listB}")
    println(s"result: ${resultAB}")
  }
listA: List(4, 2, 5, 1)
listB: List(4, 2, 3, 5, 1)
result: ListBuffer(5, 3, -1, -1)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容