zoukankan      html  css  js  c++  java
  • LeetCode Javascript实现 100. Same Tree 171. Excel Sheet Column Number

    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;
     };

    好桑心啊,感觉自己笨笨的- -。不早了要睡了。梦里休息休息吧!

  • 相关阅读:
    springmvcIntercept(拦截器)
    springmvc多文件上传
    websphere8 从安装到部署 测试集群应用程序 安装j2ee程序(非常详细)
    WebSphere集群环境修改IHS端口号的方法
    WAS缓存问题
    websphere部署中文乱码问题
    WAS8.5安装和部署
    MQ7.5以后的权限问题解决
    IBM websphere MQ远程队列的简单配置
    MQ--API总结
  • 原文地址:https://www.cnblogs.com/cndotabestdota/p/5741035.html
Copyright © 2011-2022 走看看