阿里3.26笔试第一题

关于卡牌的那一题 本菜狗没做出来😭
有大神可以给一个通俗易懂的java版本吗?看了一个楼主写的java版本,不是很好理解
万分感谢
#笔试题目##阿里巴巴#
全部评论
就是把0看成分割1的隔板,求最大的格子里小球数目
点赞
送花
回复
分享
发布于 2021-03-27 11:31
最长不重复子串的变形,判断条件变一下,子串中不能包含2个0
点赞
送花
回复
分享
发布于 2021-03-27 18:54
滴滴
校招火热招聘中
官网直投
var fn = function (s) {   var max=0   var num = 0   for (let i = 0; i < s.length; i++) {   if (s[i]==1) {     num++     max=Math.max(max,num)   }else{       var j=i+1       while(s[j]==1){         num++         j++       }       max=Math.max(max,num)       num=0   }   }   return max }  js的能看懂把
点赞
送花
回复
分享
发布于 2021-03-28 10:51
没有参加这次的机试,不知道这样的思路可不可以通过。  * 原数组增加一位,最后一位 置为 0,维护一个同样长度的数组用来 记录每个 0 前后的 1 的个数和。  * 定义一个整型 count 用来统计 两个0之间的 1 的数量  * 一个整型 index 记录上一个 0 的下标
点赞
送花
回复
分享
发布于 2021-03-30 16:28
            int m = Integer.parseInt(br.readLine());             int[] num = new int[m + 1];             String[] s = br.readLine().split(" ");             for(int j = 0; j < m; j ++) {                 num[j] = Integer.parseInt(s[j]);             }             num[m] = 0;              int[] arr = new int[m + 1];             int count = 0;             int index = -1;              if (num[0] == 0) {                 index = 0;             }             int max = 0;             for(int j = 0; j <= m; j ++) {                 if (num[j] == 1) {                     count ++;                 } else {                     arr[j] += count;                     max = Math.max(max, arr[j]);                     if (index >= 0) {                         arr[index] += count;                         max = Math.max(max, arr[index]);                     }                     count = 0;                     index = j;                 }             }             System.out.println(max == m ? m - 1 : max);
点赞
送花
回复
分享
发布于 2021-03-30 16:30

相关推荐

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