9.14小米笔试C++

Posted MangataTS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.14小米笔试C++相关的知识,希望对你有一定的参考价值。

编程题

ps:前面的选填记不到了

T1 链表反转

没啥好说的,就简单的链表反转一下,经典题目了

#include <iostream>
#include <vector>
#include <numeric>
#include <limits>
#include <stack>

using namespace std;

template <class Type> class ListNode 
public:
	Type data;
	ListNode<Type> *next;
;

class Solution 
public:
	
	/* Write Code Here */
	ListNode < int > *reverseBetween(ListNode<int> *head, int left, int right) 
		ListNode<int> *p1,*p2;
		ListNode<int> *p3 = new ListNode<int>();
		p3->next = head;
		p1 = p2 = p3;
		int i = 1;
		while(i < left && p1)  
			i++;
			p1 = p1->next;
		
		ListNode<int> *p4 = p1;
		p1 = p1->next;
		i = 1;
		while(i <= right && p2)  
			i++;
			p2 = p2->next;
		
		stack<ListNode<int> *> St;
		while(p1 != p2) 
			St.push(p1);
			p1 = p1->next;
		
		p4->next = p1;
		p2 = p2->next;
		p4 = p4->next;
		while(St.size()) 
			p4->next = St.top();
			St.pop();
			p4 = p4->next;
		
		p4->next = p2;
		return head;
	
;
int main() 
	ListNode < int > *res = NULL;
	
	int head_size = 0;
	cin >> head_size;
	
	ListNode<int> *head = NULL, *head_curr = NULL;
	int head_item;
	for(int head_i=0; head_i<head_size; head_i++) 
		cin >> head_item;
		
		ListNode<int> *head_temp = new ListNode<int>();
		head_temp->data = head_item;
		head_temp->next = NULL;
		if (head == NULL) 
			head = head_curr = head_temp;
		 else 
			head_curr->next = head_temp;
			head_curr = head_temp;
		
	
	
	int left;
	cin >> left;
	
	
	
	int right;
	cin >> right;
	
	
	
	Solution *s = new Solution();
	res = s->reverseBetween(head, left, right);
	while (res != NULL) 
		cout << res->data << " ";
		res = res->next;
	
	cout << endl;
	
	return 0;
	


T2 二叉搜索树转为双向链表

这里有点小意外,因为这里题目没有提供输入输出(CPP),于是我直接输入后排序输出了,不过貌似也通过了

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;

#define int long long

signed main()

	vector<int> Vec;
	int x;
	while(cin>>x)
		Vec.push_back(x);
	sort(Vec.begin(),Vec.end());
	int n = Vec.size();
	if(n == 0)  
		printf("0");
		return 0;
	
	for(int i = 0;i < n; ++i) cout<<Vec[i]<<" ";
	for(int i = n - 1;i >= 0; --i) cout<<Vec[i]<<" \\n"[i==0];
	
	return 0;

以上是关于9.14小米笔试C++的主要内容,如果未能解决你的问题,请参考以下文章

2022小米秋招笔试-前端-卷2

小米2015笔试编程题

小米笔试——秋招

19道小米网运维工程师笔试真题

遇见时光小米笔试-树的高度-java

Github 4K星BAT头条滴滴小米等笔试面经+深度学习/算法/NLP资源汇总!