算法- js 二叉树,二叉查找树的基本实现及递归与循环的版本
二叉树 二叉树是一种属性结构,它的特点是每个节点最多只有两个分支节点,一颗二叉树通常由根节点,分支节点,叶节点组成,而每个分支节点也常常被称作为一颗子树。 根节点:二叉树最顶层的节点 分支节点:除了根节点以外且拥有叶子节点 叶节点:除了自身没有其他节点 中节点:当前节点的父节点(中序遍历) 层 根的层次为0(一般来说),根的直接左右孩子层次为1,以此类推逐渐递增 度 二叉树节点的度数指该节点所含子树的个数 二叉树的深度是指所有节点中最深节点(叶节点)所在层数 常用术语: 在二叉树中,我们常常用父节点和子节点来描述,你如图中的2为6和3的父节点,反之6和3是2的子节点 二叉树的三个性质 在二叉树的第 i 层上,之多有 2 ^ (i - 1) 个节点 i=1时,只有一个根节点,2^(i-1) = 2^0 = 1深度为k的二叉树至多有2^k-1个节点. i=2时,2^k-1 = 2^2 - 1 = 3个节点对任何一棵二叉树T,如果总结点数为n0,度为2(子树数目为2)的节点数为n2,则n0...
异或运算符 ^ 理解与应用
简单搞一题 异或运算符 ^特性 交换律:a ^ b ^ c <=> a ^ c ^ b 任何数与 0 异或,为任何数:0 ^ n => n 相同的数异或为 0 搞一题 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 输入: [2,2,1] 输出: 1 var singleNumber = function(nums) { let xor; for (let i = 0; i < nums.length; i++) { xor ^= nums[i] } }; 根据特性 1,所以上面的可以理解为2 ^ 2 ^ 1 => 0 ^ 1 => 1
面试 - js 在指定数组中找出不重复的两数之和为 target
简单搞一题,逆思维解法 原题 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 解var twoSum1 = function(nums, target) { for (let i = 0, length = nums.length; i < length; i++) { const current = nums[i]; const diff = target - current; if (diff === current) continue; const tIndex = nums.lastIndexOf(diff); if (tIndex > -1...
面试 - js 二分法,二分查找
记录二分法 二分法 二分查找是一种高效搜索法,是一种可以在有序数组中搜索到特定元素的算法 优缺点 优:比较次数少,查找速度快,平均性能好, 缺: 要求待查表为有序表,且插入删除困难, const arr = [2, 1, 3, 5, 6, 4, 7]; function bubbleSort(arr) { if (!arr.length) return arr; const copyArr = arr.slice(); for (let i = 0, length = copyArr.length; i < length; i++) { for (let j = 0; j < length - i - 1; j++) { const current = copyArr[j]; const next = copyArr[j + 1]; if (current > next) [copyArr[j], copyArr[j + 1]] = [next, curr...
面试- 头条的简单的一道面试题
很简单~ 但是容易错~ 原题 执行代码求输出,并说明为什么,严格模式下输出有变化吗,为什么 var a = function () {this.b = 3;} var c = new a(); a.prototype.b = 9; var b = 7; a(); console.log(b); console.log(c.b); 点击展开 console console.log(b); // 3 console.log(c.b); // 3 比较容易混淆的是可能不会注意到最后函数 a 的执行~
配置 React 源码的本地调试环境
配置 React 源码的本地调试环境 creat-react-app <项目名称> yarn run eject clone 官方源码(目前是 master latest)小版本可能会有些许异同,可以根据命令行的报错信息再去搜索(镜像 react 仓库,clone 慢的可以使用这个) 根目录中执行git clone --depth=1 https://github.com.cnpmjs.org/facebook/react.git src/react 修改相关配置 链接本地源码react/config/webpack.config.js resolve: { alias: { 'react-native': 'react-native-web', - ...(isEnvProductionProfile && { - 'react-dom$': 'react-dom/profiling', - 'scheduler/tracing': 'schedu...
node 中 request 的 302 的相关问题
在 node request 爬虫中遇到 302 的相关问题 followRedirect 不进行跳转 此时可获得跳转前的 response 的相关信息,这在某些场景中很有用~ rp({ uri, + followRedirect: false, headers: { "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3" } }, (err, resp, body) => { })
react、react-native 配置 Mobx,Mobx的多 store
安装 Mobx 及所需相关 babel 依赖 Mobx scriptnpm insatall mobx --save npm insatall mobx-react --save babel scriptnpm install babel-plugin-transform-decorators-legacy --save-dev npm install @babel/plugin-proposal-decorators --save-dev # 或者 npm install @babel/plugin-proposal-decorators babel-plugin-transform-decorators-legacy --save-dev 配置 babel .babelrc 或者 babel.config.js 或者在 package.json 中 scriptplugins:[ ["@babel/plugin-proposal-decorators", {"legacy":true}], ["@babel/plugin-propo...
谷歌playStore镜像 Chrome 浏览器插件
APk download谷歌应用商店时常抽风,所以、备个稳定的下包方法能减少时间的浪费 下载地址
mac 配置java环境变量,jdk 的 mac 百度云盘资源
记录配置流程~ JDK8 Mac 的百度网盘资源链接: https://pan.baidu.com/s/1i0Fq7UVkmAtRTal-_J9GsQ提取码: 1234 Mac 环境变量配置 打开命令行 cd ~ scriptcd ~ 编辑配置文件 scriptopen .bash_peofile 3.配置路径根据自己的安装版本修改 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home PATH=$JAVA_HOME/bin:$PATH:. CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:. export JAVA_HOME export PATH export CLASSPATH scriptsource .bash_profile java -version













