leetCodeの週試合の100は題を解いてjavascriptを報告します.


もっと読む
競技の住所:
https://leetcode-cn.com/contest/weekly-contest-100
 
896.単調数列
896.Monotonic Aray
配列が単調に増減したり、単調に減少したりするなら、それは単調である.
すべてに対して  i <= jA[i] <= A[j]、では、配列  A は、単調に増加します.すべてに対して  i <= jA[i]> = A[j]、では、配列  A は、単調な減少です.
与えられた配列  A は、単調な配列の場合に戻ります.  true、そうでなければ戻ります.  false 
例1:
[1,2,2,3]
true
例2:
[6,5,4,4]
true
例3:
[1,3,2]
false
例4:
[1,2,4,5]
true
例 5:
[1,1,1]
true
 
ヒント:1 <= A.length <= 50000 -100000 <= A[i] <= 100000 二つのサイクルを行って、それぞれ増減するかどうか判断します.
 
/**
 * @param {number[]} A
 * @return {boolean}
 */
var isMonotonic = function(A) {
    var n = A.length;
    var i;
    for (i = 1; i < n; i++) {
        if (A[i] < A[i - 1]) {
            break;
        }
    }
    if (i == n) {
        return true;
    }
    for (i = 1; i < n; i++) {
        if (A[i] > A[i - 1]) {
            break;
        }
    }
    if (i == n) {
        return true;
    }
    return false;
};
 
 
 
 
 
897.ツリーを逐次検索する
897.Increasung Order Search Tree
二叉の木を与えて、ツリーを並べ直します.一番小さいのは木の根の結点です.各結点は左の子の結点がなく、一つの右の子の結点しかありません.
 
例:
[5,3,6,2,4,null,8,1,null,null,null,7,9]

       5
      / \
    3    6
   / \    \
  2   4    8
 /        / \ 
1        7   9

[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9]

 1
  \
   2
    \
     3
      \
       4
        \
         5
          \
           6
            \
             7
              \
               8
                \
                 9  
 
ヒント:
指定されたツリーの接合数は1と2の間です. 100の間各結点には0から1000までの範囲内の唯一の整数値があります.新しいツリーを順次生成します.
 
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var increasingBST = function(root) {
    var dfs = function(node) {
        if (!node) {
            return;
        }
        dfs(node.left);
        p.right = new TreeNode(node.val);
        p = p.right;
        dfs(node.right);
    }
    var head = new TreeNode(0);
    var p = head;
    dfs(root);
    return head.right;
};
 
 
 
 
 
898.サブ行列はビットまたは操作による
898.Bitwise ORs of Subarrays
私たちは負ではない整数配列を持っています.  A各(連続)サブアレイについて  B = [A[i], A[i+1], ..., A[j]] (  i <= j)はい、そうです.  B の各要素をビットまたは操作して結果を得ます.  A[i] | A[i+1] | ... | A[j]可能な結果の数を返します.(複数回答の結果は最終回答では一回だけ計算されます.)
 
例1:
[0]
1

          0 。
例2:
[1,1,2]
3

        [1],[1],[2],[1, 1],[1, 2],[1, 1, 2]。
       1,1,2,1,3,3 。
      ,      3 。
例 3:
[1,2,4]
6

       1,2,3,4,6,   7 。
 
ヒント:1 <= A.length <= 50000 0 <= A[i] <= 10^9 A[i]を遍歴した場合、前のすべてのサブ配列または動作の結果を1セットのpreで記録します.
 
/**
 * @param {number[]} A
 * @return {number}
 */
var subarrayBitwiseORs = function(A) {
    var s = new Set();
    var pre = new Set();
    for (var i = 0; i < A.length; i++) {
        s.add(A[i]);
        var newPre = new Set();
        newPre.add(A[i]);
        for (var p of pre) {
            var newNum = (p | A[i])
            newPre.add(newNum);
            s.add(newNum);
        }
        pre = newPre;
    }
    return s.size;
};
 
 
 
 
 
899.整列行列
899.Orderly Que
小文字からなる文字列を与えました.  S.その後、任意の回数で移動できます.
移動するたびに、私たちは前を選ぶ.  K つの文字の一つ(左から)を元の位置から削除し、文字列の最後に配置します.
任意の回数の移動後に辞書順に並べられる最小文字列を返します.
 
例1:
S = "cba", K = 1
"acb"

     ,        (“c”)     ,      “bac”。
     ,        (“b”)     ,       “acb”。
例2:
S = "baaca", K = 3
"aaabc"
     ,        (“b”)     ,      “aacab”。
     ,        (“c”)     ,       “aaabc”。
 
ヒント:1 <= K <= S.length <= 1000 S 小文字だけで構成されています.最初は列で可能な変化文字列を広く遍歴しましたが、タイムアウトしました.つぎをしました.K>1は直接にすべての字母の組み合わせの最小字典の序文に戻ります.ACです.神様に感謝します.
 
/**
 * @param {string} S
 * @param {number} K
 * @return {string}
 */
var orderlyQueue = function(S, K) {
    if (K > 1) {
        var s = S.split("");
        s.sort();
        return s.join("");
    }
    var sSet = new Set();
    var q = [S];
    while(q.length > 0) {
        var s = q.shift();
        sSet.add(s);
        for (var i = 0; i < K; i++) {
            var sub = s.substring(0, i) + s.substring(i + 1) + s[i];
            if (!sSet.has(sub)) {
                q.push(sub);
            }
        }
    }
    var arr = Array.from(sSet);
    arr.sort();
    return arr[0];
};