全排列

/*** @param {number[]} nums* @return {number[][]}*/Array.prototype.contains = function(num){for(let i=0;i<this.length;i++){if(this[i]===num){return true;}}return false;};var permute = function(nums) {let res = [];let track = [];backtrack(nums,track);return res;function backtrack(nums,track){if(nums.length===track.length){let newTrack = [];Object.assign(newTrack,track)res.push(newTrack);return;}for(let num of nums){if(track.contains(num)){continue;}track.push(num);backtrack(nums,track);track.pop();}}};
子集

这个需要剪枝:
/*** @param {number[]} nums* @return {number[][]}*/var subsets = function(nums) {let res = [];let track = [];trackback(nums,track,0);return res;function trackback(nums,track,start){let newTrack = [];Object.assign(newTrack,track);res.push(newTrack);for(let i=start;i<nums.length;i++){track.push(nums[i]);trackback(nums,track,i+1)track.pop();}}};
二叉树最小高度

输入:root = [3,9,20,null,null,15,7]输出:2
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var minDepth = function (root) {
if (!root === true) {
return 0;
}
let queue = [];
let depth = 1;
queue.push(root);
while (queue.length !== 0) {
// 踩坑:这里queue.length要另外写在外面,要是写在循环里是动态改变的,最终结果始终输出1
let ql = queue.length;
for (let i = 0; i < ql; i++) {
let cur = queue.shift();
if (cur.left === null && cur.right === null) {
return depth;
}
if (cur.left !== null) {
queue.push(cur.left);
}
if (cur.right !== null) {
queue.push(cur.right);
}
}
depth++;
}
return depth;
};
