もちろん、自分たちがやったことの棚卸しをしなければなりません。
問題1:バイナリーツリー
- アルゴリズムJSアルゴリズムツリートラバーサル
class Node{
constructor(data,left,right){
this.data = data
this.left = left
this.right = right
}
}
// Given the following binary tree, // 1 <---// / \// 2 3 <---// \ \// 5 4 <---// You should return [1, 3, 4].
leetcode example
var RightViewTree = function(root){
var results = // <= 返される配列
function traversal(node,depth){ //depth は階層の深さであり、返す配列のインデックスでもある。
if(!node) { return } // base condition
//そうでない場合は、結果に番号を追加する
if(!result[depth]) { result[depth] = node. data}
traversal(node.right, depth+1);
traversal(node.left,depth+1);
return results
}
**左、下、上からの視点は?
- ** 左 上のコードから2行を入れ替えるだけです。
再質問
- JS ディープコピーの実装方法
let results = JSON.parse(JSON.stringify(ターゲット)) // 結果 = JSON.parse(JSON.stringify(target))
この質問に答えるためにまず必要なことは、JSの基本的なデータ型と参照型を理解することです。
- 基本类型 => Number, Boolean, Null, undefined とシンボル
- 参照タイプ=> Object配列, Function, Date
まず、基本型はスタック上に固定メモリサイズで格納され、コピーされたときに直接代入されます。
//名前シーンリプレイ
var a = 100
b = a
b = 1000
console.log(a) ??? aは変更されていない
THE STACK
// ///before copy// -----------------
// -------|--------|// a | 100 <= Number// -------|--------|
// // after the copy// -----------------// b | 1000 | <= Number // -------|--------|// a | 100 | <= Number// -------|--------|
!参照型はヒープに格納されます コピーはアドレスをコピーします!
// Recursive Way
var deepCpy = function (obj){
var results = {}
for(let key in obj ){
if(Object.prototype.hasOwnProperty.call(obj,key)){ if(typeof obj[key] === 'object'){ target[key] = deepCpy(obj[key]) }else{ results[key] = obj[key] } }
} return results}///Test /// Test
var alpha = {a:"200",b:"300"}
var deep_cpy_beta = deepCpy(alpha)
alpha.a = "600"
console.log(deep_cpy_beta)
3つ目の質問(css basic)
- フレックスボックスのCSS実装方法、CSSレンダリングの優先順位
フレキシブルボックスについては、こちらをご覧ください:
インラインスタイル > マルチレベルセレクタスタイル > IDセレクタスタイル > CLASSセレクタスタイル > TAGセレクタスタイル
第四問
- http2.0