讨论/题目交流/🏆2019 力扣杯 - 全国秋季编程大赛/
🏆2019 力扣杯 - 全国秋季编程大赛

image.png

你来写我来送: 欢迎大家在本条讨论下分享和编写本次 🏆 力扣杯大赛的解题思路 / 题解

在「圈子」内撰写题解文章的同学也可以将文章链接贴在本条讨论下,力扣君将在 2019 年 10 月 10 日下午 16:00 精选 两篇优质内容,分别送出 1 本 《程序员面试金典》。
1821567415874_.pic_hd.jpg

展开讨论

第一题:
思路:
Step1:分别做差,存到一个数组里
Step2:遍历这个数组,如果差为零,则证明两个数字是相等的,结果+1即可
代码:

var game = function(guess, answer) {
   let map=[]
   let ans=0
   map.push(answer[0]-guess[0])
    map.push(answer[1]-guess[1])
    map.push(answer[2]-guess[2])
    console.log(map)
    for(let item of map){
        if(item===0){
            ans+=1
        }
    }
    return ans
};

第二题:
思路:
Step1:先看输出格式,是分子分母组成的数组,因此,要分别找到分子和分母
Step2:得出递推公式,找到临界条件
javascript代码:

var fraction = function(cont) {
    //递推
        var answer=[]
        var len=cont.length
        var i=0
        //边界条件
        if(len!==1){
            var temp=fraction(cont.slice(i+1,len))
            console.log(temp)
            answer[0]=cont[i]*temp[0]+temp[1]
            answer[1]=temp[0]
            return answer
        }else{
            return  [cont[i],1]
        }
};

第三题:
思路:
Step1:机器人走的路径,将坐标push到一个数组中来
Step2:判断是否有障碍物。如果没有障碍物,则判断路径是否等于终点[x,y]
Step3:如果有障碍物,判断路径中是否包含了障碍物的坐标,如果有,则直接返回false。如果没有,则判断终点和[x,y]相不想等
注意点:数组的比较,两个数组不能直接比较,因为指针不一样,得转成字符串进行比较
javascript代码:

var robot = function(command, obstacles, x, y) {
    let hashmap=new Map()
    let roat=[]
    let arr=command.split('')
    let up=0
    let right=0
      arr= arr.concat(arr)
       let sum=x+y
       arr.splice(sum,arr.length-sum)
       for(let item of arr){
           if(item==='U')up+=1
           else if(item==='R')right+=1
           roat.push([right,up])
       }
      let len=roat.length-1
        if(obstacles.length===0){
            for(let item of roat){
                //无障碍
            if(item=[x,y]){
                return true
            }else{
                return false
            }
         }        
    }
         else{
             //有障碍
            //障碍在终点之后
             for(let item of obstacles){
                 //如果终点在障碍之前
                 if(roat[len][0]<item[0]&&roat[len][1]<=item[1]||roat[len][0]<=item[0]&&roat[len][1]<item[1]){
                      //只判断终点和路径相不想等
                     if([x,y].toString()===roat[len].toString()){
                         return true
                     }else{
                         console.log(roat[len])
                         return false
                     }
                 }else{
                     for(let r of roat){
                       hashmap.set(r.toString(),1)
                     }
                     console.log(roat)
                     console.log(hashmap)
                     console.log(item)
                     if(hashmap.has(item.toString())){
                         console.log(1)
                         return false
                     }else{
                         return true
                     }
                 }
             }
             
         }
 
};

第四题和第五题我目前的能力还完成不了,继续努力啦,还是希望可以得到那本神作呀。

1
展开全部 23 讨论