自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 判断一个链表是否为回文结构

题目描述:对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。解题:我们可以使用两个快慢指针,一个一次走两步,一个一次走一步,从而找到链表的中间结点。然后将后半部分链表反转。让两个指针从整个链表的头和尾开始走,进行判断– 1.两个指针若val不同,则不是回文结构– 2.若前边指针的next为后边的指针,则是回文结构– 3.若指针相遇,则是回文

2021-03-05 16:48:23 233

原创 单例模式

单例模式只有一个实例,并且她自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。实现:饿汉模式public class Hungry { private Hungry() {} private static Hungry instance = new Hungry(); // 只会有这么一个对象 public static Hungry getInstance() { return i

2021-03-05 10:51:40 146 3

原创 用栈实现队列

用栈实现队列实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 falseOJ链接:栈实现队列思路:1、该题比较简单,需要使用到两个栈,一个用来入栈(s1),一个用来出栈(s2)2、执行入栈操作时只需要将数据压入s1即可3、执行出栈操作时,先将s1的数据全部压入s2中

2021-03-05 09:05:31 120 1

原创 队列实现栈

2.用队列实现栈使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空OJ链接:队列实现栈实现如下:class MyStack { private Queue<Integer> qu1; private Queue<Integer> qu2; /** Initialize your data structure here. */.

2021-03-05 09:01:25 96 1

原创 判断一个链表是否有环

判断一个链表是否有环思路:我们定义一个快指针,一个慢指针;都从头结点开始走,快指针每次走两步,慢指针一次走一步,则:如果一个链表有环,那么两个指针在一直走的过程中一定会相遇。如果链表没有环,那么快指针一定会先走完链表,指向null。/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { *

2021-03-05 08:55:30 84 1

原创 TCP的三次握手和四次挥手(清晰易懂)

TCP的三次握手和四次挥手(清晰易懂)首先,来看下TCP的协议段格式 :我们特别要注意的是其中的保留位:URG: 紧急指针是否有效ACK: 确认号是否有效PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走RST: 对方要求重新建立连接; 我们把携带RST标识的称为复位报文段SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段FIN: 通知对方, 本端要关闭了, 我们称携带FIN标识的为结束报文段接下来我们看TCP的三次握手:TCP在建立连接时,需要双方同步一下信

2021-03-04 23:39:08 228 3

原创 HTTP的响应状态码

HTTP的响应状态码响应状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。常见状态码:100~199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。200~299:表示服务器成功接收请求并已完成整个处理过程。常用200(OK 请求成功)。300~399:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302(所请求的页面已经临时转移至新的url)、307和304(使用缓存资源)。400~499:客户端的请求有错误,常用

2021-03-04 22:16:05 317 1

原创 HTTP常用的请求报头

HTTP常用的请求报头1. Host (主机和端口号)Host:对应网址URL中的Web名称和端口号,用于指定被请求资源的Internet主机和端口号,通常属于URL的一部分。2. Connection (链接类型)Connection:表示客户端与服务连接类型Client 发起一个包含 Connection:keep-alive 的请求,HTTP/1.1使用 keep-alive 为默认值。Server收到请求后:如果 Server 支持 keep-alive,回复一个包含 Connec

2021-03-04 21:59:44 1557 1

原创 HTTP请求方法

HTTP请求方法根据HTTP标准,HTTP请求可以使用多种请求方法。HTTP1.0定义了三种请求方法:GET,POST,HEAD方法。HTTP1.1新增了六种请求方法:OPTIONS,PUT,PATCH,DELETE,TRACE和CONNECT方法。序号方法描述1GET请求指定页面的信息,并返回实体主体2POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改3

2021-03-04 21:54:51 91 1

原创 末尾0的个数

题目描述:输入一个正整数n,求n!(即阶乘)末尾有多少个0?输入为一行,n(1 ≤ n ≤ 1000)比如: n = 10; n! = 3628800,所以答案为2OJ链接:https://www.nowcoder.com/practice/6ffdd7e4197c403e88c6a8aa3e7a332a解题思路:初看题目,首先会想到先去求n的阶乘,但是这样的话求得阶乘数值会过大,得不到正确结果,所以需要换一种思路:n的阶乘可以分为1,2,3,4,…n个质因子,10=2*5 所以凑够一对

2020-12-01 21:01:47 210

原创 力扣解题:在排序数组中查找元素

题目:在排序数组中查找元素的第一个和最后一个位置题目描述:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置 如果数组中不存在目标值 target,返回 [-1, -1]解题思路:有序数组,要先想到用二分查找来解决:1.先找左边的下标:只要nums[mid]>=target时,使right=mid-1。如果nums[mid]=target,每次更新下标为mid;2.再找左边的下标:只要nums[mid]<=target时,

2020-12-01 18:30:35 185

原创 Java 归并排序(递归和非递归)

归并排序排序原理归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并public class MergeSort { public static void merge(int[] array, int low,int high,int mid) {

2020-11-17 07:48:01 205

原创 Java 冒泡排序和快速排序

1.冒泡排序排序原理:在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序public class BubbleSort { public static void bubbleSort(int[] array){ for (int i = 0; i < array.length-1; i++) { boolean isSorted = true; for (int j = 0; j

2020-11-17 07:45:15 157

原创 Java 选择排序

1.直接选择排序排序原理每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后(或最前),直到全部待排序的数据元素排完public class SelectSort { public static void selectSort(int[] array){ for (int i = 0; i < array.length; i++) { for (int j = i+1; j < array.length; j++)

2020-11-17 07:42:07 53

原创 Java 插入排序

1.直接插入排序排序原理:整个区间被分为:有序区间无序区间每次选择无序区间的第一个元素,在有序区间内选择合适的位置插入public class InsertSort { public static void insertSort(int[] array){ for (int i = 1; i < array.length; i++) { int tmp = array[i]; int j = i-1;

2020-11-17 07:40:26 59

原创 二叉树

二叉树1、树形结构1.1定义:树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的节点,称为根节点,根节点没有前驱节点除根节点外,其余节点被分成M(M > 0)个互不相交的集合T1、T2、…、Tm,其中每一个集合 Ti (1 <= i<= m) 又是一棵与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有0个或多个后继树

2020-11-09 20:35:31 85

原创 Java 栈和队列

栈和队列栈定义:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守 后进先出 LIFO(Last In First Out)的原则压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶出栈:栈的删除操作叫做出栈。出数据在栈顶栈的常用操作:public class StackDemo { public static void main(String[] args) {

2020-11-04 15:35:27 81

原创 Java List知识点

List1.泛型先看如下代码:class MyArrayList{ public Object[] elem; // 保存顺序表的元素,即 Object 类型的引用 public int usedSize; public MyArrayList(Object[] elem) { this.elem = new Object[10]; } public void add(Object data){ //尾插

2020-11-02 17:02:30 188

原创 Java面向对象编程知识点的一些总结

包查看源码(idea):1、鼠标点击源码(Ctrl+鼠标点击)2、Alt+7目录显示Java.lang 下的包不需要手动导入访问权限:public:不同包之间访问private: 本类访问protected:保护访问权限,是介于public和private之间的一种访问修饰。被protected修饰的属性及方法只能被类本身的方法和子类访问。(子类在不同的包中也可以访问)默认权限(不加权限修饰限定符):同一个包下访问静态导入使用 import static 可

2020-10-26 20:14:19 333 1

原创 最小调整有序解题

题目:最小调整有序题目描述:给定一个int整数数组A及其大小n,请编写一个函数,找出索引m和n,只要将m和n之间的元素排好序,整个数组就是有序的。注意:n-m应该越小越好,即找出符合条件的最短序列。 请返回一个二元组,元组的两个元素分别代表所求序列的起点和终点。(原序列位置从0开始标号,若原序列有序,返回[0,0])。要求A中元素均为正整数。OJ链接:https://www.nowcoder.com/practice/091c2f1cf441484f81696f08328b06cd?tpId=8&am

2020-10-15 17:59:26 273 2

原创 十进制数转二进制数

给定一个十进制整数,转成二进制形式1. 除2取余法则23对应的二进制是 101112.方法二2^0=1;2^1=2;2^2=4;2^3=8;2^4=16;2^5=32;…则23=2^4+ 2^2+ 2^1+1 即101113.十进制数转十六进制数类似十进制数转二进制数,除以16,得到的余数倒着写出来即可。例如:673÷16=42……142÷16=2……10(A)2÷16=0……2所以,673(10)=2A1(16)余数中0—9仍然用0—9表示,而10—15用A—F表示

2020-10-10 13:51:45 257

原创 Java中的变量及运算符

Java中的变量及运算符1、变量变量指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据1.定义变量声明的同时赋值: 数据类型 变量名 = 值;先定义后赋值: 声明: 数据类型 变量名; 赋值: 变量名 = 值;2.数据类型在java中共有8种基本数据类型:byte:字节型变量(占1个字节)short:短整形型变量(占2个字节)int:整型变量(占4个字节)long:长整型变量(占8个字节)float:单精度浮点型型变量(占4个字节)double:双精度浮点

2020-10-10 13:30:27 161 1

原创 闭包和装饰器的理解

闭包和装饰器的理解一、闭包先说一下在python中闭包的概念:在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包。举一个很简单的例子:def outer(a, b): def inner(c): return a*b/c return innero1 = outer(3,4)o2 = outer(5,6)print(o1(2)) # 6.0print(outer(3,4)(2))

2020-06-20 23:56:36 715

原创 迭代器和生成器

迭代器和生成器1.可迭代对象对list、tuple、str等类型的数据使用for…in…的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代。我们把可以通过for…in…这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象(Iterable)。判断一个对象是否可以迭代(isinstance() ):from collections import Iterableli = [1,2,3,4,5]t = (5,4,3,2,1)num = 666print(isinst

2020-06-17 23:04:13 113

原创 python中多继承的MRO顺序

python中多继承的MRO顺序python中是支持多继承的,但是多继承容易导致代码混乱,所以不推荐这种写法。访问父类有三种方法:父类名.父类方法(self):这种方式容易造成父类方法被调用多次的问题(不推荐),super(指定某个类名, self).父类方法() 和 super().父类方法()。多继承:一个类可以有多个父类, 在类的多继承中,如果继承多个父类方法,调用父类方法时(父类名.方法),会造成父类方法中某些数据被重复调用,所以建议使用super()方法。MRO:当在一个子类中使用

2020-06-17 21:46:13 280

原创 python中的GIL锁

python中的GIL锁(全局解释器锁)1.首先,Python语言和GIL解释器锁没有关系,仅仅是由于历史原因在Cpython虚拟机(解释器)中难以移除GIL。而也只是在用C语言编写的python解释器中存在这个问题。2.GIL:全局解释器锁。每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。3.线程释放GIL锁的情况: 在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL,但在执行完毕后,必须重新获取GIL Python 3.x使用计时器(执行时间达

2020-06-17 19:52:47 146

原创 浅谈Python的深拷贝和浅拷贝

浅谈Python的深拷贝和浅拷贝在python中,创建一个变量例如a=10,即直接赋值:其实就是对象的引用。一、浅拷贝copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变(浅拷贝只copy第一层),通俗的理解是:拷贝了引用,并没有拷贝内容值得注意的是:浅拷贝在拷贝可变类型的数据时会只拷贝最表层,而对于不可变类型是相当于是a=b(仅仅是指向)二、深拷贝深拷贝是对于一个对象所有层次的拷贝,通俗点讲就是,深拷贝就是重新定义一个变量,于之前的没有半毛钱关系,所以更改里面的内容,原来的并不会

2020-06-17 19:15:32 265

原创 pandas统计各个城市的平均房价

pandas统计各个城市的平均房价上一次使用scrapy框架爬取到全国房价,今天我便想使用pandas来统计出陕西省各个城市的房价并利用matplotlib进行数据展示。首先,在pandas模块中提供了很方便地从mysql数据库中读取数据,方法如下:def __init__(self): '''从数据库读取房价信息''' self.conn = pymysql.connect(host = 'localhost', user = '

2020-05-26 14:34:05 1669

原创 使用scrapy框架爬取‘房天下’的全国房价

使用scrapy框架爬取‘房天下’的全国房价学习python有一段时间了,所以也想写一下自己的博客,该程序是运行在win10系统上,程序有很多不足,希望大家更正。首先,我爬取的是‘房天下’中全国的新房以及二手房的房源的具体信息。1.分析网页找到含有全国各个城市的url: https://www.fang.com/SoufunFamily.htm注意:‘其他’地区的url没有想要的信息,所以不必提取新房的url:https://newhouse.fang.com/house/s/二手房的url

2020-05-26 13:39:14 1890 2

空空如也

空空如也

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

TA关注的人

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