字节跳动&力扣 第197场周赛

今天参加了力扣和字节跳动联合举行的周赛,也是第一次参加周赛,一个半小时,一共四个题,只做出来了两个题,第三个题有了一点思路,奈何没时间了,但收获了200枚扣币,也是很开心了!下面是我本次参赛的前两题。
题一:好数对的数目
在这里插入图片描述
这个题目,我的解法是从左往右循环,共两层循环,第一层循环各个元素,第二层从第一层元素的下一个元素相比,判断是否满足nums[i]=nums[j]且i<j这两个条件。这个题是个easy题,用时较少。
代码如下:

 var n=0;//好数对的数目
 for(var i=0;i<nums.length-1;i++)
    {
        for(var m=i+1;m<nums.length;m++)
           {
               if(nums[i]===nums[m])
                  {
                      n++;
                  }
           }
    }
return n;

该题用时6min,因为怕出错罚时,所以在本地操作了一遍,耽误了一些时间。

题目二:仅含1的子串数
在这里插入图片描述
看到这个题,一时傻了眼,根本不知道思路从哪里来,刚开始还想用循环来找,结果发现根本不行(可能是我太菜了),接下来我想它们之间可能存在着某种规律,就开始找规律,运气还可以,找到了规律,任何一个字符串的所有子串数目为
字符串长度(字符串长度+1))除以2+1;1为空串,在此题中不考虑;*
找到这个规律后,我就想如果能够把只含1的字符串分割出来,然后求它的子串,问题不就解决了吗?且每个只含1的字符串都被0给隔开了,所以我就以0为分割点进行了字符串的分割;
代码如下:

 var i=0,m=0;
    s=s.split("0");//以0为分割点进行字符串分割为数组 
    while(i<s.length)
    {
        if(s[i]!==null)//当该数以0开始时分割出来的就包括空串,判断一下
    {
        m+=(s[i].length*(s[i].length+1))/2;//求子串数
    }
    i++;
    }
 return m;

用时40min,难度中等,太菜了!

题目三:概率最大的路径
在这里插入图片描述
本题看到了这个字,我就有点不知所措了,因为总时间只有一个半小时,所以只有一点思路,该思路还只可以实现三个节点的,需要我认真思考思考!
我的思路就是:将start与end节点组成一个数组a,循环遍历数组edges,查找其中内容是否和数组a相同,若相同,就记下这个数组下的概率;若不相同,就与edges中的下个元素用concat连接起来,观察是否能够达到要求,若能达到要求,则将它们的概率相乘记录起来,最后返回记录值中最大的那个数。
我的代码如下:

    var a=new Array();
    var b=new Array();
    a.push(start);
    a.push(end);
    for(var i=0;i<edges.length;i++)
    {
        
        if(edges[i].toString()===a.toString())
        {
                  m=succProb[i];
        }
        else
        {
            b=edges[i].concat(edges[i+1])
            console.log(b);
            if(b[1]==b[2]&&b[0]===start&&b[3]===end)
            {
                   n=succProb[i]*succProb[i+1];
            }
        }
    }
    return (Math.max(m,n));

这个思路只能实现3个节点的,大于3的无法找到实现,很大的一个bug!

题目四:服务中心的最佳位置
在这里插入图片描述
该题完全没有思路,你有思路吗?欢迎一起讨论。
以上题目均来自力扣:题目地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值