腾讯音乐笔试 腾讯音乐笔试题 0418
笔试时间:2024年04月18日
历史笔试传送门:2023秋招笔试合集
第一题
题目:小红的链表扩展
小红拿到了一个链表,请你将每两个相邻元素之间添加一个值为0的节点。链表长度不超过10^5。
样例输入
{1,2,3,1}
样例输出
{1,0,2,0,3,0,1}
参考题解
题目比较简单,每次访问一个节点,就插入一个0值节点;注意最后一个节点之后,不需要再插入。
C++:[此代码未进行大量数据的测试,仅供参考]
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* insert0(ListNode* head) {
ListNode dummy(-1), *p = &dummy;
while (head) {
p->next = new ListNode(head->val);
head = head->next;
p = p->next;
if (head) {
p->next = new ListNode(0);
p = p->next;
}
}
p->next = nullptr;
return dummy.next;
}
};
Java:[此代码未进行大量数据的测试,仅供参考]
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode insert0(ListNode head) {
ListNode dummy = new ListNode(-1);
ListNode p = dummy;
while (head != null) {
p.next = new ListNode(head.val);
head = head.next;
p = p.next;
if (head != null) {
p.next = new ListNode(0);
p = p.next;
}
}
p.next = null;
return dummy.next;
}
}
Python:[此代码未进行大量数据的测试,仅供参考]
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def insert0(self, head: ListNode) -> ListNode:
dummy = ListNode(-1)
p = dummy
while head:
p.next = ListNode(head.val)
head = head.next
p = p.next
if head:
p.next = ListNode(0)
p = p.next
p.next = None
return dummy.next
第二题
题目:小红的二叉树构造
小红希望你构造一个n层满二叉树,满足每一层的节点权值和都相等,你能帮帮她吗? 你需要保证每个节点权值都是不超过10^9的正整数。有多解时返回任意合法二叉树即可。 1≤n≤14。
样例输入
3
样例输出
{5,2,3,1,2,1,1}
参考题解
bfs或者dfs都可。
计算每个根节点的子树所有严重问题数和一般问题数,然后判断即可。
C++:[此代码未进行大量数据的测试,仅供参考]
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return TreeNode类
*/
TreeNode* create(int n) {
TreeNode* root = new TreeNode(1 << (n - 1));
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
int sz = q.size();
n--;
if (n == 0) break;
while (sz--) {
TreeNode* r = q.front(); q.pop();
r->left = new TreeNode(1 << (n - 1));
r->right = new TreeNode(1 << (n - 1));
q.push(r->left); q.push(r->right);
}
}
return root;
}
};
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.LinkedList;
import java.util.Queue;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param n int整型
* @return TreeNode类
*/
public TreeNode create(int n) {
TreeNode root = new TreeNode(1 << (n - 1));
Queue<TreeNode> q = new LinkedList<>();
q.add(root);
while (!q.isEmpty()) {
int sz = q.size();
n--;
if (n == 0) break;
for (int i = 0; i < sz; i++) {
TreeNode r = q.poll();
r.left = new TreeNode(1 << (n - 1));
r.right = new TreeNode(1 << (n - 1));
q.add(r.left);
q.add(r.right);
}
}
return root;
}
}
Python:[此代码未进行大量数据的测试,仅供参考]
from collections import deque
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def create(self, n: int) -> TreeNode:
root = TreeNode(1 << (n - 1))
q = deque([root])
while q:
sz = len(q)
n -= 1
if n == 0:
break
for _ in range(sz):
r = q.popleft()
r.left = TreeNode(1 << (n - 1))
r.right = TreeNode(1 << (n - 1))
q.append(r.left)
q.append(r.right)
return root
第三题
题目:小红的链表节点染色
小红拿到了一
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2024 BAT笔试合集 文章被收录于专栏
持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。
联想公司福利 1523人发布