刷题录
2018毕业小菜鸟刷题
YangXueChina
这个作者很懒,什么都没留下…
展开
-
系列文章001 : Nacos初识
1、Nacos是什么?首先来一个官网的链接Nacos官网,简单话描述就是 平台,是发现、配置、管理微服务的平台。2、Nacos主要能干什么?配置中心、注册中心、服务发现、服务管理 等。3、Nacos怎么用?官网的快速开始使用,启动服务之后(sh startup.sh -m standalone 单机运行),可以看到Nacos的Nacos搭建到此就算成功了...原创 2019-04-08 12:25:40 · 291 阅读 · 0 评论 -
试题17:合并两个排序的链表
题目大致为:输入两个递增排序的链表,合并这两个链表并使得新链表中的结点仍然按照递增排序的。思路:主要是链表中值的比较,取较小的结点插入到新的链表中。public class Test17 { //使用递归解决此问题 public ListNode merge(ListNode head1,ListNode head2){ // 如果有一个为空,则为另一个链表原创 2017-10-05 20:27:57 · 186 阅读 · 0 评论 -
试题16:反转链表
题目大致为: 对于一个链表,反转该链表并返回头结点。思路: 主要是指针的操作,但是要注意不能断链。这里可以使用非递归的方式求解。public class Test16 { public ListNode reverse(ListNode head){ if (head==null) { return null; } ListNode reve原创 2017-10-05 19:43:04 · 187 阅读 · 0 评论 -
试题15:链表中倒数第k个结点
题目大致为: 在一个链表中,查找倒数的第k个数。思路: 设置两个指针node1与node2,先使node1向前走k-1步,然后两个指针同时向前走,各自都是走一步。当node1到结尾时,node2刚好指到倒数第二个。public class Test15 { public ListNode findKnum(ListNode head,int k){原创 2017-10-05 19:05:08 · 166 阅读 · 0 评论 -
试题14:调整数组顺序使奇数位于偶数前面
题目大致为: 对于一个数组,实现一个函数使得所有奇数位于数组的前半部分,偶数位于数组的后半部分。思路: 使用双指针的方式,一个指针指向数组的开始,一个指针指向数组的尾部, 如果头部的数为偶数且尾部的数是奇数则交换(&&), 否则头部指针向后移动,尾部指针向前移动,直到两个指针相遇.public class Test14 { public void a原创 2017-10-05 19:00:53 · 178 阅读 · 0 评论 -
试题10:计算二进制中1的个数
实现一个函数,输入一个整数,输出该数二进制表示中1的个数。思路: 把一个整数减去1,再和原整数做与运算,会把最右边public class Test10 { //此方法可能会引起死循环,输入的数值是负数时。 public int oneNum(int n){ int count=0; while(n!=0){ if ((n&1)==1) { count++原创 2017-10-04 20:00:37 · 281 阅读 · 0 评论 -
试题9:斐波那契数列
菲波那切数列是每一个学C语言的人都特别熟悉的一个问题。思路: 方式一: 用递归实现的过程中会出现重复计算的情况,此时, 方式二:可以利用动态规划的思想,保存中间结果,这样可以避免不必要的计算。public class Test09 { //传统的递归算法的求解 public long fibnacci(int n){ if (n<=0) {原创 2017-10-04 19:42:42 · 380 阅读 · 0 评论 -
试题7:用两个栈实现队列+使用两个队列实现栈
用两个栈实现队列的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除结点。public class Test07 { Stackstack1=new Stack<>(); Stackstack2=new Stack<>(); public void appendTail(int key){ stack1.add(key);//在队列尾部原创 2017-10-04 19:09:28 · 200 阅读 · 0 评论 -
试题5:从尾到头打印链表
题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。 方法一:非递归的方式 //后进先出:使用栈进行操作 public void printFromEnd(ListNode head){ if (head==null) { return; } ListNode nextNode=head; Stackstack=new Stack<>(); whil原创 2017-10-03 21:37:03 · 183 阅读 · 0 评论 -
试题4:替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如:输入“We are happy.”,则输出“We%20are%20happy.”public class Test04 { //从字符串的后面开始复制和替换 public static String replace(String str){//a b c if (str==null) { return null原创 2017-10-03 21:28:26 · 240 阅读 · 0 评论 -
试题3:二维数组中的查找
题目:在一个二维数组中,每一行按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请输入一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数.public class Test03 { public static boolean findNum(int [][]a,int rows,int columns,int key){ //rows 与columns表原创 2017-10-03 21:03:59 · 196 阅读 · 0 评论 -
华为秋招2017年8月份笔试(三)
1.3 字母计数法:某种场景下,开发人员决定使用字母表示一个正整数,该方法利用英文的小写字母表示,映射规则很简单, 按字母顺序每一个字母都代表一个值,如下所示列表的部分内容:a 1b 2c 3...z 26aa 27ab 28...huawei 104680767...函数原型:Void convertTo26(const char原创 2017-08-31 15:28:19 · 2253 阅读 · 5 评论 -
华为秋招2017年8月笔试
1.1 拼音与英文互相转换编写一个拼音与英文互相转换的函数,如果输入的电话号码是英文单词,输出对应的电话号码的中文拼音。如果输入的电话号码是中文拼音,输出对应的电话号码的英文单词。例如:输入“DoubleOneTwoThreeFour”,则输出”YiYiErSanSi“。1.2 拼音、英文读法表Yi Er San Si Wu Liu Qi Ba Jiu One Two Thre原创 2017-08-31 15:25:46 · 692 阅读 · 0 评论 -
20:查找兄弟单词
输入描述:先输入字典中单词的个数,再输入n个单词作为字典单词。输入一个单词,查找其在字典中兄弟单词的个数再输入数字n输出描述:根据输入,输出查找到的兄弟单词的个数#include #include #include #include #include using namespace std; vector dict; bool is_friend(s原创 2016-09-27 15:24:57 · 640 阅读 · 0 评论 -
18:实现删除字符串中出现次数最少的字符
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。输入描述:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。输出描述:删除字符串中出现次数最少的字符后的字符串。输入例子:abcdd输出例子:dd #include#includeusing n原创 2016-09-22 14:06:28 · 1453 阅读 · 0 评论 -
17:汽水瓶
#include#includeusing namespace std;//三个空汽水瓶可以换一瓶汽水。int ChangeWater(int num)//num个空瓶{ if(num<2) return 0; if(num==2)//借一瓶, 喝完还上 return 1; return ChangeWater(num-2)+1;//使用递归处理}int mai原创 2016-09-22 13:41:48 · 291 阅读 · 0 评论 -
16:简单密码
[编程题]简单密码 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的原创 2016-09-22 12:09:32 · 510 阅读 · 0 评论 -
15:密码验证合格程序
密码验证合格程序 密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有相同长度超2的子串重复说明:长度超过2的子串输入描述:一组或多组长度超过2的子符串。每组占一行输出描述:如果符合要求输出:OK,否则输出NG输入例子:021Abc9000021Abc9Abc1021ABC9000021$bc9000输原创 2016-09-22 11:47:58 · 428 阅读 · 0 评论 -
14:求int型正整数在内存中存储时1的个数
题目描述输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。 输入描述: 输入一个整数(int类型)输出描述: 这个数转换成2进制后,输出1的个数输入例子:5#include#includeusing namespace std;int main() { int n,k,count; vectorivec; while(ci原创 2016-09-21 17:51:10 · 490 阅读 · 0 评论 -
13:字串的连接最长路径查找
题目描述给定n个字符串,请对n个字符串按照字典序排列。 输入描述:输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。输出描述:数据输出n行,输出结果为按照字典序排列的字符串。输入例子:9captocatcardtwotooupboatboot#include#in原创 2016-09-21 17:39:29 · 324 阅读 · 0 评论 -
12:字符串逆向输出
#include#includeusing namespace std;int main() { string str; int j,k,i; while(getline(cin,str)) { for( i=str.size()-1,k=i;i>=0;--i) { if(str[i]==' ') { for(原创 2016-09-21 17:26:56 · 361 阅读 · 1 评论 -
11.数字颠倒
题目描述描述:输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001输入描述:输入一个int整数输出描述:将这个整数以字符串的形式逆序输出输入例子:1516000输出例子:0006151#include#include#includeusing names原创 2016-09-21 14:36:37 · 375 阅读 · 0 评论 -
10:字符个数统计
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。输入描述:输入N个字符,字符在ACSII码范围内。输出描述:输出范围在(0~127)字符的个数。输入例子:abc输出例子:3#include#includeusing namespace std;int Count(string str ){原创 2016-09-21 12:10:43 · 1515 阅读 · 1 评论 -
09:提取不重复的整数
题目描述输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。输入描述:输入一个int型整数输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数输入例子:9876673输出例子:37689int main() { int num,n; while(cin>>num)//控制多次输入,处理多个case原创 2016-09-21 11:45:57 · 245 阅读 · 0 评论 -
08:合并表
题目描述数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。 输入描述:先输入键值对的个数然后输入成对的index和value值,以空格隔开输出描述:输出合并后的键值对(多行)输入例子:40 10 21 23 4输出例子:0 31 23 4#include#原创 2016-09-21 11:14:27 · 238 阅读 · 0 评论 -
07:取近似值
题目描述写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。输入描述:输入一个正浮点数值输出描述:输出该数值的近似整数值 输入例子:5.5输出例子:6 #include#includeusing namespace std;int main() { float fn原创 2016-09-21 10:51:43 · 267 阅读 · 0 评论 -
06:质数因子
题目描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )最后一个数后面也要有空格 详细描述: 函数接口说明: public String getResult(long ulDataInput) 输入参数: long ulDataInput:输入的正整数 返回值: String原创 2016-09-20 17:58:24 · 231 阅读 · 0 评论 -
05:进制转换 十六进制-十进制
题目描述写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 ) void TenTrance(string str){ int sum=0; if(str==" ") return ; string subStr=str.substr(2,str.size()-2); for(int i=str.size()-1;i>=0;i--原创 2016-09-20 17:18:39 · 1149 阅读 · 0 评论 -
04:字符串分割 substr()
题目描述•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。输入描述:连续输入字符串(输入2次,每个字符串长度小于100)输出描述:输出到长度为8的新字符串数组输入例子:abc123456789输出例子:abc000001234567890000000 //sub原创 2016-09-20 16:38:02 · 434 阅读 · 0 评论 -
03:明明的随机数
题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。Input Param n原创 2016-09-20 15:55:34 · 241 阅读 · 0 评论 -
02:计算字符个数
题目描述写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。输入描述:输入一个有字母和数字以及空格组成的字符串,和一个字符。输出描述:输出输入字符串中含有该字符的个数。输入例子:ABCDEFA输出例子:1#include#includeusing namespace std;/原创 2016-09-20 15:02:46 · 214 阅读 · 0 评论 -
01:字符串最后一个单词的长度
题目描述计算字符串最后一个单词的长度,单词以空格隔开。输入描述:一行字符串,非空,长度小于5000。输出描述:整数N,最后一个单词的长度。输入例子:hello world输出例子:5 #include#includeusing namespace std;//思路:字符串从后往前,遇到空格结束。void main() {原创 2016-09-20 14:53:54 · 268 阅读 · 0 评论 -
++i 与 i++ 效率的问题
++i的效率高些,++i在运算过程中不产生临时对象,返回的就是i,是个左值,类似++i=1这样的表达式是合法的,而i++在运算的过程中会产生临时对象,返回的是零时对象的值,是个右值,像i++=1这样的表达式是非法的。对于内置类型,单独的i++和++i语句,现在的编译器基本上都会优化成++i,所以就没什么区别了 解析:在这里声明,简单的比较前缀自增运算符和后缀自增运算符的效率是片面的原创 2016-09-27 15:17:02 · 403 阅读 · 0 评论 -
c++深拷贝、浅拷贝
1)浅拷贝就比如像引用类型,而深拷贝就比如值类型。浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,可是还是同一个人,不管是张三缺胳膊少腿还是李四缺胳膊少腿,都是这个人倒霉。深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。原创 2016-09-27 14:17:59 · 351 阅读 · 0 评论 -
抽象容器类型
顺序容器:List \ Vector\双端队列deque 关联容器:map(映射)\set(集合)1. map 是一个 键/值 对,键 用于查询,值 包含我们使用的数据。2. set 包含一个单一的键,支持元素是否存在的查询。map 和 set 都只包含每个键的惟一出现,即每个键只允许出现一次。原创 2016-09-22 17:54:51 · 329 阅读 · 0 评论 -
题目11:实现函数double Power(double base,int exponent),求base的exponent次方
题目:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。#includeusing namespace std;double Power(double base,int exponent){ double s=1.0;//此处不太合理,不能直接使用== 判断,double原创 2016-09-12 14:15:48 · 1025 阅读 · 0 评论 -
题目9:斐波那契数列
#includeusing namespace std;long long Fibonacci(unsigned n){ if(n==0||n==1) return n; else if(n>1) return Fibonacci(n-1)+Fibonacci(n-2);}//改进方法,将已经计算出的值存储起来 下次直接使用,不用再次计算。//f(0).f(1) 得原创 2016-09-09 16:03:31 · 442 阅读 · 0 评论 -
重点---快速排序
转载:http://developer.51cto.com/art/201403/430986.htm高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参转载 2016-09-09 14:00:34 · 320 阅读 · 0 评论 -
用两个队列实现一个栈的功能操作C++
解法:1.有两个队列q1和q2,先往q1内插入a,b,c,这做的都是栈的push操作。2.现在要做pop操作,即要得到c,这时可以将q1中的a,b两个元素全部dequeue并存入q2中,这时q2中元素为a,b,对q1再做一次dequeue操作即可得到c。3.如果继续做push操作,比如插入d,f,则把d,f插入到q2中,4.此时若要做pop操作,则做步骤25.以此类推,就实现了原创 2016-09-09 11:41:19 · 733 阅读 · 0 评论 -
排序
插入排序的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。常见的插入排序有插入排序(Insertion Sort),希尔排序(Shell Sort),二叉查找树排序(Tree Sort),图书馆排序(Library Sort),Patience排序(Patience Sort)。下面介绍前两种:(一)直接插入排序最差时间复原创 2016-09-09 09:45:45 · 204 阅读 · 0 评论