自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 查漏补缺个人总结

数据结构Java语言数据库GCsocket小细节算法题

2019-08-05 17:37:54 1211

原创 找中位数

无序数组找中位数排序后再找 时间复杂度为O(nlogn)建立大小为n/2+1的最大堆,如果比堆顶大的则舍去如果是奇数则堆顶就是中位数如果是偶数则取出两位求平均值 o(nlogk)parition操作建立一个partition方法partition(int[] arr , int start , int end){int left = start;int right = end;...

2019-09-11 17:29:08 328

原创 算法链表

问题描述给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。代码分析slow用来指向排除重复后的最后一个节点,fast用来指向重复元素的最后一个节点如果slow.next==fast说明中间没有重复元素可以直接slow=slow.next;不然说明fast的 元素需要跳过使用dummyhead也解决了从头节点开始重复的情况class Solution...

2019-09-09 16:29:35 373

原创 值传递和引用传递

值传递此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。引用传递如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的...

2019-09-06 19:40:15 215

原创 集合类

CollectionList里面元素有序可以重复可以通过索引查找ArrayList Vector底层是数组,查询修改快Vector的方法都添加了Synchronized修饰符 所以线程安全Linkedlist底层是链表 增删快Set里面元素无序没有重复元素Java底层是用Map实现 put(key,present)HashSet底层是哈希表,保证元素唯一性 需...

2019-09-03 10:20:35 137

原创 Java语言相关知识

文章目录finalfinallyfinalizestaticvolatile重载(Overload)和重写(Override)private default protected public初始化顺序抽象类与接口抽象 封装 继承 多态finalfinal修饰变量 引用不能改变final修饰的方法不能被覆盖final修饰类的时候不能被继承final修饰属性的时候必须进行初始化...

2019-09-02 23:46:33 195

原创 Object类有哪些方法

toStringhashCodeequalswaitnotifynotifyAllclonefinalizegetClass

2019-09-01 21:52:01 182

原创 双重检验锁的细节

双重检验锁的代码private volatile static Singleton instance;public static Singleton getInstance() { if (instance == null) { // Single Checked 3 synchronized (Singleton.class) {...

2019-08-31 10:37:13 192

原创 设计模式

七大原则SOLIDCS开闭原则(The Open-Closed Principle)对扩展开放,对修改关闭当需求改变时候,应该在不修改源代码的前提,通过扩展功能来满足新的需求通过接口或者抽象类建立一个稳定的抽象层接口和抽象类的区别1.接口中的每个方法均没有实现,都是抽象方法;但抽象类中可以有具体的方法。2.接口中的数据成员必须是常量,默认使用public static final 修...

2019-08-28 23:04:06 95

原创 SOCKET

SocketSocket实际上就是IP +协议+port位于应用层和传输层的一个抽象层TCP中的socket

2019-08-28 19:39:40 150

原创 JAVA内存回收机制-GC

垃圾回收机制在Java堆中对象被判定为垃圾的标准没有被其他对象引用视为垃圾引用计数算法–判断对象的引用数量通过判断对象的引用数量来决定对象是否可以回收每个对象实例都有一个引用计数器,被引用就+1完成引用-1当引用计数为0的实例则当做垃圾优点:执行效率高,程序执行受影响较小缺点:无法检测循环引用的情况,导致内存泄露可达性分析算法–判断对象的引用链是否可达通过判断对象的引用链是否可...

2019-08-25 11:20:40 122

原创 JVM

java的跨平台性的实现–JVM JAVA虚拟机跨平台型的实现Java源码首先编译成字节码.class文件,再由不同平台JVM进行解析,则不需要重新编译,不同平台的JVM会将字节码转成对应平台的机械指令如何加载.class字节码文件JVM的架构 分成四个部分Class Loader加载字节码到JVM去进行连接初始化的操作 例如编译test.java将字节码转换成JVM Class...

2019-08-24 15:36:27 153

原创 操作系统

文章目录什么是操作系统系统调度(分进程和线程)进程的上下文切换进程通信管道共享内存信号量消息队列socket死锁内存管理什么是内存相对地址 绝对地址 逻辑地址 物理地址 线性地址为什么要内存管理 虚拟内存什么是缓存缓存替换算法内存管理方式什么是操作系统操作系统是管理和控制计算机硬件与软件资源的计算机程序。操作系统主要有五大功能:处理机管理(CPU)、进程管理、内存管理、设备管理和文件系统管理...

2019-08-23 17:28:14 206

原创 并发编程 线程与进程相关

文章目录线程 进程 协程start()与run()方法的区别Thread与Runnable的区别实现多线程的方法线程的状态与相互转换的方法为什么wait()notifyAll() notify() 只能在同步方法或者代码块中使用如何中断线程为什么stop 和 suspend不安全终端方法线程安全SynchronizedSynchronized类锁使用方法线程 进程 协程进程是分配资源的最小单位...

2019-08-20 11:53:30 154

原创 并发编程 进程与线程相关

文章目录进程 线程 协程Thread start() run()区别多线程多线程的实现Thread 与 Runnable 的区别获取线程的返回值的方法 细说Callableexecute()与submit()线程的六个状态sleep与wait 的区别wait 与 notifyyield join如何安全的中断一个线程互斥锁的特性synchronized获取对象锁与类锁的方法进程 线程 协程...

2019-08-19 22:12:23 93

原创 OSI模型与TCP/IP模型

OSI模型OSI是Open System Interconnect的缩写,意为开放式系统互联。应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示层 数据格式化,代码转换,数据加密 没有协议会话层 解除或建立与别的接点的联系 没有协议传输层 提供端对端的接口 TCP,UDP网络层 为数据包选择路由 IP,ICMP,R...

2019-08-17 09:18:45 120

原创 TCP UDP

文章目录TCPTCP 报文结构三次握手为什么需要三次握手呢?三次握手中可能出现的问题四次挥手time_wait时间过长占用端口close_wait过多的原因与解决办法time_wait 状态存在2MSL的原因滑动窗口与拥塞窗口超时重传机制UDPUDP报文结构UDP的特点TCP与UDP区别TCPTCP 报文结构TCP报文一共有20个字节UDP只有8个字节三次握手 确认ACK:仅当AC...

2019-08-16 17:39:10 148

原创 HTTP HTTPS相关知识

文章目录HTTP特点请求结构响应结构请求/响应的步骤输入地址 按下回车后的流程HTTP 1.0中的请求方法get post 区别状态码cookie 与 sessionHTTPSHTTPS传输流程HTTP超文本传输协议1.01.1(主流版本)keepline2.0特点支持CS模式协议简单所以简单快速 ( 只需传送方法(get head post)和路径)灵活 任意数据类型的对...

2019-08-16 10:14:59 153

原创 JAVA - 反射机制

文章目录反射反射作用反射中使用的类Class类Constructor类FieldMethod反射在运行状态中,对于任意一个类,都能知道这个类的所有属性与方法,对于任意一个对象都能调用任意方法与属性。这种动态获取信息和动态调用方法的功能叫做反射反射作用用来编写通用性较高的代码 框架使用。反射中使用的类class对象:JVM中 类的字节码文件加载到内存形成的一个对象constructo...

2019-08-15 19:49:27 96

原创 熟悉回溯思路-N皇后问题

问题描述n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入: 4输出: [[".Q…", // 解法 1“…Q”,“Q…”,...

2019-08-14 18:42:26 107

原创 判断同构字符串

问题描述给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。输入: s = “egg”, t = “add”输出: true解决方法方法一 Map 时间复杂度较大import java.util.HashM...

2019-08-09 09:56:59 852

原创 滑动窗口的应用

文章目录问题一 leetcode438.异位字符串问题二 leetcode76 最小覆盖子串问题一 leetcode438.异位字符串给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母class Solution {public List<Integer> findAnagrams(Strin...

2019-08-08 16:45:31 250

原创 Top K

题目描述显而易见,就是从数据中选取最大或者最小K个元素解答方案方案一 排序对数组进行排序,再返回最后 k 个元素算法的时间复杂度为 O(Nlog⁡N) 空间复杂度为 O(1)方案二 优先队列(堆)建立一个最小堆,维持堆的大小为k 则遍历完整个数组后,堆里面的元素就是TOP K时间复杂度 : O(Nlog⁡k)空间复杂度 : O(k)方案三快速排序的变形版step1:按照基准...

2019-08-07 09:36:47 76

原创 N sum问题(由2-sum 3-sum 4-sum 总结)

问题描述n-sum问题 就是给定一个数组和一个target 求选取n个数相加等于target的所有取值总得分析这类方法基本都可以由暴力法双指针法哈希表法而哈希表法又可以优化成,每添加一个就查找一次如果是指针法可以用下面代码来跳过重复值while(i!=start&&num[i]==num[i-1]);i++;2-sum先查找a固定a 再查找b3-s...

2019-08-06 16:14:07 838

原创 滑动窗口里数值的最大值

问题描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};问题解答设立begin为滑动窗口的前索引,i为后索引。那么当begin>=0时 此时滑动窗口最大值才有意义。用双端队列来存储数组的索引信息,把当前最大值的索引维持在队首如...

2019-08-02 11:45:33 126

原创 求数据的中位数

问题描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。问题分析用一个最大堆和一个最小堆来实现用下面语句来实现交替传入数据用num与堆顶数值比较 如果比最大...

2019-08-02 09:44:33 285

原创 链表中环的入口结点

问题描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。问题分析方法一:时间复杂度O(n) 空间复杂度O(n);import java.util.*;/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.v...

2019-08-01 11:06:08 78

原创 不用加减乘除做加法

问题分析方法一:用java自带的方法库import java.math.BigInteger;public class Solution {public int Add(int num1,int num2) {BigInteger bi1=new BigInteger(String.valueOf(num1));BigInteger bi2=new BigInteger(String...

2019-07-31 17:21:39 78

原创 孩子们的游戏

问题描述然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请你试着想下,哪个小朋友会得到这份礼品呢?(注:小朋友的编号是从0到n-1)分析首先设定...

2019-07-31 16:50:11 116

原创 寻找特定的数字-只出现一次的数字问题总结

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解决与优化方法一 使用HashSet 如果已经存在就remove就行,然后迭代器输出由于一个数与自身异或是0,那么由题目所有数值异或出来的就不是0,记录得到数字第一个为1的位数。然后根据这个位数可以将数组中两个不为0的数字分为两组,然后把分组的异或就行两次遍历 时间复杂度为O(n)代码第...

2019-07-31 11:53:00 262

原创 二分查找法的各种情况

感谢这位大佬整理了这么的多种使用二分查找法的提醒大佬的博客

2019-07-31 11:14:33 90

原创 对数组中的值交换问题

基本数据类型与引用类型先看代码/不会改变原来数组结构public swap(int a ,int b ){ int t=a; a=b; b=t;} swap(arr[i],arr[j]);/会改变的情况public swap(int[] arr,int a, int b ){ int t=arr[a]; arr[a]=arr[b]; arr[b]=t;} swap(a...

2019-07-30 11:54:39 424

原创 (六)基本数据结构--堆,以及基于堆实现的优先队列

文章目录一、堆的实现基本构造关键方法二、优先队列的实现使用小技巧一、堆的实现(最大/最小)堆是一个完全二叉树,而且每个根结点都要(大于/小于)它的叶子结点。堆的增与删都是O(logn)的 时间复杂度基本构造public class MaxHeap<E extends Comparable<E>> { private Array<E> data...

2019-07-24 18:33:53 98

原创 字符串排序,可能有重复字母

参考大佬的博客问题描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。问题分析String.valueOf() 方法将不同类型打印成字符串。Collection.sort()将字符串排序的流程即从第1位开始和后面每位数进行交换然后递归到第二位进行同样操作。...

2019-07-24 15:28:08 464

原创 二叉搜索树写成双向链表

问题描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。问题分析只能用中序遍历如果用其他遍历,在遍历时候会改变右子树结构,然后破坏遍历后序遍历 有死循环 待解决public class Solution { TreeNode head = null; TreeNode realHead = null; ...

2019-07-24 12:32:04 78

原创 二叉树中和为某一值的路径

问题描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)问题分析通过传递参数 写一个递归判断到叶子节点时候和是否为targetPS!记录路径的数组列表是同一个数组列表 在一个路径递归完成时候,应该还原到原来的数据。在这里用递归到底时候...

2019-07-24 10:09:17 81

原创 判断循环单词

问题描述如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。现在给出n个单词,需要统计这个n个单词中有多少种循环单词。问题分析别人的代码自己的只通过 80%import java.util.Scanner;public class Main { public int cycleWordK...

2019-07-23 17:10:01 228

原创 公共连续子串

问题描述给两个字符串可能有空格,找出公共连续子串问题分析将一个字符串,遍历分割,然后每次遍历分割出来的子串使用indexOf()方法,如果返回-1则不存在。import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(Sy...

2019-07-23 12:21:54 125

原创 改变任意一个数,判断一个序列的最大连续上升子序列长度

问题描述改变一个数字,判断一个序列的最大连续上升子序列长度问题分析遇到的问题!在对对象进行假设性试验 操作时候!不要!改变!原来的!数据结构!实现思路首先是判断一个序列的最大连续上升序列长度方法 public static int maxlength(int[] word) { int len = 1; int maxn = 1; i...

2019-07-23 12:06:50 773

原创 判断数组是否是BST的后序遍历结果

问题描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。问题分析受之前根据前序后序遍历的题目影响,知道用序号标记来判断左子树,右子树的数组。这里在递归方法里面 for循环外定义一个i; 这样可以在两个for循环都使用同一个i。可以避免新定义一个变量来分界 左子树和右子树序列当不等于时候 break...

2019-07-22 12:32:21 324

空空如也

空空如也

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

TA关注的人

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