2018深信服拼多多秋招笔试真题

网易互娱

 

 

处理条件1;

处理5;

处理3,4的同时处理2;

对最后两个字符处理2.

 

对第3、4个条件的处理:

judgeDengcha(int a,b,c){//对第3个条件的处理:

       if a,b,c都是数字 && 2b == a + c

           return  true;

      else

            return false;

}

judge3Small(a,b,c){}; \\对第4个条件的处理。

judge3Big(a,b,c){}; \\对第4个条件的处理。

j = 0;

while(j++ < a.length -3){

     if ( judgeDengCha(a[j-2],a[j-1],a[j])||  judge3Small(a,b,c)   || judge3Big(a,b,c) ||)

         return false;

}

处理最后两个字符

 

处理条件1;

处理5;

处理3,4的同时处理2;

对最后两个字符处理2.

 

 

2018拼多多

贪心+动态规划(最长升序子序列)+dfs

题目:

一个无序正整数的数组(元素个数上限是50),每次可以取数组中的一个严格升序或者严格降序的序列,问你最少多少次能把数组中全部元素取走?

解法:

假设求最长严格升(降)子序列的复杂度是  a ; 在此操作基础上做贪心,每次对剩余序列有找最大升序子序列和最大降序子序列2种方案 ,两种方案都要保留,不能对两种方案取贪心只留一种,所以 此处dfs回溯算法算法复杂度上界是 (2^n ,  当所有数字相等时达到上界),如果最大升序列同时有多个解,选取结尾数字最大的一种方案,降序同理。最终这个算法的复杂度是  (2^n)*a  , a = nlogn 或 n*n

 

暂未找到反例。

 

 

 

2018深信服

 

 递推-抓兔子

 

d[i][j]=1 表示为了不被抓住,第i天兔子不能出现在j号洞。根据输入的农夫第i天检查的洞的序号k, 将数组初始化为 d[i][k] = 1. 
    然后从第n天递推第n-1天不能出现的洞,标记为1. 有两种情况, d[i][2或4] = 1 时, d[i-1][1或5] 要赋值为1;   if (d[i][t-1] && d[i][t+1] == 1) d[i-1][t] = 1 .
      如果d[1][j] 全部等于1,表示兔子第一天哪都不能出现,农夫胜利;反之,农夫不是必胜测略。


空间复杂度优化:由于d[i-1]只与d[i]有关,可将二维数组压缩为2个一维数组。

将第0个洞和第n+1两个辅助洞初始化为1, 则可以统一递推公式   d[i-1][j] =  d[i][j-1] && d[i][j+1]

 

Hash-发礼品

先存hash,hash能插入,再存List,最后输出list。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值