3-22笔试记录 网易互娱(2.1/3)&360java方向(2/2)&美团第三场(2.2/3)

网易互娱

(1)第一题题目大意是每天可以选一个股票买,卖出之前买的,直接贪心找前一天买哪一个可以在今天赚的最多,亏钱前一天就不买

n, m, k = map(int, input().split())
ans = [[-1,-1] for _ in range(n)]
pre = []
from math import inf
for i in range(n):
    now = list(map(float, input().split()))
    if pre:
        mxd = k
        mxi = -1
        for j in range(m):
            if k / pre[j] * now[j] > mxd:
                mxd = k / pre[j] * now[j]
                mxi = j
        # print(mxd, mxi)
        k = mxd
        ans[i - 1][1] = mxi
        ans[i][0] = mxi
    pre = now
print(k)
for i in range(n):
    print(ans[i][0], ans[i][1])

(2)根据题意模拟就好了,问题是他这个题意不明确,看样例才知道只每次移动只能消一次

# 0上 1左 2下 3右
dx = [-1, 0, 1, 0]
dy = [0, -1, 0, 1]
for _ in range(int(input())):
    c = list(map(int, input().split()))
    n, m = map(int, input().split())
    g = [list(map(int, input().split())) for _ in range(n)]
    for i in range(1, len(c)):
        k = c[i]
        if k == 0: # 上
            st = set()
            for x in range(n):
                for y in range(m):
                    if not g[x][y]: continue
                    px, py = x, y
                    X = px + dx[k]
                    Y = py + dy[k]
                    while X >= 0 and Y >= 0 and X < n and Y < m and g[X][Y] == 0:
                        g[X][Y], g[px][py] = g[px][py], g[X][Y]                       
                        px = X
                        py = Y
                        X = px + dx[k]
                        Y = py + dy[k]
                    if X >= 0 and Y >= 0 and X < n and Y < m and g[X][Y] == g[px][py] and (X, Y) not in st:
                        g[px][py] = 0
                        g[X][Y] *= 2
                        st.add((X, Y))                       
        if k == 1: # 左
            st = set()
            for y in range(m):
                for x in range(n):
                    if not g[x][y]: continue
                    px, py = x, y
                    X = px + dx[k]
                    Y = py + dy[k]
                    while X >= 0 and Y >= 0 and X < n and Y < m and g[X][Y] == 0:
                        g[X][Y], g[px][py] = g[px][py], g[X][Y]                       
                        px = X
                        py = Y
                        X = px + dx[k]
                        Y = py + dy[k]
                    if X >= 0 and Y >= 0 and X < n and Y < m and g[X][Y] == g[px][py] and (X, Y) not in st:
                        g[px][py] = 0
                        g[X][Y] *= 2 
                        st.add((X, Y)) 
        if k == 2: # 下
            st = set()
            for x in range(n - 1, -1, -1):
                for y in range(m):
                    if not g[x][y]: continue
                    px, py = x, y
                    X = px + dx[k]
                    Y = py + dy[k]
                    while X >= 0 and Y >= 0 and X < n and Y < m and g[X][Y] == 0:
                        g[X][Y], g[px][py] = g[px][py], g[X][Y]                       
                        px = X
                        py = Y
                        X = px + dx[k]
                        Y = py + dy[k]
                    if X >= 0 and Y >= 0 and X < n and Y < m and g[X][Y] == g[px][py] and (X, Y) not in st:
                        g[px][py] = 0
                        g[X][Y] *= 2  
                        st.add((X, Y))
        if k == 3: # 右
            st = set()
            for y in range(m - 1, -1, -1):
                for x in range(n):
                    if not g[x][y]: continue
                    px, py = x, y
                    X = px + dx[k]
                    Y = py + dy[k]
                    while X >= 0 and Y >= 0 and X < n and Y < m and g[X][Y] == 0:
                        g[X][Y], g[px][py] = g[px][py], g[X][Y]                       
                        px = X
                        py = Y
                        X = px + dx[k]
                        Y = py + dy[k]
                    if X >= 0 and Y >= 0 and X < n and Y < m and g[X][Y] == g[px][py] and (X, Y) not in st:
                        g[px][py] = 0
                        g[X][Y] *= 2  
                        st.add((X, Y))
    # print(*g, sep="\n")
    for i in range(n):
        print(*g[i])

(3)写这题还有两个小时,我一看以为只能用exgcd,当时相的是枚举两个,然后exgcd求另外两个,然后想了一下想不起来怎么写了,然后蒙了-1和全0的样例下机了。。。实际上这题还可以用map存两个,再枚举两个,还是O(n^2)的复杂度,对自己无语了

360

我先做的选择题,只能说无敌了,像是祖传的题库,什么jdbc,statement,execute。。。

然后是算法题

(1)第一题题意是每天给你一个数,然后从1开始,当你解锁i之后你才能继续解锁i+1,然后问所有数字解锁的时间,其实就是求mex,直接模拟就行了

n = int(input())
a = list(map(int, input().split()))
st = set()
mex = 0
ans = [0] * n
for i, x in enumerate(a,start = 1):
    st.add(x)
    while mex + 1 in st:
        ans[mex] = i
        mex += 1
print(*ans)

(2)第二题是按顺序给你一堆坐标,每当加一个坐标,如果这个坐标8个方向上有其他坐标,那么可以得到的总价值是这个连接的连通块数量的平方,然后问你每一次加坐标时的总价值是多少,连通块大小很自然想到并查集,但是因为是坐标,只能哈希表维护并查集感觉不太好,不知道正解是怎么样的

'''
八个方向
并查集
'''
dx = [1,1,0,-1,-1,-1,0,1]
dy = [0,1,1,1,0,-1,-1,-1]
n = int(input())
a = []
for i in range(n):
    a.append(tuple(map(int, input().split())))
ans = 0
from collections import defaultdict
f = defaultdict(tuple)
mp = defaultdict(int)
def find(x):
    if x in f:
        if x != f[x]:
            f[x] = find(f[x])
    else:
        f[x] = x
    return f[x]
def union(x, y):
    x = find(x)
    y = find(y)
    f[y] = x
sst = set()
for u, v in a:
    res = 0
    st = set()
    sst.add((u, v))
    for i in range(8):
        x = u + dx[i]
        y = v + dy[i]
        if (x, y) in sst:
            st.add(find((x, y)))
    for x, y in st:
        # print((u, v), x, y, mp[(x, y)])
        ans -= mp[(x, y)] ** 2
        res += mp[(x, y)]
        union((u, v), (x, y))
    # print(ans, res)
    ans += (res + 1) ** 2
    mp[find((u,v))] = (res + 1)
    print(ans)

美团第三场

我申请的岗位已经结束了,但是还是收到了笔试,不知道什么意思,而且听说美团根本不看笔试,然后就想着随便乱写了

选择题很多ai相关的,完全看不懂,乱选根本没有心里负担

(1)第一题忘了,总之很简单

s = input()
n = len(s)
ans = 0
key = "AHIMOTUVWXY"
for l in range(n):
    if s[l] not in key:continue
    for r in range(l + 2, n + 1):
        if s[r - 1] not in key:break
        if s[l:r] == s[l:r][::-1]:
            ans += 1
print(ans)

(2)第二题暴力,没想到过了,懒得证明为啥复杂度可以了

for _ in range(int(input())):
    n = int(input())
    a = list(map(int, input().split()))
    ans = n
    for i in range(1, n - 1):
        l = i - 1
        r = i + 1
        gt = 0
        lt = 0
        while l >= 0 and r < n:
            if a[r] > a[i] > a[l] or a[r] < a[i] < a[l]:
                if gt == lt:
                    ans += 1
            else:
                if a[l] > a[i]:
                    gt += 1
                else:
                    lt += 1
                if gt == lt:
                    ans += 1
            l -= 1
            r += 1
    print(ans)

(3)懒得看了,粘了一个暴力,过了20%

n, k = map(int, input().split())
s = input()
ans = [0] * n
mp = [k]
for i in s:
    if i == 'L':
        for j in range(len(mp)): 
            mp[j] -= 1
            mp[j] = max(1, mp[j])
    elif i == 'R':
        for j in range(len(mp)): 
            mp[j] += 1
            mp[j] = min(n, mp[j])
    else:
        st = set()
        for j in range(len(mp)):
            k = mp[j] - 1
            k = max(1, k)
            st.add(k)
        for j in range(len(mp)):
            k = mp[j] + 1
            k = min(n, k)
            st.add(k)
        mp = list(st.copy())
for i in mp:
    ans[i - 1] = 1
print("".join(str(c) for c in ans))

全部评论
笔试不会可以百度吗,佬
点赞 回复 分享
发布于 03-23 19:01 河南

相关推荐

05-02 01:34
已编辑
蚌埠坦克学院 Java
3.18&nbsp;零一悦动一面(25min)1.自我介绍2.实习项目介绍:实习前后端都自己写吗?实习中数据库是自己设计吗?3.java数据类型4.异常类型(忘了)5.数据库的事务讲一下6.索引使用上有什么问题要注意7.Bean的生命周期7.消息队列讲一下,消息队列的优缺点,说了异步,解耦,还有短链接里面怎么用的,优缺点回答的是解耦性能好,缺点是太重了,并发量达不到就不用8.JVM垃圾回收(说还不熟悉)6.高并发的情况下如何处理(感觉问的很笼统)回答了使用redis做缓存,缓存三大问题,还有使用mq做异步,用sentienl做限流7.排序算法和时间复杂度空间复杂度8.深度优先和广度优先9.讲一下动态规划10,你最近怎么学习一门新技术11.你觉得ai怎么样12.你的职业规划反问:3天出结果,还有一轮面试后续:一面挂3.18&nbsp;云测Testin一面(30min)1.自我介绍2.介绍一下实习做了什么3.实习的难点、遇到的困难4.Mysql索引怎么优化的,优化的3.2s怎么测的,实际数据怎么来的5.自己怎么学的技术6.redis缓存在实习中怎么使用的7.查询语句优化怎么优化的8.DB-router中aop遇到的切面失效的问题嘛?还有ThreadLocal底层还有用久了有什么问题嘛、10.算法刷了多少11.运维有做吗?Linux命令11.目前找实习的情况12.规划后续一面挂3.19&nbsp;泛微网络一面(18min)1.自我介绍3.问实习干了啥,实习公司主要是做什么的4.技术面:5.SaaS短连接介绍一下6.redis怎么使用的?有哪些情况7.Sharding-jdbc是怎么使用的6.spring事务讲一下7.mysql了解哪些?讲了索引和事务8.什么是回表9.事务隔离级别讲一下后续:因为异地挂3.24&nbsp;亚信科技(北京一面)15min1.自我介绍2.介绍一下SaaS短链接项目3.介绍一下DB-Router项目4.你实习用了Activity工作流,请问工作流中用户权限这块是怎么做的?(不太清楚)5.ArrayList和LinkedList的区别6.synochroniezd和lock的区别后续,oc已拒3.28&nbsp;中点金信一面(25min)1.介绍公司的主要业务和工作形式2.自我介绍3.问实习做了啥4.问项目主要是干啥5.JVM了解吗?5.sql调优怎么调6.你自己遇到的问题是怎么解决的7.反问:主要办公形式:驻场二开后续:二面聊天二面挂:面评是对出差和加班有抵触心理,这个绷不住了4.09百应科技一面(25min)1.自我介绍(40s左右,之后扩展一些内容)2.介绍一下实习做的事情3.在处理多线程方面要注意哪些方面4.在Java里面还有什么实现锁的方式5.currentHashMap底层是如何实现的6.redis做发布订阅是如何选型的7.redis做发布订阅是如何解决丢失消息8.分布式事务如何做统一回滚的?9.redis集群的部署模式有几种?10.并发访问Mysql同一条记录的时候mysql锁机制如何运行的?11.Mysql事务隔离级别,不同隔离级别的差别是什么?12.Mysql主键索引和二级索引他们底层数据结构有什么不一样?13.有个场景:一条带普通索引的sql执行的整个流程是怎么样的?14.RocketMQ在broker是怎么存储消息的?(不是很清楚)15.rocketmq的重试策略和频率16.分布式锁用什么实现的?17.redis常用数据结构18.redis的set中nx和ex有什么不同19.redis主从集群中set一个数据在主从中是怎么存储的?20.jvm中新生代是通过什么策略迁移到老年代当中(不会)21.垃圾回收cms和g1有什么不同?22.线程池的一些框架是如何初始化和销毁线程的?一面挂4.08&nbsp;高顿教育一面(20min)只记得一部分问题1、简单介绍一下路由组件的项目的流程2、mybatis缓存机制3、mybats组件拦截说一下4.ThreadLocal不会出现内存泄漏问题吗5.双重判定锁介绍一下6.线程安全的集合类有哪些7.StringBuffer和StringBuilder区别8.sleep和wait的区别9.MQ如何保证消息丢失问题和重复消费问题10.spring的bean是线程安全的吗?总结:很多问题口齿不清,逻辑不是很清楚,但是面试官那边麦也不清楚。高顿教育二面(20min)主要聊技术的学习还有本质(答得一塌糊涂),sql优化,redis集群,go和java的本质区别问有没有了解zoomkeeper、ES相关技术,一问三不知吹牛说RAG了解,结果问缩写是啥都不知道总结:问题问得很模糊很抽象,不知道他想问啥,回答的时候也经常被打断,吹牛RAG也吹大了后续oc已拒&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务