Ghost_199503
学习是快乐的,考试是痛苦的
展开
-
浅析快速排序
快速排序作为一种对冒泡排序的排序算法,其时间复杂度在O(n*lg n),最坏情况为O(n^2);空间复杂度为O(n*lg n)。对于一个已知数组A[n],使用快速排序可分为两步:1. A[0..n-1]被划分为俩个(可能空)的子数组 A[0…i-1]和 A[i+1 ..n-1],使得 A[0 ..i-1] 2. 通过递归调用快速排序,对子数组 A[0…i-1]和 A[i+1 .原创 2018-02-03 12:56:00 · 158 阅读 · 0 评论 -
滑动窗口解题
寻找最长核心:左右双指针(L,R)在起始点,R向右逐位滑动循环过程:窗内元素满足条件,R向右扩大窗口,并更新最优结果窗内元素不满足条件,L向右缩小窗口R到达结尾//最长模板初始化L,R,result,bestResultwhile(右指针没有到结尾) { 窗口扩大,加入R对应元素,更新当前result while(result不满足要求) { 窗口缩小,移除L对应元素,L右移 } 更新bestResult(最优结果) R++;} return bestResult寻原创 2022-05-09 08:08:42 · 184 阅读 · 0 评论 -
字符串排序
描述编写一个程序,将输入字符串中的字符按如下规则排序。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。如,输入: By?e 输出: Be?y数据范围:输入的字符串长度满足 1≤n≤1000输入描述:输入字符串输出描述:输出字符串#include <stdio.h>#inclu原创 2022-04-12 23:11:06 · 300 阅读 · 0 评论 -
手机键盘九宫格 -- HW
九宫格按键输入,判断输出,有英文和数字两个模式,默认是数字模式。原创 2022-06-21 11:36:45 · 1120 阅读 · 0 评论 -
字符串序列判定 -- HW
先输入S,再输入L,每个字符串占一行。S串最后一个有效字符在L中的位置。原创 2022-06-21 10:37:26 · 1226 阅读 · 0 评论 -
判断字符串子序列--HW
请找出最后一个序列的起始位置。此题考察主要是字符串操作。原创 2022-06-21 10:26:24 · 417 阅读 · 0 评论 -
玩牌高手--HW
给定一个长度为n的整型数组,表示一个选手在n轮内可选择的牌面分数。选手基于规则选牌,请计算所有轮结束后其可以获得的最高总分数。原创 2022-06-20 17:40:44 · 163 阅读 · 0 评论 -
we are a team--HW
此题主要考查并查集原创 2022-06-20 17:05:07 · 559 阅读 · 0 评论 -
求解立方根
描述计算一个浮点数的立方根,不使用库函数。保留一位小数。数据范围:∣val∣≤20输入描述:待求解参数,为double类型(一个实数)输出描述:输出参数的立方根。保留一位小数。#include <stdio.h>int main(){ float num = 0.0; float N = 0.0; while (scanf("%f", &num) != EOF) { if (num < 0) {原创 2022-04-12 07:58:17 · 100 阅读 · 0 评论 -
等差数列求和
描述等差数列 2,5,8,11,14。。。。(从 2 开始的 3 为公差的等差数列)输出求等差数列前n项和数据范围: 1≤n≤1000输入描述:输入一个正整数n。输出描述:输出一个相加后的整数。#include <stdio.h>int main(){ int n = 0; int a1 = 2; int an = a1; int d = 3; int sum = a1; scanf("%d", &n);#if 0原创 2022-04-13 08:09:24 · 262 阅读 · 0 评论 -
空汽水瓶换汽水
描述某商店规定:三个空汽水瓶可以换一瓶汽水,允许向老板借空汽水瓶(但是必须要归还)。小张手上有n个空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。数据范围:输入的正整数满足 1≤n≤100注意:本题存在多组输入。输入的 0 表示输入结束,并不用输出结果。输入描述:输入文件最多包含 10 组测试数据,每个数据占一行,仅包含一个正整数 n( 1<=n<=100 ),表示小张手上的空汽水瓶数。n=0 表示输入结束,你的程序不应当处理这一行。输出描述:对于每组测试数据,输出一行,表示最多可原创 2022-04-12 22:45:46 · 127 阅读 · 0 评论 -
求最小公倍数
描述正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。数据范围:1≤a,b≤100000输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。#include <stdio.h>/* 求出最大公约数 */unsigned int commonDiv(unsigned int a, unsigned int b){ unsigned int c = a%b; if (c == 0) {原创 2022-04-12 08:03:28 · 81 阅读 · 0 评论 -
素数伴侣——匈牙利算法
想了解匈牙利算法,可以参考以下博文,很详细!https://blog.csdn.net/dark_scope/article/details/8880547接下今天的重点–素数伴侣华为机试中一道困难题。描述若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的 N ( N 为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴原创 2022-04-16 21:44:22 · 164 阅读 · 0 评论 -
坐标移动--字符串处理
描述开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。输入:合法坐标为A(或者D或者W或者S) + 数字(两位以内)坐标之间以;分隔。非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。下面是一个简单的例子 如:A10;S20;W10;D30;X;A1A;B10A11;;A10;处理过程:起点(0,0)+ A10 = (-10,0原创 2022-04-17 22:00:29 · 107 阅读 · 0 评论 -
明明的随机数
描述明明生成了NN个1到500之间的随机整数。请你删去其中重复的数字,即相同的数字只保留一个,把其余相同的数去掉,然后再把这些数从小到大排序,按照排好的顺序输出。数据范围: 1≤n≤1000 ,输入的数字大小满足 1≤val≤500输入描述:第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。输出描述:输出多行,表示输入数据处理后的结果#include <stdio.h>int main(){原创 2022-04-12 07:42:53 · 96 阅读 · 0 评论 -
字符个数统计
描述编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次例如,对于字符串 abaca 而言,有 a、b、c 三种不同的字符,因此输出 3 。数据范围: 1≤n≤500输入描述:输入一行没有空格的字符串。输出描述:输出 输入字符串 中范围在(0~127,包括0和127)字符的种数。输入:abc输出:3输入:aaa输出:1简单哈希解法原创 2022-04-13 22:47:21 · 140 阅读 · 0 评论 -
合并表记录
描述数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。提示:0 <= index <= 111111111 <= value <= 100000输入描述:先输入键值对的个数n(1 <= n <= 500)接下来n行每行输入成对的index和value值,以空格隔开输出描述:输出合并后的键值对(多行)输入: 4 0 1 0 2 1原创 2022-04-16 22:37:36 · 70 阅读 · 0 评论 -
C语言中快排函数——qsort()
qsort()函数qsort()函数是C库提供的快排函数接口#indlude <stdlib.h>void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));/* * base:需要排序的数组 * nmemb:数组元素个数 * size: 每个元素的大小 * compar: 指向一个比较函数,根据cmp函数的比较,决定数原创 2022-05-21 23:33:33 · 348 阅读 · 0 评论 -
链表相加-C语言
描述给定两个非空链表逆序存储的的非负整数,每个节点只存储一位数组。请你把两个链表相加以下相同方法返回链表,保证两个数都不会以 0 开头。数据范围:1≤n≤105 ,每个节点的值都满足0≤val≤9示例1输入:{2,5,6},{5,6,1}返回值:{7,1,8}/** * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,防止重复定义 * * C语言声明原创 2022-05-15 22:25:40 · 395 阅读 · 0 评论 -
两数之和-C语言
描述给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。(注:返回的数组下标从1开始算起,保证target一定可以由数组里面2个数字相加得到)数据范围2≤len(numbers)≤10^5−10≤numbersi ≤10^90≤target≤10^9要求空间复杂度 O(n),时间复杂度 O(nlogn)示例1输入:[3,2,4],6返回值:[2,3]说明:因为 2+4=6 ,而 2的下标为2 , 4的原创 2022-05-10 08:05:09 · 661 阅读 · 0 评论 -
在字符串中找出连续最长的数字串
描述输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置)本题含有多组样例输入。数据范围:字符串长度 1≤n≤200 , 保证每组输入都至少含有一个数字输入描述:输入一个字符串。1<=len(字符串)<=200输出描述:输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格)。输入:abcd12345ed125ss123058789a8a72a6a5yy98y原创 2022-04-13 22:37:11 · 264 阅读 · 0 评论 -
二叉树的最大深度--DFS
描述求给定二叉树的最大深度,深度是指树的根节点到任一叶子节点路径上节点的数量。最大深度是所有叶子节点的深度的最大值。(注:叶子节点是指没有子节点的节点。)数据范围:0≤n≤100000,树上每个节点的val满足∣val∣≤100要求: 时间复杂度 O(n)O(n)示例1输入:{1,2}返回值:2解题思路间注释DFS函数中的执行过程:若执行到结尾,则返回 (终止条件)若未到达结尾,则更新当前结果 (deep++)若到达末尾叶子结点,进行最优结果更新 (更新result)原创 2022-05-08 21:47:39 · 118 阅读 · 0 评论 -
连续子数组的最大之和
描述给定一个长度为 n\n 的数组,数组中的数为整数。请你选择一个非空连续子数组,使该子数组所有数之和尽可能大,子数组最小长度为1。求这个最大值。输入描述:第一行为一个正整数 n\n ,代表数组的长度。 1≤n≤2∗105第二行为 n 个整数 ai ,用空格隔开,代表数组中的每一个数。∣ai∣≤102输出描述:连续子数组的最大之和。示例1输入:81 -2 3 10 -4 7 2 -5输出:18说明:经分析可知,输入数组的子数组[3,10,-4,7,2]可以求得最大和为18上原创 2022-04-25 22:48:37 · 167 阅读 · 0 评论 -
最小花费爬楼梯
描述给定一个整数数组 cost ,其中 cost[i] 是从楼梯第i个台阶向上爬需要支付的费用,下标从0开始。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。数据范围:数组长度满足 1≤n≤105,数组中的值满足 i ≤104输入描述第一行输入一个正整数 n ,表示数组 cost 的长度。第二行输入 n 个正整数,表示数组 cost 的值。输出描述示例输入:101 100 1 1原创 2022-04-24 22:24:57 · 185 阅读 · 0 评论 -
梅花桩走法
描述Redraiment是走梅花桩的高手。Redraiment可以选择任意一个起点,从前到后,但只能从低处往高处的桩子走。他希望走的步数最多,你能替Redraiment研究他最多走的步数吗?数据范围:每组数据长度满足 1≤n≤200 , 数据大小满足 1≤val≤350输入描述数据共2行,第1行先输入数组的个数,第2行再输入梅花桩的高度输出描述输出一个结果输入:62 5 1 5 4 5 输出:3说明:6个点的高度各为 2 5 1 5 4 5如从第1格开始走,最多为3步, 2 4原创 2022-04-19 11:38:51 · 358 阅读 · 0 评论 -
合唱队——最少出列人数
描述N 位同学站成一排,音乐老师要请最少的同学出列,使得剩下的 K 位同学排成合唱队形。通俗来说,能找到一个同学,他的两边的同学身高都依次严格降低的队形就是合唱队形。例子:123 124 125 123 121 是一个合唱队形123 123 124 122不是合唱队形,因为前两名同学身高相等,不符合要求123 122 121 122不是合唱队形,因为找不到一个同学,他的两侧同学身高递减。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。注意:不允许原创 2022-04-18 21:27:31 · 1108 阅读 · 0 评论 -
购物单--最大满意度
描述王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件附件电脑打印机,扫描仪书柜图书书桌台灯,文具工作椅无如果要买归类为附件的物品,必须先买该附件所属的主件,且每件物品只能购买一次。每个主件可以有 0 个、 1 个或 2 个附件。附件不再有从属于自己的附件。王强查到了每件物品的价格(都是 10 元的整数倍),而他只有 N 元的预算。除此之外,他给每件物品规定了一个重要度,用整数原创 2022-04-17 17:57:33 · 348 阅读 · 0 评论 -
识别有效的IP地址和掩码并进行分类统计
描述请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。所有的IP地址划分为 A,B,C,D,E五类A类地址1.0.0.0到126.255.255.255B类地址128.0.0.0到191.255.255.255C类地址192.0.0.0到223.255.255.255D类地址224.0.0.0到239.255.255.255E类地址240.0.0.0到255.255.255.255私网IP范围原创 2022-04-18 17:55:25 · 305 阅读 · 0 评论 -
memory相关函数
memory相关函数memsetmemcpymemmovememcmpmemchrmemsetvoid *memset(void *s, int c, size_t n);参数s:要填充内存块的首地址c:要设置的值,以该值的无符号char填充内存块n:要设置该值的字节数返回值要填充内存块的首地址函数实现见string.c示例memcpyvoid *memcpy(void *dest, const void *src, size_t n)];参数dest:复制内容到目原创 2021-01-05 21:59:43 · 408 阅读 · 0 评论