[オファー]タイトルシンプル部5勝毎日 - 3日目

04 - 2次元配列を探します

要件:二次元アレイ、各行を左から右にインクリメントされる、各カラムの底部に上部がインクリメントされます。番号が存在するかどうかを確認するには。
解決策:右上から探し始め、その後、ダウン、それを大規模に小さくなるように残しました。私は見つけることができなかったラインを越えました。

/**
 * @param {number[][]} matrix
 * @param {number} target
 * @return {boolean}
 */
var findNumberIn2DArray = function(matrix, target) {
  if (!matrix || matrix.length==0){return false}
  let row = 0, col = matrix[0].length - 1
  while(true){
    if (matrix[row][col]==target) {return true}
    if (matrix[row][col]>target) {col-=1} else {row+=1}
    if (row>=matrix.length || col <0) {return false}
  }
};

10-II - カエルジャンプステップの問題

要件: Aのカエルは、クラス1レベルにジャンプすることができ、あなたはまた、レベル2のレベルでホップすることができます。カエルはどのように多くのジャンプのn級レベルの合計を求めて飛び込みました。
ソリューション:列のフィボナッチ再発。Nステップジャンプ方法工程N-1、N-2に等しいプラスジャンプ方法ステップをジャンプ。つまりデータのres [0] = 1は、もつれをしないことに注意してください。

/**
 * @param {number} n
 * @return {number}
 */
var numWays = function(n) {
  let res = []
  res[0] = 1; res[1] = 1; res[2] = 2;
  for (let i = 3; i <= n; i++) {
    res[i] = (res[i - 1] + res[i - 2]) % (1e9+7)
  }
  return res[n]
};

58-I - 反転語順

要件:たとえば、次のように入力します「空が青い」;出力:「青い空です」。
解決策:分割するために使用するスペース、ポップ缶を積み重ねます。

/**
 * @param {string} s
 * @return {string}
 */
var reverseWords = function(s) {
  s = s.trim()
  let stack = s.split(' '), res = '', x
  while (stack.length != 0) {
    x = stack.pop()
    if (x != '' && x != ' ') {
      res += x
      res += ' '
    }
  }
  return res.substring(0, res.length - 1) // 去除最后一个多余空格
};

40--最小数k

要件:最小数kを見つけ、整数配列ARRを入力します。
溶液:「正統」アプローチプライオリティキュー(小さな構成トップスタック、K-OUT)です。C ++はなく、JSと、PQが付属しています。ヒープ困難Chaogang手書き、ここで使用し、それだけでソートソリューションは、意味がありません。
注ことArray.sort、それはそれは悲劇が辞書式に発生順にソートを避けるために、機能をcmpの上書きするのが最善です。(a,b)=>a-bそれは順序です。

/**
 * @param {number[]} arr
 * @param {number} k
 * @return {number[]}
 */
var getLeastNumbers = function(arr, k) {
  return arr.sort((a, b) => a - b).slice(0, k)
};

50--最初の文字は一度だけ表示されます

要件:文字列の最初の文字は一度だけ表示されます見つけます。
問題の解決:地図<CHAR、BOOL>記録。出現回数をカウントする必要はありませんが、境界エラーを横断避けます。

/**
 * @param {string} s
 * @return {character}
 */
var firstUniqChar = function(s) {
  let map = {}
  for (let i = 0 ; i < s.length; i ++){
    if (map[s[i]]){map[s[i]]=-1}else{map[s[i]]=1}
  }
  for (let i = 0 ; i < s.length; i ++){
    if (map[s[i]]==1) return s[i]
  }
  return ' '
};

おすすめ

転載: www.cnblogs.com/zxuuu/p/12501542.html
おすすめ