leetCodeの週試合の100は題を解いてjavascriptを報告します.
7036 ワード
もっと読む
競技の住所:
https://leetcode-cn.com/contest/weekly-contest-100
896.単調数列
896.Monotonic Aray
配列が単調に増減したり、単調に減少したりするなら、それは単調である.
すべてに対して
与えられた配列
例1:
ヒント:
897.ツリーを逐次検索する
897.Increasung Order Search Tree
二叉の木を与えて、ツリーを並べ直します.一番小さいのは木の根の結点です.各結点は左の子の結点がなく、一つの右の子の結点しかありません.
例:
ヒント:
指定されたツリーの接合数は1と2の間です. 100の間各結点には0から1000までの範囲内の唯一の整数値があります.新しいツリーを順次生成します.
898.サブ行列はビットまたは操作による
898.Bitwise ORs of Subarrays
私たちは負ではない整数配列を持っています.
例1:
ヒント:
899.整列行列
899.Orderly Que
小文字からなる文字列を与えました.
移動するたびに、私たちは前を選ぶ.
任意の回数の移動後に辞書順に並べられる最小文字列を返します.
例1:
ヒント:
競技の住所:
https://leetcode-cn.com/contest/weekly-contest-100
896.単調数列
896.Monotonic Aray
配列が単調に増減したり、単調に減少したりするなら、それは単調である.
すべてに対して
i <= j
、A[i] <= A[j]
、では、配列 A
は、単調に増加します.すべてに対して i <= j
、A[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];
};