![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法秘籍
梦逸雨涵
山有木兮木有枝,心悦君兮君不知
展开
-
字符串的旋转
对于一个字符串,和字符串中的某一位置,请设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。给定字符串A和它的长度n以及特定位置p,请返回旋转后的结果。测试样例:"ABCDEFGH",8,4返回:"FGHABCDE" 方法一:利用特殊函数直接旋转法 解析一:根据题意,将一个字符串的某个位置的左侧移动到右侧,右侧移动到左侧,由此我们通过使用sub...原创 2018-08-11 13:44:05 · 1277 阅读 · 0 评论 -
最后一个出列的是谁
题目: 已知有n个人(编号分别为1,2,3,...,n分别表示)围坐在一张圆桌周围。编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。解析: 根据题意,可以建立一个循环链表来完成出列情况,即建立一个具有n个链结点且无头结点的循环链表;将圆桌周围的每一个人对应着所建立的链表中的一...原创 2018-10-11 06:51:52 · 221 阅读 · 0 评论 -
链式单链表
题目: 构造一个单链表,实现创建、删除、插入、查找等功能。解析:初始化单链表,即单链表的表头指针为空void initlist(node **pnode){ *pnode = NULL; printf("初始化成功!\n");} 打印链表元素,遍历链表 //打印链表元素,遍历链表 void printinfo(linklist list){ lnod...原创 2018-10-07 00:11:25 · 441 阅读 · 0 评论 -
带有头结点的单向循环链表
题目: 创建带有头结点的循环链表,实现插入 、查询 、 删除等功能 。源代码:#include<iostream>#include<malloc.h>using namespace std;typedef int elemtype; //定义结点类型 //定义一个线性链表的类型typedef struct node{ elemty...原创 2018-10-16 00:46:27 · 3833 阅读 · 0 评论 -
数列排序
题目: 时间限制:1.0s 内存限制:512.0MB问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 ...原创 2018-10-18 18:30:28 · 3819 阅读 · 1 评论 -
顺序线性表
设计一个顺序表,实现删除、插入、查找、排序等功能。 解析:根据下列需要实现的功能具体分析1.在长度为n的线性表的第i个位置插入一个新的数据item(尾部插入法)该操作是指在线性表的第i-1个位置与线性表的第i个位置插入一个新的数据元素,使得线性表的长度变为n+1,但是在进行插入时首先应该判断线性表是否已满或者存储空间已被占满,并且还需要测试插入的位置是否恰当,由此插入的步骤分为:先...原创 2018-10-03 22:53:37 · 1618 阅读 · 0 评论 -
数字金字塔
要求实现函数输出n行数字金字塔。输入样例:5输出样例: 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5时间限制: 400 ms内存限制: 64 MB 解析:由所给样例可知,该数字金字塔为n行,每行的数字为该行的行数,并且其形状为三角形,而且还可以看出第一行先空n个单位的空格后再输出数字,接下来依次递减一个单位的空格,...原创 2018-10-02 20:36:36 · 927 阅读 · 0 评论 -
最高分是多少
老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.输入描述:输入包括多组测试数据。每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目。学生ID编号从1编到N。第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数...原创 2018-08-19 11:55:32 · 176 阅读 · 0 评论 -
棋子翻转
在4x4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。给定两个数组A和f,分别为初始棋盘和翻转位置。其中翻转位置共有3个。请返回翻转后的棋盘。测试样例:[[0,0,1,1],[1,0,1,0],[0,1,1,0],[0,0,1,...原创 2018-08-18 11:23:55 · 452 阅读 · 0 评论 -
串的模式匹配
对于两个字符串A,B。请设计一个高效算法,找到B在A中第一次出现的起始位置。若B未在A中出现,则返回-1。给定两个字符串A和B,及它们的长度lena和lenb,请返回题目所求的答案。测试样例:"acbc",4,"bc",2返回:2 方法一:下标判断法 解析:根据题意,首先进行字符串长度的判断:lena与lenb是否长小于-1,如果是则返回值为-1;所要找的字符串的长度l...原创 2018-08-14 11:33:18 · 1337 阅读 · 4 评论 -
相邻最大差值
请设计一个复杂度为O(n)的算法,计算一个未排序数组中排序后相邻元素的最大差值。给定一个整数数组A和数组的大小n,请返回最大差值。保证数组元素个数大于等于2小于等于500。测试样例:[9,3,1,10],4返回:6 方法一:数组下标法 解析:根据题意,我们可以先定义一个一维数组存储数据,然后通过sort进行由小到大排序,再通过for语句两两算出差值,并将其存储到新的一维数组...原创 2018-08-15 11:27:50 · 680 阅读 · 0 评论 -
顺时针旋转矩阵
有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。测试样例:[[1,2,3],[4,5,6],[7,8,9]],3返回:[[7,4,1],[8,5,2],[9,6,3]] 方法一:数组下标转换法 解析:根据题意,将一个n*n矩阵顺时针旋转90度,即先列变为行,再每行分别倒序...原创 2018-08-12 11:46:57 · 1519 阅读 · 0 评论 -
之字形打印矩阵
题目描述对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。给定一个整数矩阵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] 解析:根据题意,定义一个二维数组,以及它的维数,输出一个单...原创 2018-08-16 11:34:33 · 247 阅读 · 0 评论 -
5-血型遗传检测
血型遗传对照表如下: 父母血型 子女会出现的血型 子女不会出现的血型 O与O O A,B,AB A与O A,O B,AB A与A A,O B,AB ...原创 2018-08-13 11:40:28 · 2231 阅读 · 0 评论 -
字符串替换
请你实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大于等于占位符个数。保证原串由大小写英文字母组成,同时长度小于等于500。测试样例:"A%sC%sE",7,['B','D'...原创 2018-08-17 19:59:53 · 11034 阅读 · 0 评论 -
堆栈的顺序存储结构
题目: 初始化一个堆栈 测试堆栈是否已经满 进栈 测试堆栈是否为空 退栈 取当前栈顶元素 分析: 进栈 新的数据进栈前首先测试堆栈是否上溢,若溢出则插入失败;否则则将栈顶指针top向前移动一个位置,然后将新的数据元素item插入到修改以后的top指出的新的栈顶...原创 2018-10-20 23:58:02 · 1705 阅读 · 0 评论