携程前端 复盘

有没有老哥帮忙看一下代码哪里不对?万分感谢
第一题  对称字符  83%
function fn(str){
    if(str.length===0)return
    let arr=str.split('')
    let set=new Set(arr)
    arr=[...set].sort()
    let L=0
    let R=arr.length-1
    let res=0
    while(L<R){
        let Left=arr[L].charCodeAt()
        let Right=arr[R].charCodeAt()
        if((Left+Right)===219){
            res++
        }
        L++
        R--
    }
    return res
}
let str='aazzyb'
console.log(fn(str))
第二题:题目都没看懂,放弃
第三题:背包问题 20%
let Evalue=[8,4,6]
let Tcost=[3,1,2]
let Time=[4,2,2]
let k=3
function fn(Evalue,Tcost,Time,k){
    let M=Math.max(...Time)
    const dp=(new Array(M+1)).fill(0)
    for(let j=0;j<k;j++){
        let item =Time[j]   //某一事件
        for(let i=M;i>=Tcost[j];i--){
            dp[i]=Math.max(dp[i],dp[i-Tcost[j]]+Evalue[j])
        }
    }
    return dp[M]
}
console.log(fn(Evalue,Tcost,Time,k))
携程让我认识到菜逼还是那个菜逼


#笔试题目##携程#
全部评论
 public static void main(String[] args){             Scanner sc = new Scanner(System.in);             int N = sc.nextInt();             int a[][] = new int[N][3];             int maxday=0;             for(int i=0;i<N;i++){                 a[i][0] = sc.nextInt();                 a[i][1] = sc.nextInt();                 a[i][2] = sc.nextInt();                 if(maxday<a[i][2]) maxday=a[i][2];             }             int dp[][] = new int[N+1][maxday+1];             for(int i=1;i<=N;i++){                 for(int j=1;j<=maxday;j++){                     if(j<a[i-1][1]||j>a[i-1][2]){                         dp[i][j] = dp[i-1][j];                     }                     else{                         dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j-a[i-1][1]]+a[i-1][0]);                     }                 }             }             System.out.println(dp[N][maxday]);                      } 我写的第三题,但不会js不知道对不对
点赞 回复 分享
发布于 2020-09-08 21:32
**。。。第一题这个意思啊 我还以为是位置上第一个对应最后一个对称,第二个对应倒数第二个对称。。。。难怪一直过不了 不好好读题的下场啊,看到对称直接写了
点赞 回复 分享
发布于 2020-09-09 16:10
这是笔试还是面试啊,手撕代码问背包?
点赞 回复 分享
发布于 2020-09-23 11:24

相关推荐

1 4 评论
分享
牛客网
牛客企业服务