
习题
Joker Zxc
这个世界是属于偏执狂的。
展开
-
题:组队竞赛-求最大水平值总和
题目:求水平值总和题目分析:队伍的水平值等于该队伍队员中第二高水平值,也就是说每个队伍 的第二个值是尽可能大。解题思路:--->可以把每个组数据从小到大排序,取第二大的数。把所有第二大的数据全部加起来,就是最大水平值zong'he--->但是分成三个三个的一组,很麻烦,很难,可以排成一个组--->考虑一个组之后,考虑全部排序,发现三个三个分的时候的下...原创 2019-05-22 13:35:39 · 503 阅读 · 0 评论 -
排序算法之—希尔排序
希尔排序:图解:第一步:第二步:第三、四步:第五步:重点1,2步的原理。后面一样的我道理。实现代码://希尔排序void Hill(int a[], int length, int grep) { //三个参数:存放数据的数组,数据长度,间隔 //数据长度的确定可以: //int length = sizeof(array) / ...原创 2019-07-22 11:43:45 · 190 阅读 · 0 评论 -
排序算法之—直接选择排序
直接选择排序:图解:主要步骤:我们就可以确定:两层循环,第一层循环代表正在调整顺序的位置,第二层代表无序的元素实现代码://4.直接选择排序int choose(int a[], int length) { int i = 0; for (i = 0; i < length; i++) { //确定调整色位置 int j = 0; int mi...原创 2019-07-22 12:22:39 · 205 阅读 · 0 评论 -
题:把字符串转换成整数
题目描述:将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0。思路:代码实现:int main...原创 2019-07-31 12:20:31 · 160 阅读 · 0 评论 -
题:最近公共祖先
题目描述:有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。给定两个int a,b。为给定结点的编号。请返回a和b的最近公共祖先的编号。注意这里结点本身也可认为是其祖先。示例:输入:2,3 返回:1思路:树中子节点与父节点之间的关系为root = child / 2 ...原创 2019-08-04 11:13:46 · 213 阅读 · 0 评论 -
题:求最大连续bit数
题目描述:功能:求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1。示例:输入 3 输出 2思路:根据位运算,获取每一位的二进制值。获取第i位的值: (n >> i) & 1。如果1连续,则计数累加,如果不连 续,则从0开始计数。代码示例 int MaxBit(){ int n;...原创 2019-08-04 11:39:02 · 289 阅读 · 0 评论 -
排序算法之—堆排序
堆排序:堆排序算法流程图:(图解)这是我们已知的大堆下面是实现流程:代码实现://5.堆排序void Heap(int a[], int length) { //两个参数:存放数据的数组,数据长度 //1.建大堆 CreatHeap(); //这里没有写 后面再写 //2.开始排序 for (int i = 0; i < lengt...原创 2019-07-22 22:46:29 · 361 阅读 · 0 评论 -
题:斐波那契数列(Fibonacci数列)——一个数最少几步变成斐波那契数列的数
题目描述:Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一 个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。输入描述:输入为一个正整数N(1 ≤ N ≤ 1,000,000)...原创 2019-07-31 22:17:07 · 4149 阅读 · 0 评论 -
排序算法之—快速排序
快速排序:图解大体思想:可以看到,最后的数据中:绿色都是小于等于6的数据;蓝色就是大于6 的数据;接着分别对绿色,蓝色部分进行同样的方式,最终就会排序完成。确定快速排序的流程:划分区间的方法:Hover方法图解思想:Hover版本的代码://Hover法int Hover(int array[], int right, int left) { ...原创 2019-07-23 11:25:06 · 238 阅读 · 0 评论 -
题:两种排序
题目描述:考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法:根 据字符串的字典序排序。例如:"car" < "carriage" < "cats" < "doggies < "koala" 根据字符串的长度排序。例如:"car" < "cats" < "koala" < "doggies" < ...原创 2019-08-01 08:58:37 · 167 阅读 · 0 评论 -
题:求路径总数
题目描述:请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各 自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。输入描述:输入两个正整数输出描述:返回结果示例:输入 2 2 输出 6代码实现:#include<stdlib.h>#includ...原创 2019-08-01 09:31:28 · 661 阅读 · 0 评论 -
题:井字棋
题目描述:对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子。示例:输入:[[1,0,1],[1,-1,-1],[1,-1,0]] 输出:true代码实现:#include<stdlib.h>#include<...原创 2019-08-01 12:08:13 · 443 阅读 · 0 评论 -
题:完全数计算
题目描述:完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余 5个数相加,1+2+4+7+14=28。输入描述:给定函数count(int n),用于计算n以内(含n)完全数的个数。计算范围0 < n &...原创 2019-08-14 14:20:54 · 302 阅读 · 0 评论 -
排序算法之—插入排序
插入排序:代码实现://插入排序//插入数据void Inister(int a[], int length) { //a:装数据的数组 length:数据的长度 int i = 0; for (i = 1; i < length;i++) { //第二个数据开始,因为第一个数据不需要找位置 int j = 0; int k = a[i]; //给数据k找位...原创 2019-07-22 11:02:41 · 174 阅读 · 0 评论 -
排序算法之—冒泡排序
冒泡排序:实现代码://冒泡排序void bubbling(int a[],int length) { //a:装数据的数组 length:数据的长度 int i = 0; for (i = 1; i < length; i++) { //length是数据长度 //数据要变换多少趟 int j = 0; for (j = 0; j < length ...原创 2019-07-22 11:00:33 · 180 阅读 · 0 评论 -
题:连续最大和
题目描述:一个数组有 N 个元素,求连续子数组的最大和。例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3。输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。输出描述:所有连续子数组中和最大的值。示例:输入 3 -1 2 1...原创 2019-07-30 18:02:45 · 250 阅读 · 0 评论 -
题:求两个数最大公约数,最小公倍数
问:求两个数最大公约数,最小公倍数解题思路:我们不断地尝试会发现最大公约数,最小公倍数的规律:两个数的乘积 / 最大公约数 = 最小公倍数因此,我们的代码有如下设计过程:代码示例:#define _CRT_SECURE_NO_WARNINGS#include<stdlib.h>#include<stdio.h>int main() {...原创 2019-06-01 14:11:28 · 208 阅读 · 0 评论 -
题:倒置字符串
题:将一句话的单词进行倒置,标点不倒置。比如 I like beijing. ,经过函数后变为:beijing. like I也就是将一段话句子倒置,句子中每个单词倒置,,标点不倒置。解题思路:看到倒置二字,首先想到的是 String类 中的 reverse函数,能够简单快捷的倒置字符串,同时通过递归调用,每个单词也使用reverse函数 来倒置,从而实现单词的倒置,完成题目要求。...原创 2019-06-02 09:49:03 · 277 阅读 · 0 评论 -
排序算法之—归并排序
归并排序:归并排序的代码://归并排序void __MergeSort(int array[], int left, int right, int* extra) { if (right == left + 1) { //剩余一个数,有序 return; } if (left >= right) { //区间没有数 return; } int ...原创 2019-07-23 16:05:59 · 216 阅读 · 0 评论 -
面试题:栈——括号匹配
栈的应用:括号匹配原题链接:https://leetcode-cn.com/problems/valid-parentheses/括号匹配:依次遍历字符串中的每一个字符如果是左括号压栈如果是右括号判断当前栈是否为空栈右括号多于左括号 return false取出栈顶括号(左括号)拿左括号和右括号进行匹配如果不匹配 return...原创 2019-04-26 12:10:09 · 346 阅读 · 0 评论 -
面试题:用队列实现栈
原题链接:https://leetcode-cn.com/problems/implement-stack-using-queues/用队列实现栈代码如下://用队列实现栈class MyStack {public: queue<int> q; // 成员变量 /*将元素x推入堆栈。*/ void push(int x) { q.push(x); }...原创 2019-04-26 12:18:24 · 169 阅读 · 0 评论 -
面试题:用栈实现队列
原题链接:https://leetcode-cn.com/problems/implement-queue-using-stacks/代码如下://用栈实现队列。class MyQueue {public: stack<int> left; stack<int> right; /*将元素x推到队列的后面。*/ void push(int x) { ...原创 2019-04-26 12:21:41 · 199 阅读 · 0 评论 -
面试题:实现一个最小栈
原题链接:https://leetcode-cn.com/problems/min-stack/代码如下:// 实现一个最小栈。class MinStack {public: stack<int> normal; stack<int> min; void push(int x) { normal.push(x); if (min.empty()...原创 2019-04-26 12:22:51 · 303 阅读 · 0 评论 -
链表:删除所有值是date的结点
删除所有值是date的结点:思路:找到所有date的值(即按值查找),类似头删一样删除值是date的结点,注意,第一个结点值是date时,头节点得变化;最后一个结点值是date时尾结点得变化(即头删,尾删)。//删除节点的所有date值int DeleteAllDate(SHead* s,SListDataType date) { //边界判断 //1.链表不存在 assert(...原创 2019-07-17 09:46:09 · 340 阅读 · 0 评论 -
链表——反转链表
反转链表:代码示例:我链表的定义:typedef int SListDataType;typedef struct SListNode { SListDataType value; // 保存的值 struct SListNode* next; // 保存下一个结点的地址} SListNode;typedef struct SHead { SListNode* ...原创 2019-07-17 10:46:02 · 208 阅读 · 0 评论 -
链表:返回链表的中间结点
返回链表的中间结点:代码实现:链表的定义:typedef int SListDataType;typedef struct SListNode { SListDataType value; // 保存的值 struct SListNode* next; // 保存下一个结点的地址} SListNode;typedef struct SHead { SListNo...原创 2019-07-17 11:35:10 · 313 阅读 · 0 评论 -
链表:链表分割问题:以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
链表分割:以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前,注意:数据的顺序不改变。代码实现:链表的定义:typedef int SListDataType;typedef struct SListNode { SListDataType value; // 保存的值 struct SListNode* next; // 保存下一个结点的...原创 2019-07-17 17:28:01 · 2632 阅读 · 4 评论 -
题:统计回文
题目描述:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有 对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符 串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新 串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。输入描述...原创 2019-07-30 11:12:38 · 239 阅读 · 0 评论 -
题:扑克牌的大小
题目描述:扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌 面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER输入描述:输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如:4 4 4 4jok...原创 2019-08-14 15:05:38 · 357 阅读 · 0 评论