网易923笔试-算法类

43.3 100 0 0

咋这么难呢

贴一下第二题代码

题目:小红有个数组,数组相邻长度差值最多为1,并且元素都是正整数。现在小红知道数组长度为n,数组和为m,小红想知道所有符合条件数组中,p位置最大值是多少(起始位置为1)
输入三个整数n,m,p
1<=p<=n<=m<=10**9
思路:二分查找check判断,难点在于怎么快速算出整个数组的最小值,贪心思想,p位置为mid,然后逐渐减一,需要判断两个边界条件,如果减到最小值了还没到边界,就要补1.
n,m,p = map(int,input().split())

def check(mid):
    count = 0
    if p + mid - 1  > n:
        count += (2 * mid - n + p ) * (n - p + 1) / 2
    else:
        count += (mid + 1) * mid / 2 + (n - p - mid + 1)
    if p - mid + 1 <= 0:
        count += (mid-1 + mid - p + 1) * (p - 1) / 2
    else:
        count += mid * (mid - 1) / 2 + (p - mid)
    return count<=m


left,right = 1, m - n + 1
while left < right:
    mid = left + (right - left + 1)//2
    if check(mid):
        left = mid
    else:
        right = mid - 1
print(left)

全部评论
第一题谁教教我怎么写
点赞 回复 分享
发布于 2023-09-23 16:39 上海
分数一毛一样,太难了,第四题不能用次方,疯狂找规律找不出来
点赞 回复 分享
发布于 2023-09-23 16:13 广东
第四题矩阵乘法快速幂,直接快吐出来了,写了45-55min
点赞 回复 分享
发布于 2023-09-23 16:05 浙江

相关推荐

HR_丸山彩同学:你的项目描述里,系统设计讲了很多:MemCube是什么、三级存储架构怎么设计、四种遗忘策略分别是什么。这些面试的时候讲没问题,但简历上不需要这么细。 简历要突出的是影响力,不是实现细节。面试官看简历的时候想知道的是「这个项目有多大价值」,不是「这个项目具体怎么实现的」。实现细节是面试时候聊的 怎么改:技术细节可以精简为一句「采用三级存储架构+四种遗忘策略」,把省出来的篇幅用来写影响力。比如:项目有没有开源?有没有写成技术博客?有没有被别人使用过? 校园经历没有任何信息量,任何人都可以写这句话,写了等于没写。更关键的是,你投的是技术岗,校园活动经历本来就不是加分项。如果非要写,必须写出具体的数字和成果。如果你没有这些数字,那就老老实实删掉 「端到端耗时缩减30-40%」要给出确切数字和绝对值。从1000ms降到600ms是降了40%,从100ms降到60ms也是降了40%,但这两个含义完全不一样。其他也是,涉及到数据,准备好证据,口径统一,面试会问 「熟练」「熟悉」「了解」混在一起用,读起来很乱。而且「了解前端需求」最好改成「具备前后端协作经验」
点赞 评论 收藏
分享
开发转测第二人:没实习的话,两个项目吧,八股也要准备一下,这个时间点有点小晚了
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务