100. Same Tree
/** * 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值。
Your runtime beats 74.85% of javascriptsubmissions
171. Excel Sheet Column Number
/** * @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.不知为何我的方法总是如此辣鸡- -。有机会第二次做的时候再追求效率吧
242. Valid Anagram
这题我的方法是,代码超时,很不幸
//超时代码 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)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
算是让我感受到了数据结构的力量!
//哈希表什么方法,反正比我的厉害 /** * @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; };
好桑心啊,感觉自己笨笨的- -。不早了要睡了。梦里休息休息吧!