阿里3.25笔试题 0.75+0

 
太紧张 上来第一题 没仔细想清楚就做了 结果超时,然后用了第二种方法,过了0.75


第一题
一个只有0和1的数组,拿掉其中任意一个0或者1 ,求连续1最长的个数。

比如 1,1,1 返回2
比如1,1,0,1,0,1 返回3

输入 示例
2// 表示有2条测试样例
3// 表示接下来这条测试样例 包含3个数
1 1 1 // 表示接下来这条测试样例
6// 表示接下来这条测试样例 包含3个数
1 1 0 1 0 1 // 表示接下来这条测试样例

输出样例
2
3


// golang 
package main

import "fmt"

func f(arr []int) int {
	list := make([]int, 0)
	curr := 0
	zero := 0
	i := 0
	for i < len(arr) && arr[i] == 0 {
		i++
	}
	for ; i < len(arr); i++ {
		if arr[i] == 0 {
			zero++
			continue
		}
		if arr[i] == 1 {
			if zero == 0 {
				curr++
			} else if zero == 1 {
				list = append(list, curr)
				zero = 0
				curr = 1
			} else if zero > 1 {
				list = append(list, curr)
				list = append(list, 0)
				zero = 0
				curr = 1
			}
		}

	}
	list = append(list, curr)
	return f2(list)
}

func f2(arr []int) int {
	if len(arr) == 1 {
		return arr[0] - 1
	}
	n := len(arr)
	res := 0
	for i := 1; i < n; i++ {
		res = max(res, arr[i-1]+arr[i])
	}
	return res
}

func max(a, b int) int {
	if a < b {
		return b
	}
	return a
}

func main() {
	t := 0
	fmt.Scan(&t)
	for i := 0; i < t; i++ {
		a := 0
		fmt.Scan(&a)
		arr := make([]int, a)
		cnt := 0
		for j := 0; j < a; j++ {
			fmt.Scan(&arr[j])
			if arr[j] == 0 {
				cnt++
			}
		}
		if cnt == 1 || cnt == 0 {
			fmt.Println(a - 1)
			continue
		}
		res := f(arr)
		fmt.Println(res)
	}

}




第二题 粗略读了一个 感觉是和图相关的 后来没时间做了
#阿里巴巴##笔试题目#
全部评论

相关推荐

点赞 评论 收藏
转发
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本文只是随想,谈谈候选人的要求和对候选人的要求。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;负责三次校招,竞争确实越来越白热化确实有体会到,很多候选人在项目之外的经历逐渐增多,包括开源经历、一些公开课作业,e.g.&nbsp;MIT&nbsp;6.824。对于基础架构方向的同学,这类课程可能比较有用。对于业务/前台方向的同学,于面试官而言,这些课程只能说锦上添花。面试更在乎的是你的基础和项目,在长达半个小时的面试流程中,你要和面试官产生一定的共鸣,如果双方的知识领域不存在交叉,可能想看两生厌——面试官无法客观的评价你,你也认为面试官找不到你的G点,这很难受。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;至于开源项目,其实更多的反映了你的积极态度和一定的隐含信息:会使用git、对开源项目有一定的了解,但是issue、typo、readme、config&nbsp;change类型的PR简直是场灾难,如果面试官恰巧也有开源经历(尤其是基架方向),并且认真的看了你的简历,这会被认为是投机取巧。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Coding,基础和项目,是面试官对你的专业素养了解的全部渠道。coding这件事不多说了。基础的话,不建议死记硬背面经,这种结论性的浓缩原理,在面试官下探你深度的时候,往往是很苍白的。而且比较出名的JavaGuide和Cyc2014,其实有很多原理性的错误,还是比较建议看书和文档,最权威的还是官方文档,很多官方文档都写的不错。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;项目介绍和讨论是面试官和你交锋的核心阶段,项目的探讨能向面试官展示你知识的广度和深度,这些年流行的的项目看起来差异化不大,所以有日常实习经历的同学会更有优势一点,但只要表现你有认真做过你的项目,并且了解项目相关的中间件知识和相关业务场景的处理方式,你和有实习经历的同学差别不大——只是欠缺了实际工作中协同完成项目的经验罢了。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;面试官的要求其实不算多,笔试可以,基础能答得上来,项目确实做过,让面试官知道你对项目有一定的想法,差不多就能过关了。有几个同学在后台diss我,n段大厂经历/开源项目为啥还是被pass,我建议复盘一下,看看实习和开源项目的质量,另外实习到底做了什么,一定要讲清楚。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最后打个广告,目前淘天-天猫技术-品牌行业技术还在招春招实习生,第一次投递和转部门的同学都可以试试,具体情况可以看我其他帖子#校招过来人的经验分享##实习##春招##阿里巴巴#
点赞 评论 收藏
转发
1 6 评论
分享
牛客网
牛客企业服务