- 博客(68)
- 问答 (1)
- 收藏
- 关注
原创 leedcode-array
窗口中的最大值单调队列窗口中的众数优先队列(排序)使用 map 记录数出现的次数,在窗口移动的时候进行更新,同时加入优先队列,每次取得队列头部,比较其次数是否与map中一致,不一致,移除,一致,即为当前窗口的众数分割,使得子数组的和的最大值最小(leedcode-410)二分...
2021-05-07 16:12:43
109
原创 leedcode-二分查找
一 整体有序leedcode35:搜索插入位置leedcode34:查找元素的第一个位置和最后一个位置小于target最后位置:nums[mid]==target -> right移动 -> return right大于target起始位置:nums[mid]==target -> left移动 -> return left等于target起始位置与终止位置与小于大于一致,仅需改变return即可 // 大于target的起始位置 p
2021-01-26 22:58:57
126
原创 leedcode-高频
1. 字典序的第k小数字(leedcode - 440)分析(p当前位置):指定前缀下的节点个数如果第k个数字在当前前缀下,进一步寻找:pre *= 10, p++如果第k个数字不在当前前缀下:pre ++, p += count
2021-01-09 15:29:57
126
原创 leedcode-对列
1. 单调对列(leedcode - 239)class MonotonicQueue{ public LinkedList<Integer> list = new LinkedList<>(); // 添加元素,将小于num的全部删除 public void add(int num){ while(!list.isEmpty() && list.getLast() < num){ list.re
2020-11-01 11:24:24
160
原创 leedcode-二分查找
1. 搜索旋转排序数组(leedcode-33)数组中不存在重复的元素 public int search(int[] nums, int target) { int left = 0; int right = nums.length - 1; int mid; while(left <= right){ mid = (left + right) / 2; if(num
2020-08-05 14:05:46
103
原创 leedcode-排序
public void buildMaxHeap(int[] nums, int length) { // 从最后一个非叶子节点依次往前进行遍历 for(int i = length/2 - 1; i >= 0; i--) { adjustDown(nums, i, length); } }
2020-07-29 13:40:02
108
原创 leedcode-并查集
并查集实现parent:记录每个节点的父节点size:记录每棵树的重量,目的是 union 后树依然保持平衡性路径压缩:保证任意数的高度为常数public class UF { // 连通分量个数 private int count; // 存储一个树 private int[] parent; // 记录树的重量(将小一些的树接到大一些的树下面) private int[] size; public UF(int n) { this.count = n
2020-06-17 21:09:24
165
原创 红黑树
前言1. 红黑树的来源-23树红黑树的来源讲解2-3树是 B 树的特例(3阶 B 树),通过红黑节点来描述 2-3 树中的不同节点,使得程序更简洁2. 红黑树RBT vs 平衡二叉树AVLAVL 左右子树高度相差不超过 1,RBT 左右子树高度相差不超过一倍(完美的黑色平衡)AVL 树比红黑树更加平衡,但 AVL 树在插入和删除时会存在大量的旋转操作(红黑树可以通过颜色,少做几次旋转)红黑树1. 性质每一个节点都有一个颜色,要么为红,要么为黑树的根节点为黑色父子节点
2020-06-17 13:44:02
107
原创 leedcode-栈
括号的合法性单括号记录左右括号个数,当右括号个数大于左括号个数,返回 false多括号 public boolean isValid(String s) { HashMap<Character, Character> map = new HashMap<>(); map.put('(', ')'); map.put('[', ']'); map.put('{', '}'); Stack<Character>
2020-06-16 01:10:47
117
原创 leedcode-链表
反转链表(leedcode-206)创建一个 newHead,在头节点逐个插入 public ListNode reverseList1(ListNode head) { ListNode newHead = null; ListNode p1 = head, p2 = head; while(p1 != null) { p2 = p1.next; p1.next = newHead; newH
2020-06-15 14:06:03
109
原创 leedcode-贪心算法
区间调度区间调度详解跳跃游戏leedcode-55问题描述:给定一个非负整数数组,最初位于数组的第一个位置,数组中的每个元素代表你在该位置可以跳跃的最长长度,判断是否能够到达最后一个位置思路1从后往前遍历 public boolean canJump(int[] nums) { int last = nums.length-1; for(int i=nums.length-2; i>=0; i--) { if(nums[i]+i >
2020-06-14 21:53:24
240
原创 leedcode-双指针
双指针简介分为两类:快慢指针:主要解决链表中的问题左右指针:主要解决数组 / 字符串中的问题快慢指针判断链表中是否含有环借助哈希表(判断哈希表中是否含有当前节点)使用快慢指针(快指针每次走两步,如果有环,二者会相遇)已知链表中含有环,返回这个环的起始位置思路:先寻找快慢指针相遇的点当二者相遇时,让其中一指针指向头节点,然后以相同的速度前进,再次相遇时所在的节点位置就是环开始的位置证明:第一次相遇,假设 slow 走了 k 步,则 fast 走了
2020-06-14 15:31:59
172
原创 leedcode-LRU
LRU缓存机制(leedcode-146)题目描述:设计和实现一个 LRU(最近最少使用)缓存机制;它应该支持以下操作:获取数据 get 和写入数据 putget(key):如果关键字存在于缓存中,则获取该关键字的值,否则返回 -1put(key, value):如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间时间复杂度:O(1)方法一:自己实现分析:put 和 get
2020-06-12 18:04:15
156
原创 leedcode-区间
最大不重叠子集(leedcode-435)问题描述:求最大不重叠子集采用贪心算法 解法排序:按 end 排序思想:从区间集合中选择一个区间 x,这个 x 是当前所有区间中结束最早的( end 最小)把所有与 x 区间相交的区间从集合中删除重复步骤 1 和 2,直到集合为空区间合并(leedcode-56)问题描述:给出一个区间的集合,请合并所有重叠的区间排序:按 start 排序区间交集(leedcode-986)问题描述:给定两个由一些闭区间组成的列表
2020-06-09 00:31:31
209
原创 leedcode-floodfill
构建框架图的遍历// (x, y) 为坐标位置 void fill(int x, int y) { fill(x - 1, y); // 上 fill(x + 1, y); // 下 fill(x, y - 1); // 左 fill(x, y + 1); // 右}leedcode颜色填充问题描述:实现颜色填充功能,待填充的图像用二维数组 image 表示,元素为初始颜色值。初始坐标点的横坐标为 sr 纵坐标为 sc。需要填充的新颜色为 new
2020-06-08 14:23:49
94
原创 leedcode-小知识
前缀和问题描述:给定一个整数数组(含有负数)和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数preSum[nums.length + 1]:记录 [0…i-1] 的和(必须记录 0)nums[i…j] = preSum[j+1] - preSum[i]优化:借助哈希表,在记录前缀和的同时记录该前缀和出现的次数...
2020-06-07 23:57:52
150
原创 leedcode-滑动窗口
代码框架 public void slidingWindow(String s, String t) { HashMap<Character, Integer> need = new HashMap<>(); HashMap<Character, Integer> window = new HashMap<>(); for(char c : t.toCharArray()) { need.put(
2020-06-06 17:04:30
145
原创 leedcode-回溯
全排列 List<List<Integer>> ans = new ArrayList<>(); public List<List<Integer>> permutation(int[] nums){ List<Integer> track = new ArrayList<>(); backtrack(nums, track); return ans; } public void
2020-06-05 15:54:55
117
原创 leedcode-动态规划
标准套路明确 状态 和 选择明确dp数组的定义根据选择,思考状态转移的逻辑处理边界情况最长回文子串(leedcode-5)问题描述: 给定一个字符串 s,找到 s 中最长的回文子串。dp数组: dp[s.length()][s.length()](记录 i 到 j 之间是否是回文,true/false)dp公式:dp[i][j] = dp[i+1][j-1] && s.charAt(i) == s.charAt(j);边界:dp[i][i] = true; dp.
2020-05-24 15:47:00
722
原创 leedcode-二叉树
基本方法由数组构造二叉树(null 用 0 表示)先序,中序,后序,层次遍历(递归,迭代)深度public class TreeNode{ public int val; public TreeNode left; public TreeNode right; public TreeNode(int x){ val = x; } }构建二叉树 public TreeNode createBinaryTree(int[] array, int in
2020-05-12 17:10:44
324
转载 Java集合
集合架构集合与数组的区别长度内容元素数组固定基本类型或引用类型同一种类型集合可变引用类型可以存储不同类型(一般存储同种类型)Collection集合的方法集合分类...
2020-03-10 19:07:37
204
原创 docker
Docker简介docker核心概念(镜像,容器,仓库)及基本操作docker仓库hub.docker.comc.163.comcentos安装docker
2020-03-06 16:38:07
77
原创 linux固定ip
vi /etc/sysconfig/network-scripts/ifcfg-ens33编辑文件内容BOOTPROTO=“static” # ip设置为静态:dhcp -> staticONBOOT=“yes” &n...
2020-03-05 13:52:38
129
原创 Java异常
异常体系从责任角度看Error属于JVM需要负担的责任RuntimeException是程序应该承担的责任Checked Exception可检查异常是Java编译器应该承担的责任Error和Exception的区别Error:程序无法处理的系统的错误,编译器不做检查;程序无法处理的错误Exception:程序可以处理的异常,补货后可能恢复;程序可以处理的错误...
2020-02-04 12:48:00
95
原创 网络
TCP/IPTCP简介OSI(概念型框架)的实现:TCP/IP面向连接的,可靠的,基于字节流的传输层通信协议将应用层的数据流分割成报文段并发送给目标节点的TCP层数据包都有序号,对方收到则发送ACK确认,未收到则重传使用校验和来检验数据在传输中是否有误TCP FlagsURG:紧急指针标志ACK:确认序号标志PSH:push标志RST:重置连接标志SYN...
2020-02-02 23:19:07
232
原创 Redis
一 缓存数据库作用实现了对热点数据的高速缓存,提高应用的响应速度,极大缓解后端数据库的压力主流应用架构图片缓存中间件Memcache : 代码层次类似Hash支持简单数据类型不支持数据持久化存储不支持主从不支持分片Redis数据类型丰富支持数据磁盘持久化存储支持主从支持分片二 RedisRedis为什么能这么快1000...
2020-01-21 00:13:09
184
原创 java多线程与并发-原理
线程安全问题主要诱因存在共享数据(临界资源)存在多条线程共同操作这些共享数据解决-互斥锁解决方案:同一时刻有且仅有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作,引入互斥锁(Java中使用synchronized)互斥锁的特性:互斥性:即同一时间只允许一个线程持有某个对象锁可见性:必须确保在锁被释放之前,对共享变量所做的修改,...
2019-12-23 22:29:38
176
原创 Java多线程与并发
进程和线程进程是资源分配的最小单位,线程是CPU调度的最小单位所有与进程相关的资源,都被记录在PCB中进程是抢占处理机的调度单位;线程属于某个进程,共享其资源线程只由堆栈寄存器,程序计数器和TCB组成线程不能看做独立应用,而进程可看做独立应用进程有独立的地址空间,相互不影响,线程只是进程的不同执行路径线程没有独立的地址空间,多进程的程序比多线程程序健壮进程的切换比线程的...
2019-12-22 23:34:10
98
原创 数据库-语法
Group by满足“select 子句中的列名必须为分组列或列函数”,该条件只针对于同一张表成立列函数对于group by子句定义的每个组各返回一个结果将结果集存入临时表Having通常与group by子句一起使用where过滤行,having过滤组出现在同一sql的顺序:where > group by > having...
2019-12-21 20:51:31
74
原创 数据库-锁
MySQL中的锁机制MyISAM与InnoDB关于锁方面的区别MyISAMMyISAM默认用的是表级锁,不支持行级锁不会出现死锁(MyISAM总是一次获得SQL语句所需要的全部锁。这也正是MyISAM表不会出现死锁(Deadlock Free)的原因)在执行LOCK TABLES后,只能访问显式加锁的这些表,不能访问未加锁的表;同时,如果加的是读锁,那么只能执行查询操作,而不能...
2019-12-20 21:23:02
117
原创 数据库-索引
索引模块索引目的:快速查询数据构成:主键,唯一键以及普通键等索引数据结构:(1) 二叉查找树(每深入一层,进行依次I/O操作)(2)B-/B Tree(相比于二叉数每个节点能存储更多的索引)(3)B+ Tree(非叶子节点不携带数据,每个节点可以存储更多的索引)(4)HashB+树更适合用来做存储索引:B+树的磁盘读写代价更低(每个节点可以存储更多的索引)B+...
2019-12-19 21:51:06
133
原创 GC
垃圾判断对象被判定为垃圾的标准没有被其他对象引用判定对象是否为垃圾的算法引用计数算法概述(1)通过判断对象的引用数量来决定对象是否可以被回收(2)每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1(3)任何引用计数为0的对象实例可以当作垃圾收集优点:执行效率高,程序执行受影响较小缺点:无法检测出循环引用(两个对象相互引用)的情况,导致内存泄漏可...
2019-12-19 00:08:17
211
原创 内存模型
JVM架构图内存模型程序计数器当前线程所执行的字节码行号指示器(逻辑)改变计数器的值来选取下一条需要执行的字节码指令和线程是一对一的关系对Java方法技术,如果是native方法则计数器值为Undefined不会发生内存泄漏虚拟机栈Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(存储局部变量表,操作数栈,动态链接,方法出口等),当方法执行...
2019-12-17 18:17:05
160
原创 平台无关性
Compile once, run anywhere为什么要先编译成字节码再解析成机器码java的平台无关性(通过jvm)为什么jvm不直接将源码解析成机器码准备工作:每次执行需要各种检查(各种语法句法的检查)兼容性:也可以将别的语言解析成字节码JVM架构反射java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象...
2019-12-16 18:50:05
164
原创 detail
DataObject对应数据库,建立实体类ProductCategoryProductInfoOrderMasterOrderDetailSellerInfoDao使用 jpa ,对每个实体类建立 dao(repository)List itemServiceController...
2019-12-06 00:30:07
178
原创 注解
常用@SpringBootTest : 测试@Slf4j : 日志Entity@Entity@Data@DynamicUpdate : 动态更新:设置为true,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false@Id : 主键由数据库自动生成(主要是自动增长型)@Generat...
2019-12-06 00:29:58
81
原创 sell
访问流程nginxsell.com: location / { root /opt/data/wwwroot/sell; index index.html index.htm; }sell.com/sell/..: location /sell/ { proxy_pass htt...
2019-12-06 00:29:50
432
空空如也
jar双击打不开,求大神解答
2017-11-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人