码迷,mamicode.com
首页 > 其他好文 > 详细

LeekCode解题记录

时间:2019-09-24 17:19:34      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:cal   ref   ret   mon   class   天堂   let   tco   ===   

感觉自从上次用简单算法解了两道小学生题后,感觉就停不下来了。然后就开始在网上找类似的题目,再然后就发现了LeekCode这个网站,专业的算法解题网站,提供题目并且支持在线编辑代码(支持js),之后会通过大量的测试用例来检测你的代码执行结果,并会记录每一次的提交记录。最重要的是,有一个题解模块(玩家交流模块)可以看到别人的解法(玩家自主发言,你也可以发布你自己的解法,当然这之中也有官方发布的题解)。 对于我来说,感觉简直就是来到了天堂一般。虽然我是做前端的,但是我依然对算法充满了兴趣(不太能理解有一些同做前端的同事或朋友并不关心算法的想法,当然他们也不太能理解我的想法)。

我现在兴趣正浓,不过也不知道自己能坚持多久。但是我觉得必要的记录和回顾还是必不可少的。我现在的打算是每天至少完成一个算法,先由浅入深,从简单的算法开始吧,培养思维,再继续深入。

LeekCode--1.两数之和
给定一个整数数组 nums?和一个目标值 target,请你在该数组中找出和为目标值的那?两个?整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

解题思路:第一题很简单(果然网站对于新人还是很友善的)。使用两层for循环依次叠加比较便可实现。

var twoSum = function(nums, target) {
    for(let i=0;i<nums.length;i++){
        for(let j=nums.length-1;j>i;j--){
            if(target===nums[i]+nums[j]){
                return [i,j];
            }
        }
    }
};

然后去看了一下别人的解法,发现自己很low,别人都是用map解的,少了一层遍历,会节省时间,用了map会占用更多空间,典型的用空间换取时间的解法。基本思路:边比较边存值。利用map的特殊性,将数组的值作为map的键,值对应的索引作为map的值。遍历数组,用target与每一项值作差,看是否存在于map中,如存在则返回map中存的索引和当前循环变量,如不存在则将当前值及其索引存入map中。

var twoSum = function(nums, target) {
    let m=new Map();
    for(let i=0;i<nums.length;i++){
        if(m.get(target-nums[i])||m.get(target-nums[i])===0){
            return [m.get(target-nums[i]),i];
        }else{
            m.set(nums[i],i);
        }
    }
};

LeekCode--118.杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。
技术图片
在杨辉三角中,每个数是它左上方和右上方的数的和。

解题思路:杨辉三角应该是所有程序员都实现过的算法之一吧,依旧是两层for循环可以实现,外层循环实现层数,每层的第一个和最后一个数字固定为1,其他数字为上一层对应位置和前一位置值的和。

var generate = function(numRows) {
    let list=[];
    for(let i=1;i<=numRows;i++){
        let listA=[];
        listA[0]=listA[i-1]=1;
        for(let j=1;j<i-1;j++){
            listA[j]=list[i-2][j-1]+list[i-2][j];
        }
        list.push(listA);
    }
    return list;
};

今天写了两个最简单的,明天继续。

LeekCode解题记录

标签:cal   ref   ret   mon   class   天堂   let   tco   ===   

原文地址:https://www.cnblogs.com/eYan/p/11579167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!