七牛云笔试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
然后一直纠结换成树节点再做,但是好像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
全部评论
只会写树节点的
这题我怎么调都是只有50%
GPT写不会被判作弊吗
相关推荐
点赞 评论 收藏
分享

点赞 评论 收藏
分享
06-18 20:54
马鞍山师范高等专科学校 Java 
点赞 评论 收藏
分享