自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xxxibgdrgn博客

自先沉稳,而后爱人。

  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 1. 两数之和-力扣(LeetCode)(膜拜大佬们)

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]这是第一题。。。对,就是第一题,和大佬们做的一比,我做的就是狗屎(捂脸),不知道抽了什么疯,我打开了收藏夹里的Leetcode官网,开始

2020-06-29 14:35:27 170

原创 150. 逆波兰表达式求值-力扣(LeetCode)

根据 逆波兰表示法,求表达式的值。*有效的运算符包括 +, -, , / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例2:输入: [“4”, “13”, “5”, “/”, “+”]输出: 6解释: 该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6以示例2为例进行说明:给出的是后缀表达式,也就是运算符在数字后面的,解决方法是,遇到数

2020-06-29 14:02:17 330

原创 函数式编程——Lambda的延迟执行

有些场景的代码执行后,结果也不一定会被使用,从而造成性能浪费。而Lambda表达式是延迟执行的,这正好可以作为解决方案,提升性能。性能浪费的日志案例并使用Lambda表达式进行优化解决public class Demo{ //定义一个日志级别,显示日志信息的方法 public static void showLog(int level,String mes){ //对日志等级进行判断 if(level==1){ System.out

2020-06-28 17:05:32 417

原创 函数式接口的基本概念和使用

概念函数式接口在java中是指:有且仅有一个抽象方法的接口。(当然它可以包含其他的方法,比如默认的,私有的,但是抽象的只能有一个)函数式接口,即适用于函数式编程场景的接口。而java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,java中的Lambda才能顺利地进行推导。题外话:“语法糖”是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的for-each语法,其实底层的实现原理仍然是迭代器,这便是“语法糖”。

2020-06-28 17:01:37 679

原创 团体程序设计天梯赛L1-017 到底有多二 (15分)(易错点分析)

一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字-13142223336是个11位数,其中有3个2,并且是负数,也是偶数,则它的犯二程度计算为:3/11×1.5×2×100%,约为81.82%。本题就请你计算一个给定整数到底有多二。输入格式:输入第一行给出一个不超过50位的整数N。输出格式:输入第一行给出一个不超过50位的整数N。输入样例:-13142223336输出样例:-13142223

2020-06-27 15:17:20 934

原创 团体程序设计天梯赛L1-015 跟奥巴马一起画方块 (15分)

加粗样式美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!输入格式:输入在一行中给出正方形边长N(3≤N≤21)和组成正方形边的某种字符C,间隔一个空格。输出格式:输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。输入样例:10

2020-06-27 14:48:13 367

原创 TCP通信程序(客户端和服务端,附详细步骤)

说明:相关构造方法及使用步骤等在代码注释等内容中,有些地方需要捕获异常,正式写的时候一定要捕获或者抛出,否则编译异常!!!严格区分客户端和服务端两端通信时步骤:1.服务端程序,需要事先启动,等待客户端的连接。它不会主动的请求客户端2.客户端主动连接服务器端,连接成功才能通信。服务端不可以主动连接客户端。这个连接种包含一个对象,这个对象是IO对象,可以通过这个对象进行通信,通信的数据不仅仅是字符,所以IO对象是字节流对象。在java中,提供了两个类用于实现TCP通信程序1.客户端:java.net

2020-06-26 22:35:58 3859

原创 网络编程及网络通讯协议相关介绍

一、网络通讯协议网络通信协议:通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换TCP/IP协议:传输控制协议/因特网互联协议,是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于

2020-06-26 22:28:11 301

原创 6-6 带头结点的链式表操作集 (20分)(易错点分析)

本题要求实现带头结点的链式表操作集。函数接口定义:List MakeEmpty();Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode {ElementType Data;Pt

2020-06-26 17:24:08 343

原创 7-51 两个有序链表序列的合并 (20分)(段错误)

已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5 -12 4 6 8 10 -1输出样例:1 2 3 4 5 6 8 10分析:他让你用链表,你就真的用有指针的真链表吗?小朋友好天真,还是

2020-06-25 23:15:11 1159 1

原创 java中的序列化、反序列化、序列化集合和transient--瞬态关键字

序列化和反序列化把对象以流的方式,写入到文件中保存,叫写对象,也叫对象的序列化。对象中包含的不仅仅是字符,使用字节流。Person p = new Person("小可爱",18);ObjectOutputStream:对象的序列化流//将对象写入到文件中,而硬盘中保存的都是字节,看不懂,所以要想看就要用流看,//即把文件中保存的对象,以流的方式读取出来,叫做读对象,也叫对象的反序列化,使用字节流ObjectInputStream:对象的反序列化流 writeObject(p)

2020-06-24 16:16:38 304

原创 PAT甲级1002 A+B for Polynomials (25分)

This time, you are supposed to find A+B where A and B are two polynomials.Input Specification:Each input file contains one test case. Each case occupies 2 lines, and each line contains the information of a polynomial:K N1 a​N​1 N2 a​N​2​​ … N​K​​ a​

2020-06-24 10:45:34 127 1

原创 PAT甲级1005 Spell It Right (20分)

Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output every digit of the sum in English.Input Specification:Each input file contains one test case. Each case occupies one line which contains an N (≤10100).O

2020-06-24 09:00:54 168

原创 6-5 链式表操作集 (20分)

本题要求实现链式表的操作集。函数接口定义:Position Find( List L, ElementType X );List Insert( List L, ElementType X, Position P );List Delete( List L, Position P );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode {ElementType Data;PtrToLNode Next;};type

2020-06-22 22:54:51 773

原创 6-2 顺序表操作集 (20分)(附样例和代码解释)

本题要求实现顺序表的操作集。函数接口定义:List MakeEmpty();Position Find( List L, ElementType X );bool Insert( List L, ElementType X, Position P );bool Delete( List L, Position P );其中List结构定义如下:typedef int Position;typedef struct LNode List;struct LNode {ElementTy

2020-06-22 20:42:03 2881 3

原创 PAT乙级1014 福尔摩斯的约会 (20分)

大侦探福尔摩斯接到一张奇怪的字条:我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm。大侦探很快就明白了,**字条上奇怪的乱码实际上就是约会的时间星期四 14:04,因为前面两字符串中第 1 对相同的大写英文字母(大小写有区分)是第 4 个字母 D,代表星期四;第 2 对相同的字符是 E ,那是第 5 个英文字母,代表一天里的第 14 个钟头(于是一天的 0 点到 23 点由数字 0 到 9、以及大写字母 A 到 N 表示

2020-06-21 11:07:10 109

原创 PAT乙级1038 统计同成绩学生 (20分)

本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出。输入格式:输入在第 1 行给出不超过 10​5 的正整数 N,即学生总人数。随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔。最后一行给出要查询的分数个数 K(不超过 N 的正整数),随后是 K 个分数,中间以空格分隔。输出格式:在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。输入样例:1060 75 90 55 75 99 82 90 75 503 75 90 88输出样

2020-06-21 10:52:25 142

原创 并发线程与并行线程(形象有趣的理解)

进程、线程、并发线程、并行线程……这都啥玩意,听着就很懵逼。并发线程:指两个或多个事件在同一个时间段内发生。并行线程:指两个或多个事件在同一时刻发生(同时发生)。以吃馒头来理解,一个人吃两个馒头,正常人(个别人可能喜欢把两个馒头一起放嘴里或者把两个馒头压成一个。。。)如果想同时品尝味道,会选择咬一口第一个馒头,再咬一口第二个馒头,交替进行。在一段时间内便可以同时吃掉两个馒头,这就是并发线程。而两个人吃两个馒头,一人一个,两人都吃馒头,此时发生在不同人身上吃馒头的动作就是同时发生的,这就是并行线程。

2020-06-19 21:29:32 225

原创 PAT甲级1001 A+B Format (20分)

Calculate a+b and output the sum in standard format – that is, the digits must be separated into groups of three by commas (unless there are less than four digits).Input Specification:Each input file contains one test case. Each case contains a pair of i

2020-06-19 08:06:42 507

原创 PAT乙级1045 快速排序 (25分)(附代码分析)

著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元?例如给定 N = 5, 排列是1、3、2、4、5。则:1 的左边没有元素,右边的元素都比它大,所以它可能是主元;尽管 3 的左边元素都比它小,但其右边的 2 比它小,所以它不能是主元;尽管 2 的右边元素都比它大,但其左边的 3 比它大,所以它不能是主元;类似原因,

2020-06-18 21:03:27 232

原创 6-7 在一个数组中实现两个堆栈 (20分)(附思路分析和易错点分析)

本题要求在一个数组中实现两个堆栈。函数接口定义:Stack CreateStack( int MaxSize );bool Push( Stack S, ElementType X, int Tag );ElementType Pop( Stack S, int Tag );其中Tag是堆栈编号,取1或2;MaxSize堆栈数组的规模;Stack结构定义如下:typedef int Position;struct SNode { ElementType *Data; Posi

2020-06-17 20:32:29 2178 6

原创 6-1 单链表逆转 (20分)

本题要求实现一个函数,将给定的单链表逆转。函数接口定义:List Reverse( List L );其中List结构定义如下:typedef struct Node *PtrToNode;struct Node { ElementType Data; /* 存储结点数据 */ PtrToNode Next; /* 指向下一个结点的指针 */};typedef PtrToNode List; /* 定义单链表类型 */L是给定单链表,函数Reverse要返回被逆转后的

2020-06-17 19:22:38 393

原创 6-4 链式表的按序号查找 (10分)

本题要求实现一个函数,找到并返回链式表的第K个元素。函数接口定义:ElementType FindKth( List L, int K );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;L是给定单链表,函数FindKth要返回链式表的第K个元素。如果该元素不存在,则返回ERROR。

2020-06-16 23:12:36 254

原创 6-3 求链式表的表长 (10分)

本题要求实现一个函数,求链式表的表长。函数接口定义:int Length( List L );其中List结构定义如下:typedef struct LNode *PtrToLNode;struct LNode { ElementType Data; PtrToLNode Next;};typedef PtrToLNode List;L是给定单链表,函数Length要返回链式表的长度。裁判测试程序样例:#include <stdio.h>#include

2020-06-16 23:02:10 1086 1

原创 PAT乙级1033 旧键盘打字 (20分)(易错点分析)

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?输入格式:输入在 2 行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过 10​5个字符的串。可用的字符包括字母 [a-z, A-Z]、数字 0-9、以及下划线 _(代表空格)、,、.、-、+(代表上档键)。题目保证第 2 行输入的文字串非空。注意:如果上档键坏掉了,那么大写的英文字母无法被打出。输出格式:在一行中输出

2020-06-16 22:39:17 304

原创 团体程序设计天梯赛L1-023 输出GPLT (20分)(超好理解)

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT…这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。输入格式:输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。输出格式:在一行中按题目要求输出排序后的字符串。题目保证输出非空。输入样例:pcTclnGloRgLrtLhgljkLhGFauPewSKgt输出

2020-06-14 22:52:25 417

原创 团体程序设计天梯赛L1-020 帅到没朋友 (20分)(易错点分析)

当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。输入格式:输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(≤10000),为待查询的人数;随后一行中列出M个待查询的ID,以空格分隔。注意:没有朋友的人可以是根本没安装“朋友圈

2020-06-14 22:18:05 1180

原创 团体程序设计天梯赛L1-011 A-B (20分)

本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。输入格式:输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。输出格式:在一行中打印出A−B的结果字符串。输入样例:I love GPLT! It's a fun game!aeiou输出样例:I lv GPLT! It's fn gm!思路分析:两个字:

2020-06-14 19:02:39 2598

原创 团体程序设计天梯赛L1-008 求整数段和 (10分)

给定两个整数A和B,输出从A到B的所有整数以及这些数的和。输入格式:输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。输出格式:首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。输入样例:-3 8输出样例: -3 -2 -1 0 1 2 3 4 5 6 7 8Sum = 30思路分析:主要目的很简单,

2020-06-14 18:36:02 281

原创 天梯赛L1-009 &&HBU训练营——N个数求和(测试点3解决)

本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。输出格式:输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。输入样例1:5

2020-06-13 16:53:50 1306

原创 PAT乙级1013 数素数 (20分)

令 P​i表示第 i 个素数。现任给两个正整数 M≤N≤10​4,请输出 P​M 到 PN 的所有素数。输入格式:输入在一行中给出 M 和 N,其间以空格分隔。输出格式:输出从 PM到 P​N的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。输入样例:5 27输出样例:11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 83 8997 101 103思路:一眼望去很简单,而且似乎没什么坑,但,事实证明

2020-06-13 12:48:22 236

原创 团体程序设计天梯赛L1-007 念数字 (10分)

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:0: ling1: yi2: er3: san4: si5: wu6: liu7: qi8: ba9: jiu输入格式:输入在一行中给出一个整数,如:1234。提示:整数包括负数、零和正数。输出格式:在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。输入样例:-600输出样例:fu liu ling ling思

2020-06-10 09:24:30 961 3

原创 团体程序设计天梯赛L1-002 打印沙漏 (20分)

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出格式:首先打印出由给定符号组成的最大的沙漏形状,

2020-06-10 08:51:28 449

原创 C语言实现——二分法查找目标元素位置

二分法,很容易想到,每次一分为二,逐步缩小查找范围,二分法在数学求根中有时候也会用到,使用二分法的原理很好理解,但要注意使用前一定要保证元素有序!!//必须有序排列#include <stdio.h>int binarysearch(int a[], int value, int n){ int low = 1, high = n; int mid; while (low <= high) { mid = (low + high) /

2020-06-08 18:32:15 1758

原创 Java中的Properties集合

java.util.Properties集合 extends Hashtable<k,v>implements Map<k,v>。它表示了一个持久的属性集,可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。它是唯一一个和IO流相结合的集合。①可以使用该集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储。本来集合中的数据是内存中的,程序结束就没了。②可以使用该集合中的方法load,把硬盘中保存的文件(键值对),读取到集合中使用③属性列表中每个键及

2020-06-05 23:16:00 314

原创 JDK9新特性——集合添加优化之of方法

List接口、Set接口、Map接口:里边增加了一个静态的方法of,可以给集合一次性添加多个元素。源码:static List of (E… elements)//不定长参数使用前提:当集合中存储的元素的个数已经确定了,不再改变的时候使用注意:1.of方法只适用于这三个接口,不适用于接口的实现类2.of方法的返回值是一个不能改变的集合,集合不能再使用add、put方法添加元素,会抛出异常3.Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常DemoList lis

2020-06-05 23:12:58 309 1

原创 Java中的Lambda表达式

繁杂的Runnable接口实现多线程//使用匿名内部类实现多线程new Thread(new Runnable){ @Override public void run(){ System.out.println(Thread.currentThread().getName+"新线程创建了"); });.start;}//使用Lambda表达式new Thread(()->{ System.out.println(Thread.curren

2020-06-05 23:08:07 265

原创 C语言实现——快速排序

快速排序(每次看到它我总会想起大一上学C语言的时候的二分法查找目标元素。。。)快速排序中的重要一员就是基准数,将它归位,使得归位后该数的左边都是小于它的数,右边都是大于它的数。此时得到的序列不一定有序,因为它的左边和右边的大小顺序是不一定的。然后再选择一个基准数,继续进行交换,归位。采用递归方式实现。有点怕递归。。。举个例子:假设现在有无序的一组数:4,2,8,7,6,9,10,1,3,5(也就是1-10),以第一个数作为基准数,然后从最后一个位置开始向前寻找比4小的数,找到后停止,再从第二个位置向后寻

2020-06-04 12:24:18 455

原创 C语言实现——冒泡排序,选择排序

早就听闻过八大排序,三大查询的“传奇”,之前也有想过把它们全都学会。然而,然而,对,我没有做到。。。仍然是知道的寥寥无几,你可别学我(捂脸)一、冒泡排序冒泡排序应该是最容易想到的吧,其实就是简单的交换排序:每一次都是比较相邻的两个数如果后面的数比前边的大,则交换两个数的位置(这里是选取的降序,升序的思想也一样)。每次排序完后,就能找到最小的那个数,然后将其放在参与排序元素的最后一个位置,直到结束。注意,每一次只能确定一个元素的最终位置!比如,有三个数,分别是1,15,4,20,9。1和15比较,15&

2020-06-04 12:18:59 2340

空空如也

空空如也

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

TA关注的人

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