/** * 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