自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(213)
  • 收藏
  • 关注

原创 Leecode 1700-无法吃午餐的学生数量(队列)

题目代码若喜欢栈顶的甜点的学生存在,那么不管他们在队伍的哪个位置,必定会遍历到他。否则,一定无法继续拿掉栈顶甜点。要点:学生位置可变,三明治位置不可变。先统计学生中对两种三明治的需求人数,之后遍历三明治数组,如果栈顶的三明治还有对应的学生,那么该三明治一定会被拿走,否则之后所有的三明治都无法在被拿走,输出剩下的学生数目,即无法拿走午餐的学生数目。int countStudents(int* students, int studentsSize, int* sandwiches, int san

2021-08-27 23:34:07 687

原创 Leecode 237-删除链表中的结点

题目请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。例子输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.提示:1. 链表至少包含两个节点。2. 链表中所有节点的值都是唯一的。3. 给定的节点为非末尾节点并且一定是链表中的一个有效节点。4. 不要从你的函数中返回任何结果。代码/**

2021-08-25 22:25:00 222

原创 Leecode 203-移除链表元素

题目描述给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。代码

2021-08-24 22:57:49 235

原创 Leecode 160-相交链表

题目描述给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。提示:listA 中节点数目为 mlistB 中节点数目为 n0 <= m, n <= 3 * 1041 <= Node.val <= 1050 <= skipA <= m0 <= skipB <= n如果 listA 和 listB 没有交点,intersectVal 为 0如果 listA

2021-08-23 22:30:33 182

原创 Leecode 14-环形链表

题目给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?代码一:/** * Definition for

2021-08-23 21:06:44 83

原创 Leecode 83-删除排序链表中的重复元素

题目存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。提示:1. 链表中节点数目在范围 [0, 300] 内2. -100 <= Node.val <= 1003. 题目数据保证链表已经按升序排列代码一/** * Definition for singly-linked list. * struct ListNode { * int val; * struc

2021-08-22 23:53:26 131

原创 Leecode 21-合并两个有序链表

题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:1. 两个链表的节点数目范围是 [0, 50]2. -100 <= Node.val <= 1003. l1 和 l2 均按 非递减顺序 排列代码/** * Definition for singly-linked list. *

2021-08-22 23:22:25 132

原创 Leecode-2 两数相加(链表)

题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输出:[8,9,9,9,0,0,0,1]提示:1. 每个链表中的节点数在范围 [1, 100] 内

2021-08-21 23:36:54 162

原创 zzulioj 1218: 反转a+b

题目描述这是一个简单的问题,给你两个正整数a,b(0<=a,b<=2^31),然后把a和b反转然后相加;具体看样例;输入每组首先输入一个整数t,表示有t组数据。以后每组数据占一行,且为两个整数a和b(没有前导0)。输出对于每组数据 ,输出数字反转相加后的结果。每组占一行。没有前导0!样例输入 Copy320 30101 2123 340样例输出 Copy5103364代码#include<stdio.h>int reverse(int n); //

2021-08-19 22:39:48 830

原创 借助队列实现树的层次遍历

头文件 btree.h#ifndef _BTREE_H_#define _BTREE_H_#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedef char datatype_bt; //定义树的链式结构 typedef struct btreenode{ datatype_bt data; //结点数据域 struct btreenode *lchild,*rchild;//左右

2021-08-14 21:50:14 338

原创 树的链式存储及遍历

头文件 btree.h#ifndef _BTREE_H_#define _BTREE_H_#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedef char datatype_bt;typedef struct btreenode{ datatype_bt data; //结点数据域 struct btreenode *lchild,*rchild;//左右孩子指针 }btree

2021-08-14 21:44:31 129

原创 链式栈C语言实现

头文件 linkStack.h#ifndef _LINKSTACK_H_#define _LINKSTACK_H_#include<stdio.h>#include<stdlib.h>typedef int datatype; typedef struct node{ datatype data; //数据域 struct node *next; //链接指针域 }listnode,*linklist;linklist linkstack_creat

2021-08-14 21:39:55 390

原创 顺序栈C语言实现

头文件 sqStack.h#ifndef _SQSTACK_H_#define _SQSTACK_H_#include<stdio.h>#include<stdlib.h>typedef int datatype;typedef struct{ datatype *data; //用指针指向栈的存储空间 int maxlen; //当前栈的最大元素个数 int top; //指示栈顶位置(数组下标)的变量 }sqstack; sqstack *

2021-08-14 21:36:06 452

原创 链式队列C语言实现

头文件 linkQueue.h#ifndef _LINKQUEUE_H_#define _LINKQUEUE_H_#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedef int datatype; //定义数据类型为int//定义链式队列的结点类型typedef struct linkQueueNode{ datatype data; //数据域 struct linkQ

2021-08-14 21:31:49 334

原创 顺序队列C语言实现

头文件 seqqueue.h#ifndef _SEQQUEUE_H_#define _SEQQUEUE_H_#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedef int datatype; //定义数据类型为int#define MAXSIZE 10typedef struct seqqueue{ datatype data[MAXSIZE]; int front,rear;

2021-08-14 21:21:05 393

原创 Joseph问题

题目描述:设编号分别为:1,2,…n 的 n 个人围坐一圈。约定序号为 k (1<= k <=n) 的人从 1 开始计数,数到 m 的那个人出列,他的下一位又从 1 开始计数,数到 m 的人又出列,依次类推,直到所有人出列为止。例子:假设 n=8, k=3, m=4:则出列序列为:(6,2,7,4,3,5,1,8)算法思路:用一个不带头结点的循环链表来处理此问题,先构成一个有 n 个结点单循环链表,然后从第 k 个结点起从 1 计数,记到 m 时对应结点从链表中删除,然后

2021-08-14 21:12:20 277

原创 双向循环链表的C语言实现

头文件 DList.h#ifndef _DLIST_H_#define _DLIST_H_#include<stdio.h>#include<stdlib.h>typedef struct node{ int data; struct node *prior; //结点的前驱指针 struct node *next; //结点的后继指针 }dlistnode;dlistnode *dlist_create(); //双向循环链表的创建void dlist_

2021-08-14 19:47:10 241

原创 单链表基础功能C语言实现

头文件 LinkList.h#ifndef _LINKLIST_H_ //为了防止头文件的重复包含 #define _LINKLIST_H_#include<stdio.h> //这样在测试文件中可以不引入这两个头文件 #include<stdlib.h> typedef int datatype;typedef struct node{ datatype data; //结点的数据域 struct node *next; //结点的指针域,指向其下一

2021-08-14 19:00:10 177

原创 顺序表基础功能的C语言实现

头文件:sqlist.h//为了防止头文件重复包含,定义一个条件编译 #ifndef __SQLIST_H__#define __SQLIST_H__#define MAXSIZE 100typedef int data_t; //将int数据类型重命名一下 //定义顺序表,并将其重命名 typedef struct{ data_t data[MAXSIZE]; int last; //指向表尾 }sqlist_t;sqlist_t *create_sqlist(vo

2021-08-14 18:14:15 219

原创 zzulioj 1201: 众数问题

题目描述给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。编程任务:对于给定的由n 个自然数组成的多重集S,编程计算S 的众数及其重数。输入第1行多重集S中元素个数n(n<=50000);接下来的n 行中,每行有一个自然数。输出输出文件有2 行,第1 行给出众数,第2 行是重数。(如果有多个众数,只输出最小的)样例输入 Copy6122235样

2021-08-03 23:02:15 444

原创 1200: 数组的距离

题目描述已知元素从小到大排列的两个数组x[]和y[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离输入第一行为两个整数m, n(1≤m, n≤1000),分别代表数组f[], g[]的长度。第二行有m个元素,为数组f[]。第三行有n个元素,为数组g[]。输出数组的最短距离样例输入 Copy5 51 2 3 4 56 7 8 9 10样例输出 Copy1代码#include<stdio.h>#include<math.h>

2021-08-03 17:48:52 1743 2

原创 C语言中qsort函数的使用

qsort函数是C语言的stdlib.h库中包含的一个可以用来排序的函数,下面用一个例子来说明其的使用方法:#include<stdio.h>#include<stdlib.h>int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b; //这是从小到大排序, //若是从大到小改成:return *(int *)b-*(int *)a; }int main(){ int i,n,a[100

2021-08-01 21:45:44 186

原创 Leecode 217存在重复元素

题目给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。输入: [1,2,3,1]输出: true代码int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;//这是从小到大排序,若是从大到小改成: return *(int *)b-*(int *)a;}bool containsDuplicate(int* nu

2021-08-01 21:35:29 96

原创 C语言的<limits.h>库

INT_MAX与INT_MIN是C语言库#include<limits.h>库中定义的宏,分别代表int类型所能表示的最大值与最小值C语言的一个优良传统是标量类型(整数是典型的标量类型)要以一种对每个计算机体系结构都很自然的方式表示。例如,基本整型 int 的弹性就很大,它希望自己的大小等于一个机器字长:在 16 位环境中,机器字长为 16 位,int 占用 2 个字节;在 32 位环境中,机器字长为 32 位,int 占用 4 个字节;在 64 位环境中,机器字长为 64 位,i

2021-07-31 23:24:53 678

原创 leecode7 整数反转

题目给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。代码一(假设环境不允许存储 64 位整数(有符号或无符号)。)int reverse(int x){ int s=0; while(x!=0) { if(s<INT_MIN/10||s>INT_MAX/10) return 0; s=s

2021-07-31 23:18:03 184

原创 leecode13罗马数字转整数

题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

2021-07-31 17:00:31 89

原创 leeCode 9-回文数

题目给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。又比如:x = -121,从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。方法一:将输入的整数存到一个字符串数组中,然后再逆序存放到另一个字符串数组中,再使用strcmp函数比较两个字符串是否相等方法一代码:bool isPalindrome(int x){

2021-07-30 22:29:12 299

原创 经典排序算法汇总

一.快速排序快速排序的主要是基于分而治之的思想,它通过选取一个枢轴pivot,以其为中枢,经过一次排序把整个数组分成两个部分,左边的子表全部为小于pivot的值,右边的子表全部为大于pivot的值,然后再利用递归把左边部分、右边部分分别进行排序,从而达到对整个数组的排序,枢轴的选取有多种方式,通常选取待排序表的第一个元素的值作为枢轴的值。具体算法步骤如下:(1)选择待排序表的第一个元素a[0]的值作为枢轴pivot的值,同时设置两个指针low和high分别指向 表的上界和下界(2)从表的最右侧

2021-07-27 23:59:10 210

原创 zzulioj 1194: 总成绩排序(结构体专题)

题目描述有一学生成绩表,包括学号、姓名、3门课程成绩。请按如下规则排序:按总成绩降序排序,若总成绩相同,则按姓名升序排序。输入首先输入一个整数n(1<=n<=100),表示学生人数;然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。输出输出排序后的成绩单,格式见输出样例。样例输入 Copy3541207010188 Zhangling 89 78 95541207010189 Wangli

2021-07-26 00:25:58 638

原创 zzulioj1193: 单科成绩排序(结构体专题)

题目描述有一学生成绩表,包括学号、姓名、3门课程成绩。请按要求排序输出:若输入1,则按第1门课成绩降序输出成绩表,若输入为i(1<=i<=3),则按第i门课成绩降序输出成绩表。输入首先输入一个整数n(1<=n<=100),表示学生人数;然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。最后一行输入一个整数i,表示要求按第i门课成绩降序排序输出,若该门课成绩相同,则按学号升序。输出输出按

2021-07-26 00:13:45 1057

原创 zzulioj1192: 奖学金(结构体专题)

题目描述某校发放奖学金共5种,获取条件各不同:1.阳明奖学金,每人8000,期末平均成绩>80,且在本学期发表论文大于等于1篇;2.梨洲奖学金,每人4000,期末平均成绩>85,且班级评议成绩>80;3.成绩优秀奖,每人2000,期末平均成绩>90;4.西部奖学金,每人1000,期末平均成绩>85的西部省份学生;5.班级贡献奖,每人850,班级评议成绩>80的学生干部。只要符合条件就可以得奖,一人可兼得多项奖学金。例:某生,期末平均成绩87,班级评议成绩82

2021-07-24 22:49:51 809

原创 zzulioj 1191: 数星星(结构体专题)

题目描述一天,小明坐在院子里数星星,Gardon就出了个难题给她:Gardon在天空画出了一个矩形区域,让他输入矩形区域里有多少颗星星,仁慈的上帝还为他标出了每个星星的坐标。但小明数着数着就看花了眼,但他的原则是:宁愿多数一次,不可错过一个。如果小明把他数过的星星的坐标都告诉你,你能否帮他进行排重处理(如果两个星星的坐标位置相同,则视为一个星星),计算出星星的个数。输入首先输入一个整数n(n<=300),接下来的n对整数,每对表示小明数过的一个星星的位置(星星的坐标在-10000到10000之间

2021-07-24 16:25:37 400

原创 zzulioj1190: 按出生日期排序(结构体专题)

题目描述送人玫瑰手有余香,小明希望自己能带给他人快乐,于是小明在每个好友生日的时候发去一份生日祝福。小明希望将自己的通讯录按好友的生日排序,这样就查看起来方便多了,也避免错过好友的生日。为了小明的美好愿望,你帮帮他吧。小明的好友信息包含姓名、出生日期。其中出生日期又包含年、月、日三部分信息。输入n个好友的信息,按生日的月份和日期升序输出所有好友信息。输入首先输入一个整数n(1<=n<=10),表示好友人数,然后输入n行,每行包含一个好友的信息:姓名(不超过20位),以及三个整数,分别表示出

2021-07-24 16:13:24 535

原创 zzulioj 1189: 选票统计(二)(结构体专题)

题目描述计算机与通信工程学院2012届学生会主席投票选举工作定于1月6日在电教楼前隆重举行。本次投票将采用电脑统计选票的方式,当投票选举正式开始后,同学们将排队一一走到电脑前,投上自己神圣的一票:在电脑前输入一个姓名,然后输入回车表示确认。当所同学投票结束,工作人员只需要输入一个”#”并回车确认,表示投票结束,电脑立即显示出得票最高的同学姓名,该同学将当选为新一届计算机与通信工程学院学生会主席。选举大会的准备工作正在紧张进行,编程统计投票的工作就交给你了。输入本题为单实例测试。输入包含多行,每行是

2021-07-24 15:20:25 774

原创 zzulioj1188: 选票统计(一)(结构体专题)

题目描述1483. 某单位进行选举,有5位候选人:zhang、wang、zhao、liu、miao。编写程序,统计每人所得的票数。要求每人的信息里包括两部分:name和votes,分别描述姓名和所得票数。每个人的信息用一个结构体来表示,5个人的信息使用结构体数组。输入首先输入一个整数n,表示一张选票,接下来n行,每行是一个由小写英文字母组成的字符串,表示以上5个候选人之一。输出输出5行,按zhang、wang、zhao、liu、miao的顺序输出5个候选人的姓名和所得票数,用空格隔开。样例输入

2021-07-23 23:07:44 1235 1

原创 zzulioj 1187: 棒棒糖(结构体专题)

题目描述新年快到了,计算机学院新年晚会正在筹备中,今年有一个新创意:来参加晚会的所有学生都有礼物(一根棒棒糖)。老师把买棒棒糖的任务交给小明了,并指定了要买的棒棒糖的品牌和品种。俗话说得好,货比三家不吃亏。小明来到了商店,看了各个店铺里这种棒棒糖的价格,不仅如此,他还记住了每个店铺的存货量。已知小明打算购买n根棒棒糖,问他最少要花多少钱?输入第一行输入一个整数n,表示要购买的棒棒糖数量;第二行是一个整数m(1<=m<=10),表示明明考察过的店铺的数量;接下来m行,每行两个数,表示该店铺中

2021-07-23 22:15:46 480

原创 zzulioj1186: 删除记录(结构体专题)

题目描述有一学生成绩表,包括学号、姓名、3门课程成绩。请实现如下删除功能:输入一个学生的学号,删除该学生的所有信息。输入首先输入一个整数n(1<=n<=100),表示学生人数;然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。最后一行输入一个学号num。输出若要删除的学号不存在,则输出“error!”;否则,输出删除该学生后的所有记录。样例输入 Copy3541207010188 Zhang

2021-07-23 21:20:00 446

原创 zzulioj 1185: 添加记录(结构体专题)

题目描述有一学生成绩表,包括学号、姓名、3门课程成绩。已知该成绩表按学号升序排序。请编程实现,添加一个新的学生信息,且使成绩表仍按学号有序;若待添加的学号与已有学号重复,则输出错误信息,拒绝添加。输入首先输入一个整数n(1<=n<=100),表示学生人数;然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。最后一行输入一个待添加的学生信息,包括学号、姓名和3门课成绩输出若待添加的学号与已有学号重复,

2021-07-23 15:51:53 1264

原创 zzulioj 1184: 平面点排序(二)(结构体专题)

题目描述平面上有n个点,坐标均为整数。横坐标相同时按纵坐标排序,否则按横坐标排序。本题要求用结构体存储坐标,再进行排序。先升序排序输出,再降序排序输出,可以自己写排序函数,也可以用qsort库函数排序。输入第一行是整数n(1<=n<=100),表示接下来有n行,每行两个整数,表示平面上一个点的坐标。输出输出有两行,即排序后的点,格式为(u,v),每个点后有一个空格。第一行升序排序结果,第二行降序排序结果。样例输入 Copy41 32 51 44 1样例输出 Copy(1

2021-07-22 22:07:33 1451

原创 zzulioj 1183: 平面点排序(一)(结构体专题)

题目描述平面上有n个点,坐标均为整数。请按与坐标原点(0,0)距离的远近将所有点排序输出。可以自己写排序函数,也可以用qsort库函数排序。输入输入有两行,第一行是整数n(1<=n<=10),接下来有n行,每行一对整数(每对整数对应一个点)。输出输出排序后的所有点,格式为(u,v),每个点后有一个空格。测试数据保证每个点到原点的距离都不同。样例输入 Copy41 32 51 44 2样例输出 Copy(1,3) (1,4) (4,2) (2,5)代码:#includ

2021-07-22 21:41:37 514

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除