第一题
#include<iostream>
using namespace std;
void getNode(int x, int k);
int main0() {
int q;
cin >> q;
int x, k;
while (q) {
cin >> x >> k;
q--;
getNode(x, k);
}
return 0;
}
void getNode(int x, int k) {
if (x<1 || k<1) return;
int t = 1;
int n = 1;
while (n << 1 <= x) {
n = n << 1;
t++;
}
int m = t - k;
if (m <= 0) {
cout << "-1" << endl;
return;
}
int r = x;
r = r >> m;
cout << r << endl;
}
这个代码的只通过了50%,显示超过时间限制,如果有谁有什么建议,记得告诉我哦!!!在此谢过
第二题
分析:就是图的最短路径算法,还未复习,没做,先留着。
第三题
分析:我是通过链表插入来完成的,不知道还有没有更高效的办法,先这样吧
代码:
#include<iostream>
using namespace std;
typedef struct Node
{
int value;
struct Node *next;
}Node;
int main() {
int n, k;
cin >> n >> k;
Node* head = new Node();
bool first = true;
while (n) {
n--;
int a;
cin >> a;
int* arr = new int[a];
int m = a;
int t = 0;
while (t<a) {
cin >> arr[t];
t++;
}
Node* p = head;
if (first) {
while (m) {
Node* node = new Node();
node->value = arr[m - 1];
node->next = nullptr;
p->next = node;
p = p->next;
m--;
}
first = false;
}
while (m) {
Node* node = new Node();
node->value = arr[m - 1];
node->next = nullptr;
while (p ->next != nullptr&&p->next->value > arr[m -1]) {
p = p->next;
}
if (p->next == nullptr&&p->value > arr[m - 1]) {
p->next = node;
}
else {
node->next = p->next;
p->next = node;
}
p = node;
m--;
}
}
Node* q = head->next;
while (k) {
cout << q->value << " ";
k--;
q = q->next;
}
return 0;
}
这道题做的时候没有调试出来,代码写对了,但有行代码就是位置没放对,哎,考完之后才调试出来
一共五道题,就做出来两道,还有两道看都没来得及看,看来还得加紧复习啊,加油!!!(好吧,这次考试之前没怎么复习,我就想看看腾讯的笔试题多难,还真的难!!!顺便说一句,之前腾讯实习的提前批面试,两次都是写代码)