c++笔试
hahachenchen789
后台开发,专注容器、k8s、云原生。
展开
-
c++-之字形打印矩阵
题目描述对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。给定一个整数矩阵mat,以及他的维数nxm,请返回一个数组,其中元素依次为打印的数字。测试样例:[[1,2,3],[4,5,6],[7,8,9],[10,11,12]],4,3返回:[1,2,3,6,5,4,7,8,9,12,11,10]其实这道题并不严谨,不应该是之字原创 2017-12-13 11:04:32 · 1405 阅读 · 0 评论 -
c++-基础知识-引用
引用的概念:引用就是变量的别名,因此引用又称为别名,对一个变量的引用的操作,实际上都是对原来的变量的操作。int a;int &b = a;声明b是a的引用,&是引用声明符,不代表地址。对变量a声明引用并不会另开辟内存单元,b和a代表同一变量单元。1.在声明一个引用时,必须同时使其初始化,即声明它代表哪一个变量。2.引用并不是一种独立的数据类型,必须与某一种原创 2018-01-01 20:01:32 · 608 阅读 · 0 评论 -
c++-median-of-two-sorted-arrays
题目描述There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).也就是将两个数组合原创 2017-12-26 16:53:35 · 298 阅读 · 0 评论 -
c++-常对象
常对象:在定义对象时指定对象为常对象,常对象中的数据成员为常变量并且必须要有初值Time const t1(12,34,46);这样ti中所有数据成员的值都不能修改如果一个对象声明为常对象,那么则不能调用该对象的非const型成员函数,这是为了防止这些函数会修改数据成员。常成员函数可以访问数据成员,但不能修改。常对象成员:1.常对象成员只能通过构造函数的参数初始化表原创 2018-01-01 22:26:10 · 284 阅读 · 0 评论 -
c++-最长回文字符串
题目描述对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。测试样例:"abc1234321ab",12返回:7解题思路:分为两种进行统计:偶数回文字符串以及奇数回文字符串,对于偶数,不存在中间的元素,因此,i=center-1, 而对于奇数,存在中间的元素,因此i=c原创 2017-12-18 15:58:58 · 3253 阅读 · 0 评论 -
c++-挑选镇长
题目描述360员工桂最近申请了一个长假,一个人背着包出去自助游了。 路上,他经过了一个小镇,发现小镇的人们都围在一棵树下争吵。桂上前询问情况,得知小镇的人们正缺一个镇长,他们希望能选一个知名又公正的镇长,即,大家希望能选出一个人,所有人都认识他,但同时他不认识镇上除自己以外的其他人(在此,我们默认每个人自己认识自己)。可是小镇里的人太多了,一下子大家谁也说服不了谁。 “这简单啊原创 2017-12-18 17:41:07 · 480 阅读 · 0 评论 -
c++-add two numbers 两个链表相加
题目描述You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and r原创 2017-12-26 20:09:44 · 618 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两转载 2017-12-26 20:52:40 · 178 阅读 · 0 评论 -
c++-merge k sorted lists heap的灵活应用
题目描述Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.思路有很多1.先将这些链表转化为一个vector int型的数组,然后排序后,再转化为链表。/** * Definition for si原创 2017-12-27 13:28:25 · 280 阅读 · 0 评论 -
c++-成员初始化问题(static, const, 引用)
有一个类B继承自类A,他们数据成员如下:123456789101112131415classA {...private: int&a;};classB : public原创 2017-12-27 15:16:05 · 312 阅读 · 0 评论 -
c++-swap nodes in pairs
题目描述Given a linked list, swap every two adjacent nodes and return its head.For example,Given1->2->3->4, you should return the list as2->1->4->3.Your algorithm should use only c原创 2017-12-27 22:23:05 · 281 阅读 · 0 评论 -
stl-stack
stack概述stack是一种先进后出FILO的数据结构,只有一个出口(deque是两头可进出),stack允许新增元素,移除元素,取得最顶端元素,但除了最顶端,没有任何其他方法可以存取stack的其他元素,换言之,stack没有遍历行为。将元素推入stack操作为push,推出操作为popstack以底部容器完成其所有工作,以deque作为缺省情况下的stack底层结原创 2018-01-03 17:32:20 · 234 阅读 · 0 评论 -
c++-奇位数丢弃
题目描述对于一个由0..n的所有数按升序组成的序列,我们要进行一些筛选,每次我们取当前所有数字中从小到大的第奇数位个的数,并将其丢弃。重复这一过程直到最后剩下一个数。请求出最后剩下的数字。输入描述:每组数据一行一个数字,为题目中的n(n小于等于1000)。输出描述:一行输出最后剩下的数字。示例1输入500输出255这道题关键在于理解:因为是从0开始,所以第一轮移走的是二进制下最右边为0的位置(从0...原创 2017-12-26 11:53:43 · 613 阅读 · 0 评论 -
看图理解单链表的反转
原博文:http://blog.csdn.net/feliciafay/article/details/6841115如何把一个单链表进行反转?方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。方法2:使用3个指针遍历单链表,逐个链接点进行反转。方法3:从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪转载 2017-12-25 23:38:04 · 232 阅读 · 0 评论 -
c++-顺时针打印矩阵
对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。测试样例:[[1,2],[3,4]],2,2返回:[1,2,4,3]题意如下图所示:顺时针,首先遍历最外面一层,1,2,3,4,7,10,4,3,2,1,7,4然后遍原创 2017-12-13 16:59:39 · 1243 阅读 · 0 评论 -
c++-相邻最大差值
题目描述请设计一个复杂度为O(n)的算法,计算一个未排序数组中排序后相邻元素的最大差值。给定一个整数数组A和数组的大小n,请返回最大差值。保证数组元素个数大于等于2小于等于500。测试样例:[9,3,1,10],4返回:6这道题目最简单的方法是利用STL标准库中的heap系列排序算法。算法将在下一篇博客详细介绍class MaxDivis原创 2017-12-13 20:58:22 · 1048 阅读 · 0 评论 -
c++-二维数组打印对角线打印
题目描述有一个二维数组(n*n),写程序实现从右上角到左下角沿主对角线方向打印。给定一个二位数组arr及题目中的参数n,请返回结果数组。测试样例:[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],4返回:[4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13]题目原创 2017-12-14 13:25:12 · 2534 阅读 · 0 评论 -
c++-棋子翻转
题目描述:在4x4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。给定两个数组A和f,分别为初始棋盘和翻转位置。其中翻转位置共有3个。请返回翻转后的棋盘。测试样例:[[0,0,1,1],[1,0,1,0],原创 2017-12-14 14:10:13 · 1148 阅读 · 0 评论 -
c++-进制转换
题目描述写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。输入描述:输入一个十六进制的数值字符串。输出描述:输出该数值的十进制字符串。示例1输入0xA输出10解法:#include #include using std::cin;using std原创 2017-12-14 18:58:07 · 162 阅读 · 0 评论 -
c++-字符串排序-冒泡排序
题目描述编写一个程序,将输入字符串中的字符按如下规则排序。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。 如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。 如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。原创 2017-12-14 21:43:48 · 3165 阅读 · 0 评论 -
c++-字符串旋转
题目描述对于一个字符串,和字符串中的某一位置,请设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。给定字符串A和它的长度n以及特定位置p,请返回旋转后的结果。测试样例:"ABCDEFGH",8,4返回:"FGHABCDE"这道题很容易,解题思路也有很多,首先给出本人的解答:利用了string类型中的for语句c原创 2017-12-15 10:23:04 · 1328 阅读 · 0 评论 -
c++-串的模式匹配
题目描述对于两个字符串A,B。请设计一个高效算法,找到B在A中第一次出现的起始位置。若B未在A中出现,则返回-1。给定两个字符串A和B,及它们的长度lena和lenb,请返回题目所求的答案。测试样例:"acbc",4,"bc",2返回:2这道题还是比较简单的:class StringPattern {public: int fi原创 2017-12-15 11:25:48 · 860 阅读 · 0 评论 -
c++-最后一个字符
题目描述正在挑战一个CrackMe的你,把需要填写的前面几位密码都正确猜出了,可是这最后一位密码,好像藏得有点深。CrackMe的作者还挑衅般的在里面藏了个.tar.gz文件,解压缩出来,里面写道 你要的最后一个字符就在下面这个字符串里,这个字符是下面整个字符串中第一个只出现一次的字符。(比如,串是abaccdeff,那么正确字符就是b了) 然而下面给出来的字符串好像太长太长了,单靠人力完原创 2017-12-25 18:34:59 · 1562 阅读 · 0 评论 -
c++-文本嗅探
题目描述现在有一个字符串列表,和一个关键词列表,请设计一个高效算法,检测出含关键字列表中关键字(一个或多个)的字符串。给定字符串数组A及它的大小n以及关键词数组key及它的大小m,请返回一个排好序的含关键词的字符串序号的列表。保证所有字符串长度小于等于100,关键词个数小于等于100,字符串个数小于等于200。保证所有字符串全部由小写英文字符组成。若不存在含关键字的字符串,原创 2017-12-25 20:59:19 · 200 阅读 · 0 评论 -
c++-链表的回文结构
题目描述对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true考察基本的链表操作,两种方法:1.将链表转化为数组进行处理。2.将链表反转再进行比较。原创 2017-12-25 23:23:41 · 504 阅读 · 0 评论 -
LeetCode c++-Merge Sorted Array
题目要求:Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.Note:You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additi...原创 2018-04-04 15:45:32 · 200 阅读 · 0 评论