腾讯TEG面试
问的不多
1. c++的map高并发如何加速
2. 项目
2. 手撕 单链表偶数位倒序
1 2 3 4 5 6 转换为
1 6 3 4 5 2 要求一次遍历,我是算法菜鸡,一次遍历不知道咋写,求解
==========================
以下两种方法不符题意:
1. 奇偶分拆,奇顺插,偶倒插,再合并,得2次遍历
2. 开辟新数组,存结构体,奇数位指针顺着指数组,偶数位数据倒存进数组,一次,但是开辟新空间,同时得知道链表长度
都不满足面试官要求
1. c++的map高并发如何加速
2. 项目
2. 手撕 单链表偶数位倒序
1 2 3 4 5 6 转换为
1 6 3 4 5 2 要求一次遍历,我是算法菜鸡,一次遍历不知道咋写,求解
==========================
以下两种方法不符题意:
1. 奇偶分拆,奇顺插,偶倒插,再合并,得2次遍历
2. 开辟新数组,存结构体,奇数位指针顺着指数组,偶数位数据倒存进数组,一次,但是开辟新空间,同时得知道链表长度
都不满足面试官要求
全部评论
我去 c++的map高并发如何加速这个咋回答 大佬
我感觉是可以用快排的思路
按楼主第二个方法,创建一个数组,存地址和值,遍历时计数,奇数时就把该节点地址和值存起来,遍历完成后,再遍历一遍数组,这样算1.5次遍历吧😂
递归 + 队列呢? 碰到偶数就入队,递归出口设置开启匹配,匹配阶段把自身值再入队同时自身置换。
双指针一个正遍历一个倒着遍历,交换偶数下标的值可以吧
佬做的什么项目呀?
如果因为这种 ** 算法题把你挂了,这班不上也罢
算法那题用递归应该可以吧,拿一个全局变量存第一个节点1,递归直到最后一个偶数节点2n,然后开始返回,把全局变量存的节点1指向最后一个偶数节点2n,把2n指向1->next->next,以此类推
建一个队列和一个栈,每当遇到偶数结点就同时进栈和队列,遍历完一次之后不停交换栈顶和队列尾的元素直到两个容器的size相等,或者可以加个计数器算要交换几次,大致思路是这样,应该算一次遍历
我觉得可以先保存原序列 然后可以翻转整个序列 在把原序列的偶数位换成翻转后的序列上的元素吧
相关推荐