七牛云笔试6.18后端开发

算法题第一个乍一看好像力扣原题,但是输入是List[int],并非root,
然后一直纠结换成树节点再做,但是好像TreeNode不能直接使用,
后来有一个新的思路,寻找父节点和孩子节点的关系 2*i+1,2*i+2
反正最后还是没写出来,回来让gpt写了,思路应该可以吧。
from typing import List
from collections import deque

def right_side_view_from_list(nums: List[int]) -> List[int]:
    if not nums or nums[0] == -1:
        return []

    result = []
    q = deque()
    q.append(0)  # 从根节点的索引 0 开始

    while q:
        level_size = len(q)
        for i in range(level_size):
            idx = q.popleft()
            if nums[idx] == -1:
                continue

            if i == level_size - 1:
                result.append(nums[idx])

            left_idx = 2 * idx + 1
            right_idx = 2 * idx + 2

            if left_idx < len(nums):
                q.append(left_idx)
            if right_idx < len(nums):
                q.append(right_idx)
    return result
全部评论
只会写树节点的
点赞 回复 分享
发布于 昨天 10:12 江苏
这题我怎么调都是只有50%
点赞 回复 分享
发布于 06-19 14:17 北京
GPT写不会被判作弊吗
点赞 回复 分享
发布于 06-19 00:12 重庆

相关推荐

其他中大厂基本都是泡池子或者测评中),一两月了)),就七牛云的笔试最快。&nbsp;&nbsp;第一次笔试。体验&nbsp;:双机位,有点麻烦,下次带个有机械臂的手机支架)。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;好评:答题界面很现代化,特别是录屏后可以用本地ide写算法题。不是acm模式能带草稿纸),所以把题目大概抄下来了。做了1.5h,剩下0.5h不想做了,今天有点累。408都考到了,但是难度都挺简单的,但是我还没开始被八股))。上周六晚上考了os,这次血赚。但是好多题都好纠结啊,还没学过计网题目都很简单的,完完全全就是基本概念),感觉没考个八九十进不了面试,哭(暑假好好沉淀)感觉就是每个人动态从牛客题库抽取的吧,暑假好好刷牛客,氪会员单选&nbsp;10题1.&nbsp;os&nbsp;堆与栈&nbsp;描述2.&nbsp;h=2&nbsp;5阶b树最少需要几个关键字&nbsp;&nbsp;(傻了,平时看的都是b+)3.&nbsp;一个操作数栈,一个符号栈,让你模拟弹栈计算压栈回去。4.&nbsp;虚拟内存5.&nbsp;二叉树前中序求后序6.&nbsp;两个十六进制数的异或运算7.Mysql事务8.&nbsp;银行家算法(没错,就是这个)9.&nbsp;一个入栈序,问那个出栈序不可能10.计网,甲发送到乙,采用停-等协议,一个确认帧1000B,数据帧1000B,数据传输率10kbps,单项传输延迟200ms,问加对信道最大利用率是多少多选&nbsp;5题1.&nbsp;几种提高文件访问速度措施2.&nbsp;页表基本概念3.&nbsp;IPv44.&nbsp;大根堆5.如何提高同步总线数据传输率算法题&nbsp;(感觉都是luogu普及-,普及,普及+难度,但是太久没做了,跪了)1.&nbsp;给一个二叉树,求从二叉树右边能看到的节点。给的似乎都是满二叉树?(还是完全,题目没说清啊)一开始想递归遍历下,但是感觉很麻烦(也不麻烦,只是手疏),想找规律。最后发现按照顺序进行层次遍历(第一层1个,第二层2个,第三层4个如果是完全二叉树的话,但是没AC,感觉坑就在这里,但是题意没说清)50%,然后稍微搞了个细节,就66.7%了2.给一个表达式,包含是加法,让你计算这个表达式结果。&nbsp;&nbsp;这不就是栈模拟计算的简单题吧(但是不会写了,因为中缀转后缀忘了)&nbsp;,想着模拟骗分。。&nbsp;&nbsp;最朴素的想法,先把所有加法处理,剩下的乘起来就是了。做法就是先把表达式拆分为两个数组,一个操作数组,一个操作符数组,然后遍历每个操作符,如果是加法就从操作数数组对应位置取出两个数,加起来再放回去,并从操作数组中间删除一个数(每进行一次运算,操作数就少一个,要开个变量记录一下,方便后面的操作定位操作数)(就是这样。。竟然没TLE)&nbsp;&nbsp;&nbsp;。最后一发入魂,A了,题目数据太水了。。。3.给定一个序列,要求你选出一个子序列,子序列的首元素尾元素要大于中间所有元素。找出最长的子序列的长度和子序列中最小的元素值,如果有多个,取首元素下标最小的那个。额。。。写个n=2的特例,交一下,14.29%的分,爽啦。对了,我下面的做法是找子串,不是原题的子序列(前者是连续的,子序列不是连续的,我在写面经才发现,唉,但是子序列的话感觉不会写)下面是错解然后想想怎么暴力,枚举子序列起点,然后向右边不断扩展,类似双指针吧,要动态维护子序列中非首非尾元素的最大值最小值,最小值是用来结束扩展时记录答案的,最大值是判断能不能继续扩展。样例能过,最终过了42.86%。&nbsp;这题应该是提高-或者提高难度
程序员小白条:笔试没啥的,最要还是看简历实习匹配和学历,另外看组内缺不缺人,笔试除非特别差或者特别好,中等水平都没参考度
投递七牛云等公司7个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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