LeetCode Javascript实现 258. Add Digits 104. Maximum Depth of Binary Tree 226. Invert Binary Tree
2016-07-29 17:40
405 查看
258. Add Digits
Digit root 数根问题/** * @param {number} num * @return {number} */ var addDigits = function(num) { var b = (num-1) % 9 + 1 ; return b; }; //之所以num要-1再+1;是因为特殊情况下:当num是9的倍数时,0+9的数字根和0的数字根不同。
性质说明
1.任何数加9的数字根还是它本身。(特殊情况num=0)
小学学加法的时候我们都明白,一个数字加9,就是把十位加1,各位减1。因此十位加个位的和是不变的;如果有进位,即十位上是9,那么进位之后十位会变成0,百位会加1,道理和一个一位数加9是一样的。2.9乘任何数字的数字根都是9。
同样是小学时学乘法时,我们在计算一位数乘九的时候,把十只手指头排开,乘几便弯下第几只手指头,前后的手指个数便是那个结果。它的数字根永远是10-1=9。多位数的化,拆分每一位数字即可。104. Maximum Depth of Binary Tree
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {number} */ var maxDepth = function(root) { if(root===null){ return 0; } var le = maxDepth(root.left); var ri = maxDepth(root.right); return 1+Math.max(le,ri); };
【注】custom test里面的binary tree visualizer使用数组产生二叉树,如[1,2,3,4,5]
这题考察二叉树深度的计算,使用遍历完成,从底层return0不断+1到初始位置完成计算
226. Invert Binary Tree
题目描述里面的这句话笑了- -: Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off.
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {TreeNode} */ var invertTree = function(root) { if(root===null){ return root } var tem = root.left; root.left = root.right; root.right = tem; invertTree(root.left); invertTree(root.right); return root };
【注】这题和上面的二叉树深度的题有点像,一下就做出来了,没什么好说的
相关文章推荐
- JSPatch的初步学习
- 重写json_encode()函数
- JS 两个input(单价和数量)输入,动态改变总价
- Sencha Ext JS 国际化和本地化
- litjson
- javascript设计模式学习之十六——状态模式
- js数组去重的四个方法
- JS权威指南读书笔记(一)
- Javascript实现CheckBox的全选与取消全选的代码
- JavaScript:事件流与事件处理程序
- 声明JavaScript函数的六种方法
- JSF2导航应用demo
- JS截取字符串常用方法详细整理
- JSON的几种解析方法
- JSON的一些操作
- jsp学习(五)
- javaScript中this的用法
- js实现页面埋点
- js的宽高度offsetWidth;clientWidth;
- Javascript 原型链