自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap和HashSet

一、什么是HashSet?HashSet实现了Set接口,它不允许集合中有重复的元素,而且集合中的元素都是无序的。在将对象储存在HashSet之前,要确保对象重写了equals()方法和hashCode()方法,这样才能比较对象是否相等,以确保Set中没有重复的值;如果没有重写这两个方法,就会使用这个方法的默认实现。添加元素时用public boolean add(Obiect o)方法来实现,...

2020-02-21 16:23:03 178

原创 Collection接口

Collection接口是最基本的集合接口,所有实现Collection接口直接子类和间接子类都必须提供两个标准的构造函数:1.不带任何参数的构造函数;2.带参数为Collection的构造函数。无参数的构造函数用于创建一个空的Collection,参数为Collection的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素,并且允...

2020-02-21 15:39:51 110

原创 抽象类和接口

抽象类:​ 如果一个类中没有足够的信息来描述一个具体的对象,那么这个类就是一个抽象类。​ 就比如三角形,正方形,圆形他们都属于平面形状,那么形状这个词,它就是一个抽象概念,它是不能被实例化的;抽象类也是这个概念,所以说抽象类是不能被实例化的,它要求被子类所继承,体现的是“is - a”的关系。抽象类一般用abstract来修饰(abstract class)。​ ...

2020-02-21 15:04:28 104

原创 垃圾回收机制的过程和原理

1.什么是垃圾回收机制?程序在创建对象或者数组等引用类型实体的时候,系统会在堆内存上为之分配一段内存区,用来保存这些对象,当这些对象永久性地失去引用后,就会变成垃圾,等待系统垃圾回收机制进行回收。2.垃圾回收机制的特点:垃圾回收机制只会回收堆内存中的对象,不会回收物理资源(网络io);垃圾回收机制是由系统控制的,程序是无法精准控制垃圾回收机制的时机的,程序只能知道对象什么时候不再被引用,当一...

2020-02-20 12:49:11 5130

原创 复制带随机指针的链表

给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。返回这个链表的深拷贝:深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。也就是说深拷贝知识拷贝了源对象的内容,而地址是新的,与源对象无关public Node copyRandomList(Node head) { //先创建一个 HashMa...

2019-12-08 01:18:10 55

原创 找出石头中有多少宝石

给定字符串J 代表石头中宝石的类型,字母不重复,字符串 S代表拥有的石头。J 和 S中的所有字符都是字母(字母区分大小写) public int numJewelsInStones(String J, String S) { //创建一个set来保存所有的宝石 Set<Character> set = new HashSet<&g...

2019-12-08 01:12:38 118

原创 树形结构

一、基本概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。节点的度:一个节点含有的子树的个数称为该节点的度;树的度:一...

2019-11-26 17:02:48 120

原创 选择排序

一、基本思想(直接选择排序)每次从无序区间内选出一个最大(或最小)的元素,存放在猪呢个个区间的最后(或最前),知道全部待排序的数据排完。二、性能分析选择排序是一种不稳定的排序算法,它对数据不敏感,时间复杂度为O(N ^ 2),孔家安复杂度为O(1).三、代码实现 //选择排序 public static void selectSort(int[] array) { ...

2019-11-26 16:32:51 84

原创 希尔排序

一、基本思想先选定一个整数gap,把待排序区间中所有的数据分为若干个组,所有距离为gap的数据分在同一个组内,并分别对每个组再进行排序,然后继续重复上述的分组和排序工作,gap逐次递减,当gap = 1时,所有数据已经在同一数组排好序。1.希尔排序又称缩小增量法,是插入排序的优化。2.当gap > 1时,都是预排序,目的是让数组接近有序。当gap = 1时,数组已经是接近有序的了,这样...

2019-11-26 16:17:53 59

原创 插入排序

一、基本思想(直接插入排序)1.把整个区间分为“有序”和“无序”。2.每次选择无序区间内的第一个元素插入到有序区间的合适位置。二、性能分析选择排序是一种稳定性较好的算法。空间复杂度为O(1)。数据有序时,时间复杂度最好,O(N);数据逆序时,时间复杂度最坏,O(N^2);平均时间复杂度为O(N^2)。插入排序的初始数据越接近有序,时间效率越高。三、代码实现 //插入排序,升序...

2019-11-25 11:43:12 46

原创 Java方法的基本用法,重载和递归(小结)

一、方法的基本用法1.方法的基本定义:方法就是一段可以被重复调用的方法块。在Java中要想进行方法的定义,则可以使用如下的语法完成。(限制条件:在主类中定义,并且由主方法直接调用的方法形式。)public static 返回类型 方法名称([参数类型 变量,......]){ 方法体代码; [return [返回值];]在定义方法的时候对于方法的返回值有一下的两类:·void:没...

2019-09-20 10:35:13 192

原创 进制转换

1. 十进制转换为二进制1) 整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。2) 小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为...

2019-09-10 00:11:35 332

原创 Java数据类型和运算符小结

一、数据类型1.整形int :32位,占4个字节,表示整数,优先用int,超出范围用long,long :64位,占8个字节,10L就相当于是一个long类型的常量(long num = 10L)short :16位,占2个字节,short与char互不相关,不能转换,尽管都占2个字节byte :8位,占1个字节,-128~127,对标C语言中的char注:Ja...

2019-09-09 23:56:17 114

原创 Linux常见指令和权限的理解

一、文件权限#rw-r--r--. 1 root root 565 Aug 26 16:44 test1.c#drwxr-xr-x. 3 root root 4196 Aug 26 16:15 test2.c第一个文件分别代表文件(-)、目录(d)、链接(l),其余三个字母每三个一个组(rwx) , 每一组分别为所有者,所有组,其他组。(rwx)分别代表 “r” 读、“w” 写、“x” 执...

2019-08-26 17:52:33 189

原创 小总结

一、结构体类型创建结构体是一些值的集合,每一个元素都有自己的名字/每一个成员可以是不同类型的变量。 之前的学习中,使用的变量类型大多是一些比较简单的变量类型。比如: int a = 0; float b =0.0;这些变量之间没有什么联系,然而很多时候我们存储的数据比较复杂,不能通过简单的类型进行描述。 struct结构体类型名{},只是创建了一个结构体类型。但是我们可以使用这一结构体类...

2019-06-29 02:03:07 79

原创 小理解

一、数组指针数组名本身就是一个指针,指向数组的首地址(如int (*p)[10]表示一个指向10个int元素的数组的一个指针。)注意这是声明定长数组时,其数组名指向的数组首地址是常量。而声明数组并使某个指针指向其值指向某个数组的地址(不一定是首地址),指针取值可以改变。二、函数指针函数指针就是一个指向某一类型函数的指针int (*p)(int,int); //p为指向返回int型,带...

2019-06-29 00:22:12 262

原创 指针的个人理解

1.指针指针是个变量,用于存放内存单元的地址(编号)。2.一级指针例如 int a=8; int* p=&a; p是一个一级指针,它存放的是变量a的地址,对p解引用得到的就是a的值。 int a[3]={1,2,3}; int* p=a;这里的p也是一个一级指针,存放的是数组的首地址,数组名就是数组的首地址,对p解引用得到的是数组的首元素。一级指针存放的是一维数组名或者是单个...

2019-06-28 23:53:55 66

原创 扫雷游戏

game.h //函数的声明,宏定义#define _CRT_SECURE_NO_WARNINGS #include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define row 12#define col 12#define COUNT 10//棋盘...

2019-05-24 18:08:29 144

原创 三子棋

三子棋小游戏game.h //包含函数的声明,宏定义#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>#include <stdlib.h>#include <time.h>#define ROW 3 //行#define COL 3 //列void Arr_init(char arr[ROW...

2019-05-24 16:22:57 105

原创 总结——C语言操作符

总结——C语言操作符一、算术操作符。算术标识符: + (加法运算符) - (加法运算符) * (加法运算符) / (加法运算符) % (加法运算符) //*只能用于整型*二、移位操作符。移位操作符有两种:>>(右移操作符) <<(左移操作符)◣右移操作时分为两种情况:算术右移、逻辑移位。●算术右移情况指的是:二进制数有正负之分,补...

2019-05-22 18:20:57 189

空空如也

空空如也

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

TA关注的人

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