58都市のフロントエンドプログラムが質問に書かれており、解決します

A.サイズとnums1 mとnはn​​ums2二規則正しいアレイを考えます。これら二つの注文の配列の中央値を検索します。このアルゴリズムは、((M + N)ログ)Oの時間複雑さを必要とします

/ * * 
 * @param {数[]} nums1 
 * @param {数[]} nums2 
 * @return {数} 
 * / 
VARの findMedianSortedArrays = 関数(nums1、nums2){ 
  Mせ = nums1.length 
  Nせ = nums2。長さ
  K1せ = Math.floor((M + N + 1)/ 2 
  k2はせ = Math.floor((M + N + 2)/ 2 

  リターン(findMedianSortedArraysCore(nums1、0、nums2、0、K1)+ findMedianSortedArraysCore(nums1、0、nums2、0、K2))/ 2 
}。

/ * * 
 * 
 * @param {数[]} nums1  
 * @param {数[]} nums2
 * @param {数} iが
 * @param {数} J
 @param {K}番号* 
 * @return {数値} 
 * / 
constがfindMedianSortedArraysCore =(nums1、I、nums2、J、K)=> {
   // 配列は、配列の長さよりも大きい場合に開始位置を有する-1 
  // 記述が有します空の配列
  // k個から別のアレイに直接採取
  IF - (1 I> nums1.length {)
     リターン nums2 [J K + - 1 ] 
  } 
  IF(J> nums2.length - 。1 ){
     リターン nums1 [I + K - 1 ] 
  } 
  // kが1である場合
  、// 最小開始値に二つの配列をとることである
  IF(K === 1 ){
     リターン Math.minを(nums1 [I]、nums2 [ J])
  } 
  // K2(K / 2とし)または長さ又は配列2の配列の最小の長さ
  // このステップは、(開始から終了までの長さ座標)の長さよりも、配列K2より大きい回避 
  せMath.floorのK2 =(K / 2 
  LETの長さ1 = nums1.length - 私は
  せLENGTH2 = nums2.length - J 
  K2 = Math.min(K2、長さ1、長さ2)

  LET値1 = nums1 [I K2 + - 。1 ] 
  LETの値2 = nums2 [J K2 + - 。1 ] 

  // 2つの配列の開始座標の比較値
  // 値1の場合値2未満
  // iはフロントnums1のK2の部分を+廃棄する
  // そうでない場合nums2のJ + K2の前部を拒否
  IF(VALUE1 < 値2){
     戻りfindMedianSortedArraysCore(nums1、私はK2、nums2、J、K + - K2)
  }{
     戻り findMedianSortedArraysCore(nums1、I、nums2、J + K2を、K - K2)
  } 
}

II。「人間の波」にする方法、文字列を書きます

「こんにちは」の文字列を入力します。

文字列を出力:[「こんにちは」、「こんにちは」、「こんにちは」、「こんにちは」、「こんにちは」]

おすすめ

転載: www.cnblogs.com/SallyShan/p/11530965.html