笔试|蓝鸽|C++岗
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 2022/4/14 vm
- 一、十六进制字符串转十进制整数
- 二、数组循环删
- 三、 链表同data删除
- 总结
前言
2022/4/14 vm
一、十六进制字符串转十进制整数
编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回。
#include <iostream>
using namespace std;
// 十六进制字符串的最大长度
#define MAX_HEX_STR_LEN 8bool hexToDec(char shex[], int & idec)
{size_t i = 0, len = 0;int mid = 0;len = strlen(shex);if (len > MAX_HEX_STR_LEN) {return false;}idec = 0;for (i = 0; i < len; i++) {mid = 0;if (shex[i] >= '0' && shex[i] <= '9') {mid = shex[i] - '0';} else if (shex[i] >= 'a' && shex[i] <= 'f') {mid = shex[i] - 'a' + 10;} else if (shex[i] >= 'A' && shex[i] <= 'F') {mid = shex[i] - 'A' + 10;} else {return false;}// 移位表示变为2的n次方倍mid <<= ((len - i - 1) << 2);idec += mid;}return true;
}int main(int argc, char * argv[])
{int a = 0;char s[] = "fae3";hexToDec(s, a);cout << a << endl;return 0;
}
二、数组循环删
有一个数组,每隔两个数删掉一个数,到末尾又循环到开头继续进行,求最后一个被删除的数的原始下标位置
/*** 有一个数组a[N],要求每隔两个数删掉一个数,到末尾则又循环到开头继续进行* 求最后一个被删掉的数的原始下标位置* * 例如,一个数组:{0, 1, 2, 3, 4, 5, 6, 7} * 0->1->2(第一遍,删除)->3->4->5(第一遍,删除)->6->7->* 0(第二遍,删除)->1->2(已删除)->3->4(第二遍,删除)->5(已删除)->6->7...* 循环直到数组中最后一个元素被删除* * 当然,这里并未真正删除元素,只是用标志位表示已经被删除* * @author Wll**/
public class DeleteEveryTwo {public static void main(String[] args) {int index = getLastDeletedIndex(8);System.out.println("The last index deleted is " + index);}/*** * @param a* 数组长度* @return 最后被删除的数的原始下标*/public static int getLastDeletedIndex(int len) {if (len <= 0) { // 如果数组长度不满足要求则返回 -1return -1;}int[] arr = new int[len];for (int i = 0; i < len; i++) { // 初始化每个元素的值为当前下标arr[i] = len;}final int DELFLAG = len + 1; // 删除标志位int currentSize = len; // 记录数组当前有效长度(即未被置为删除标志的元素个数),最后变为 0final int STEP = 2; // 步长int count = 0; // 步长计数int lastDelIndex = 0; // 记录最后被删除的元素的下标int i = 0; // 循环下标while (currentSize != 0) {if (arr[i] != DELFLAG) { // 判读当前元素是否等于删除标志if (count++ == STEP) { // 当步长计数满足步长则arr[i] = DELFLAG; // 将元素置为删除标志位lastDelIndex = i; // 记录该处下标currentSize--; // 有效数组长度减 1count = 0; // 步长计数归零System.out.println("Deleted index is " + i % len);}}i = (i + 1) % len; // 下标取余实现循环下标}return lastDelIndex;}
}
三、 链表同data删除
有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除
有双向循环链表结点定义为:struct node
{ int data;struct node *front,*next;
};
// 链表结点
template <typename T>
class dc_list_node
{public:dc_list_node(const T &item = T(), dc_list_node<T> *p_front = NULL, dc_list_node<T> *p_next = NULL):m_item(item), mp_front(p_front), mp_next(p_next){}T m_item;dc_list_node<T> *mp_front;dc_list_node<T> *mp_next;
private:dc_list_node(const dc_list_node<T> &);dc_list_node<T> &operator=(const dc_list_node<T> &);
};
有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两链表中data值相同的结点删除。
用两个向量A_vec、B_vec分别存储链表A、B的元素值,将A_vec、B_vec排序,用类似归并排序的方法把A_vec、B_vec中值相同的元素放到向量common_vec中。分别遍历链表A、B,用二分查找法查看每个节点元素是否在common_vec中。
void dc_list_erase_node_with_equal_value(dc_list_node<int> *&p_headA, dc_list_node<int> *&p_headB)
{if (p_headA == NULL || p_headB == NULL)return;// A_vec存储链表A的元素值,B_vec存储链表B的元素值std::vector<int> A_vec, B_vec, common_vec;dc_list_node<int> *p_node;A_vec.push_back(p_headA->m_item);p_node = p_headA->mp_next;while (p_node != p_headA){A_vec.push_back(p_node->m_item);p_node = p_node->mp_next;}B_vec.push_back(p_headB->m_item);p_node = p_headB->mp_next;while (p_node != p_headB){B_vec.push_back(p_node->m_item);p_node = p_node->mp_next;}// 将A_vec和B_vec排序std::sort(A_vec.begin(), A_vec.end());std::sort(B_vec.begin(), B_vec.end());// 合并A_vec和B_vec相同的元素值到common_vecstd::size_t i = 0, j = 0;while (i < A_vec.size() && j < B_vec.size()){if (A_vec[i] < B_vec[j])++i;else if (A_vec[i] > B_vec[j])++j;else{common_vec.push_back(A_vec[i]);++i;++j;}}// 分别遍历链表A和B,删除在元素值common_vec中的结点p_node = p_headA;for (i = 0; i < A_vec.size(); ++i){if (std::binary_search(common_vec.begin(), common_vec.end(), p_node->m_item)) // 当前结点是值相同的结点{if (p_node == p_headA && p_node->mp_next == p_headA) // 链表中只有头结点一个结点{delete p_headA;p_headA = NULL;break;}else if (p_node == p_headA) // 当前结点是头结点{p_headA = p_node->mp_next;p_headA->mp_front = p_node->mp_front;p_node->mp_front->mp_next = p_headA;p_node = p_headA;}else{dc_list_node<int> *p_next = p_node->mp_next, *p_front = p_node->mp_front;p_next->mp_front = p_front;p_front->mp_next = p_next;delete p_node;p_node = p_next;}}elsep_node = p_node->mp_next;}p_node = p_headB;for (i = 0; i < B_vec.size(); ++i){if (std::binary_search(common_vec.begin(), common_vec.end(), p_node->m_item)) // 当前结点是值相同的结点{if (p_node == p_headB && p_node->mp_next == p_headB) // 链表中只有头结点一个结点{delete p_headB;p_headB = NULL;break;}else if (p_node == p_headB) // 当前结点是头结点{p_headB = p_node->mp_next;p_headB->mp_front = p_node->mp_front;p_node->mp_front->mp_next = p_headB;p_node = p_headB;}else{dc_list_node<int> *p_next = p_node->mp_next, *p_front = p_node->mp_front;p_next->mp_front = p_front;p_front->mp_next = p_next;delete p_node;p_node = p_next;}}elsep_node = p_node->mp_next;}
}
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
笔试|蓝鸽|C++岗相关推荐
- 蓝鸽英语学习平台_蓝鸽集团携手英特尔,共筑智慧校园新生态——蓝鸽amp;英特尔智慧校园建设高峰论坛顺利举办...
10月12日,恰逢第77届中国教育装备展开幕,蓝鸽集团与英特尔于青岛万达文华酒店共同举办智慧校园建设高峰论坛暨蓝鸽AI考试复习系统全国战略合作伙伴研讨会. 在此次论坛上,蓝鸽与英特尔共同发布了基于人工 ...
- 系统模块化备援 服务器,施甸县网络化智慧教室——蓝鸽助力施甸义务教育均衡发展...
原标题:施甸县网络化智慧教室--蓝鸽助力施甸义务教育均衡发展 阻断贫困代际传递,根本要靠教育.近年来,云南省以全面改善农村义务教育薄弱学校项目为抓手,全面推进贫困县域义务教育均衡发展. 项目背景 施甸 ...
- 2020京东社招笔试编程题-数据分析岗
一个朋友参加的2020京东社招数据分析岗的笔试,有两道编程题.留了第一题,大意就是根据每日限制如何出售股票使得总亏损最少. import math while 1:nm=list(map(int,in ...
- 2014年10月18号到19号在成都举行的重庆移动校园招聘笔试面试经历——技术岗
10月18号,星期六.微热,天气阴.在川大参加了重庆移动的初面,初面在川大的就业指导中心副楼2楼举行,我在第二组,笔试.参加了京东安全工程师的笔试.重庆移动笔试题目卷面有17页,题量不大,很多人提前2 ...
- 蓝鸽服务器崩溃怎样从装系统,系统崩溃如何重装系统?
具体方法:(在安装过程中,重新分区即可把所有磁盘中的数据全部删除,格式化后重装,就是一个崭新的系统,如果不分区,只格式化重装,只是把以前的应用程序无法使用,比如杀毒软件,防火墙,等,重装后都需要重新安 ...
- 解决重邮无法访问蓝鸽听力以及无法访问部分内网的解决方法
一般在校内无法访问内部的网络,是学校的DNS解析出了问题,将本连接的iPv4的属性中的dns修改为下即可修复正常访问
- 蓝鸽集团c++开发工程师笔试题
1.下列是错误的转义字符的是: A: '\0' B: '\' C: '\091' D: ''' 答案:c 当\后面有数字时,\后面的1-3个小于8的数字会被看作八进制数,他对应的字符为八进制数转化为十 ...
- 为什么蓝鸽的听力下载完还是听不了_首考如何拿到雅思听力8.5?
好了!上回答应大家写一些应试技巧,现在我就来履行承诺了!全文干货!!! 我的另一篇备考锦囊: No One:首考准备20天7.5分的雅思锦囊zhuanlan.zhihu.com 上一篇文章已经跟大家 ...
- 蓝鸽服务器崩溃怎样从装系统,系统崩溃,小编教你怎么解决系统崩溃的问题
小伙伴们最近都好像在为一个电脑问题而困扰呢,让小编来猜猜是什么问题呢.是不是关于系统崩溃的问题呢?哈哈,我猜对了吧~既然猜对了,那接下来就应该跟你们分享一下解决系统崩溃的问题. 我们在使用电脑的时候, ...
最新文章
- 5. 编程规范和编程安全指南--JavaScript
- 计算机组成原理时序,计算机组成原理 中央处理器(CPU) 多级时序系统
- 30年前的热门研究,今获经典论文奖,贝叶斯网络之父旧论文「考古」
- 百度直播消息服务架构实践
- 为实验室部署Symantec Antivirus
- python中字符串的几种表达方式(用什么方式表示字符串)
- PHP中遍历关联数组的方法
- 10.1综合强化刷题 Day2 morning
- 【通信】基于matlab GUI循环编码译码【含Matlab源码 1348期】
- 网站被移动运营方屏蔽怎么办?
- 股权激励与期权激励的区别是什么?
- pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn pym
- 解决LaTeX:!Package CJK Error:Invalid character code报错
- Vim插件ale在windows下的安装配置与BUG解决
- 信道编码之设计线性分组码
- 动态规划特训:切木棍(UVA10003)区间切分dp
- CentOS7/8安装jq教程
- 糗事百科网站服务器,糗事百科神仙道官网
- python_与或非逻辑/真假值事例
- 中南大学计算机辅助工艺设计,中南大学计算机辅助制造 实验报告1.pdf