360算法笔试0920

四十道选择题,数学,数据结构,代码,cv等等。

code1:

len(nums)=n的数组,数组划分为k段后,求各段权重之和的最大值。

动态规划,感觉很难,很难想到怎么构造dp状态和转移方程

最后还有注意去重

n,k = map(int, input().split())
arr = list(map(int,input().split()))

sum_val = [[0]*n for _ in range(n)]
for l in range(n):
    seen = set()
    total = 0
    for r in range(l,n):
        if arr[r] not in seen:
            total += arr[r]
            seen.add(arr[r])
        sum_val[l][r] = total
dp = [[0]*(k+1) for _ in range(n+1)]
for i in range(1,n+1):
    dp[i][1] = sum_val[0][i-1]

for j in range(2,k+1):
    for i in range(j,n+1):
        best=-10**18
        for m in range(j-1,i):
            current_Val = dp[m][j-1] + sum_val[m][i-1]
            if current_Val > best:
                best = current_Val
        dp[i][j] = best
print(dp[n][k])

code2:

import sys
input_ = sys.stdin.read().split()
idx = 0
T = int(input_[idx])
idx += 1
for _ in range(T):
    n = int(input_[idx])
    idx+=1
    if n==0:
        print(0)
        continue
    h = list(map(int,input_[idx:idx+n]))
    idx += n
    if n==1:
        print(1)
        continue
    
    left = [1]*n
    for i in range(1,n):
        if h[i] > h[i-1]:
            left[i] = left[i-1]+1
        
    right = [1]*n
    for i in range(n-2,-1,-1):
        if h[i]<h[i+1]:
            right[i]=right[i+1]+1
    
    ans = max(left)
    if n >1:
        ans = max(ans,1+right[1])
    if n >1:
        ans = max(ans,1+left[n-1])
    for i in range(1,n-1):
        if h[i-1]<h[i+1] and h[i+1]-h[i-1]>=2:
            ans = max(ans,left[i-1]+1+right[i+1])
        else:
            ans = max(ans,left[i-1]+1,right[i+1]+1)
    print(ans)    

26秋招算法笔试 文章被收录于专栏

26秋招算法笔试

全部评论
dfs bfs这个我也是觉得有难度
点赞 回复 分享
发布于 11-07 12:41 陕西
四十道题好多
点赞 回复 分享
发布于 10-10 23:19 四川
第一题用的贪心,比dp好想一点
点赞 回复 分享
发布于 09-20 21:56 四川

相关推荐

11-18 21:04
已编辑
华中科技大学 前端工程师
一共四面,进度挺快,希望能开高一点timeline:10.20&nbsp;一面&nbsp;50min10.22&nbsp;二面&nbsp;40min10.28&nbsp;hr面&nbsp;50min&nbsp;&nbsp;秒过约10.30主管面但是因为种种原因一直改时间到11月11.11&nbsp;主管面&nbsp;&nbsp;50min一面:简历拷打20min,主要是实习业务和微前端框架,然后是八股:react&nbsp;hooks,有哪些,怎么用,useEffect和useEvent区别,useMemo和react.memo区别,为什么不能在条件里用浏览器css和js和dom的解析具体过程,谁先谁后表格缓存怎么做,首屏加载怎么监控的,虚拟表格实现原理,怎么做表格选型的平时怎么使用ai,有哪些心得怎么看待ai手撕忘了,应该不是特别难的不然我会记得p.s&nbsp;&nbsp;面试官好有礼貌,唯一一个称呼为您的,答错了会有正确解答,最后问我还有什么简历没问的我还以为是我没啥能问的二面:1.受到ddos攻击后有哪些应对方案2.前端安全用过哪些3.webpack配置过什么,有用过什么插件4.树摇原理5.react和vue区别6.为什么要微前端改造7.微前端隔离的原理,快照和proxy的优缺点8.服务器部署原理,回滚原理这个的手撕也忘了,没印象就是不太难三面hr面:hr挺好的,没有压力1.个人经历询问2.为什么跑路了实习3.觉得最有成就感的事情4.有没有主导过项目5.三个词语形容自己&nbsp;&nbsp;为什么这么说6.现在最想提升的方面7.为什么选AI初创不选大厂8.对AI的看法四面主管面:拖了好久才来面,还以为不想要我了一眼看出来是字节出来的,之前的同事都是这种高效礼貌疏离的1.讲讲你实习的优化的具体2.有没有什么沟通协作的经历3.形容自己有领导力的原因4.除了想要提升技术还有什么软素质想要提升5.其他offer&nbsp;意向城市6.反问业务,是根据base地和个人倾向决定
查看27道真题和解析
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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