/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} p * @param {TreeNode} q * @return {boolean} */ var isSameTree = function(p, q) { if(p===null&&q===null){ return true; } if(p===null&&q!==null){ return false; } if(q===null&&p!==null){ return false; } if(p.val!==q.val){ return false; } if(isSameTree(p.left,q.left)&& isSameTree(p.right,q.right)){ return true; } else{ return false; } };
判断两个二叉树是否是相同,个人思路就是各类状况列出来,出错就false,而后false就会一直上浮到最上面,最后返回出正确的boolean值。javascript
Your runtime beats 74.85% of javascriptsubmissionsjava
/** * @param {string} s * @return {number} */ var titleToNumber = function(s) { var sl = s.length; var sc,result=0,i=0; while(sl!==0){ sc = s.charAt(sl-1); result = (sc.charCodeAt()-64)*Math.pow(26,i)+result; sl--; i++; } return result; };
这题主要用到函数charAt();charCodeAt();Math.pow(x,y)至关于转换成26进制的运算,字母和数字之间的转换用ASCII码完成。
Your runtime beats 22.00% of javascriptsubmissions.不知为什么个人方法老是如此辣鸡- -。有机会第二次作的时候再追求效率吧node
这题个人方法是,代码超时,很不幸数组
//超时代码 var isAnagram = function(s, t) { s = s.split(""); t = t.split(""); var bb = true; if(s==""&&t==""){ return true; } if(s.length!=t.length){ return false; } var sl = s.length; for(i=0;i<=sl-1;i++){ var sin = s.indexOf(t[i]); if(sin!=-1){ delete s[sin]; // s.splice(sin,1); // t.splice(0,1); } else{ bb=false; } } return bb; };
因而我去搜寻正确的解法,找到如下两个数据结构
//简单易懂又很厉害的方法 /** * @param {string} s * @param {string} t * @return {boolean} */ var isAnagram = function(s, t) { if(s.length !== t.length){ return false; } var s1 = s.split(""); var t1 = t.split(""); s1.sort(); t1.sort(); var ss = s1.join(""); var tt = t1.join(""); if(ss !== tt){ return false; } return true; };
下面是哈希表方法,散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它经过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫作散列函数,存放记录的数组叫作散列表。函数
算是让我感觉到了数据结构的力量!this
//哈希表什么方法,反正比个人厉害 /** * @param {string} s * @param {string} t * @return {boolean} */ var isAnagram = function(s, t) { if(s.length !== t.length){ return false; } var i, dict = {}; for(i = 0; i < s.length; i++){ if(!dict[s[i]]){ dict[s[i]] = 1; }else{ dict[s[i]]++; } } for(i = 0; i < t.length; i++){ if(!dict[t[i]] || dict[t[i]] === 0){ return false; }else{ dict[t[i]]--; } } return true; };
好桑心啊,感受本身笨笨的- -。不早了要睡了。梦里休息休息吧!spa