自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM中的一些细节String/方法区

String s=new String(“ab”)1.若常量池中不存在ab,则在常量池中创建一个对象"ab",在堆中创建一个对象;2.若常量池中存在ab,则只在堆中创建一个对象String s=new String(“a”)+new String(“b”)创建六个对象:1.new StringBuilder对象2.new String(“a”)3.常量池中的a4.new String(“b”)5.常量池中的b6.StringBuilder的toString():new String(“a

2021-09-04 17:37:48 96

原创 CodeTop 200/20/300

200. 岛屿数量DFS//对数组的每一个值为1的节点进行深度优先遍历,遍历的范围为该节点上下左右的节点//在遍历的过程中将其值标记为1作为标记class Solution { public int numIslands(char[][] grid) { int count = 0; //对每一个节点进行判断 for(int i=0; i<grid.length; ++i){ for(int j=0; j<g

2021-08-22 19:25:57 176

原创 MyBatis

Mybatis1. Mybatis基本信息1.1 概述1.mybatis是一个持久层框架,它封装了jdbc的很多细节,使开发者只需要关注sql语句本身,无需关注注册驱动,创建链接等防砸过程,它使用ORM思想实现了结果集的封装。2.ORM:Object Relational Mapping 对象关系映射就是把数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类来实现操作数据库表。1.2 入门1.读取配置文件2.创建SqlSessionFactory工厂3.创建SqlSession4

2021-08-20 19:21:47 193

原创 CodeTop 21/23

21. 合并两个有序链表递归法:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.ne

2021-08-19 21:28:07 49

原创 CodeTop53/141/142

53. 最大子序和代码class Solution { public int maxSubArray(int[] nums) { //sum代表加到当前位置的最大值,max保存总的最大值 int sum=0; int max=nums[0]; for(int i=0;i<nums.length;++i){ //若前面的sum<0,则当前sum值等于nums[i]的值 sum

2021-08-18 15:39:02 31

原创 CodeTop 42/33

42. 接雨水按列求://计算每个节点左边的最大值和右边的最大值,选择较小的值与当前节点值做减法,大于0则该差值为储水量。class Solution { public int trap(int[] height) { int sum=0; //外层循环是为了计算每个位置可以接多少水,最左和最右接不到水,所以范围是1~height.length-1 for(int i=1; i<height.length-1; ++i){

2021-08-18 02:43:46 70

原创 CodeTop 912/15/160

912. 排序数组归并排序:class Solution { int tmp[]; public int[] sortArray(int[] nums) { tmp=new int[nums.length]; mergeSort(nums, 0, nums.length-1); return nums; } //归并排序 //1.将数组分为两半,分别对两边的数组进行排序 //2.对合并的数组进行归并操作

2021-08-16 21:07:15 41

原创 CodeTop 3/912/215/146

3. 无重复字符的最长子串法一:class Solution { public int lengthOfLongestSubstring(String s) { // HashSet<Character> set=new HashSet<>(); //left~right组成滑动窗口,len计算滑动窗口内字符数 int left=0,right=0,len=0; //right不能超过数组的长

2021-08-14 21:56:22 199

原创 JavaWeb

JavaWeb1. web相关概念1.1 软件架构C/S:客户端/服务器端B/S:浏览器/服务器端1.2 资源分类静态资源:所有数据访问后,得到的结果都是一样的,称为静态资源。静态资源可以直接被浏览器解析。如:html,css,JavaScipt动态资源:每个用户访问相同资源后,得到的结果可能不一样,称为动态资源。动态资源被访问后,需要先转换为静态资源,然后再返回给浏览器。如:servlet/jsp,php,asp…1.3 网络通信三要素1.IP:电子设备(计算机)在网络中的唯

2021-08-12 03:01:25 74

原创 JVM基础

JVM(Java虚拟机)1.JVM体系结构类加载器作用:加载class文件

2021-08-09 18:25:02 49

原创 剑指offer 2021/8/7

37. 序列化二叉树代码:序列化采用层次遍历,root不为空则将左右子树添加进队列。反序列化首先将输入字符串用’’,“分隔开,然后用指针遍历字符串数组,若不为"null”,则添加进二叉树,否则遍历下一个数组元素。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(

2021-08-07 23:24:47 34

原创 剑指offer 2021/8/6

52. 两个链表的第一个公共节点代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNo

2021-08-06 23:21:11 73 1

原创 剑指offer 2021/8/5

41. 数据流中的中位数代码:创建一个大顶堆一个小顶堆,大顶堆中保存较大的元素,小顶堆中保存较小的元素。class MedianFinder { /** initialize your data structure here. */ Queue<Integer> A,B; public MedianFinder() { //小顶堆(默认),且堆中保存较大的元素 A=new PriorityQueue<>();

2021-08-05 23:13:42 62 1

原创 Spring

Spring1. Spring框架概述1.1 Spring是什么1.Spring是轻量级的开源的JavaEE框架。2.Spring可以解决企业应用开发的复杂性。3.Spring有两个核心部分:IOC和Aop。IOC:控制反转,把创建对象的过程交给Spring进行管理;Aop:面向切面,不修改源代码进行功能增强。4.Spring特点:方便解耦,简化开发;Aop编程支持;方便程序测试;方便和其他框架进行整合;方便进行事务操作;降低API开发难度。...

2021-08-05 03:48:26 94

原创 剑指offer 2021/8/4

59 - II. 队列的最大值代码:维护一个双端递减序列,有新元素加入时,将队列中比该元素小的元素出队。原队列执行出队操作时,若出队的元素与双端队列中元素相等,则同时执行出队操作。class MaxQueue { LinkedList<Integer> queue; //维护一个递减序列 LinkedList<Integer> max; public MaxQueue() { queue = new LinkedList<

2021-08-04 19:27:38 38

原创 剑指offer 2021/8/3

64. 求1+2+…+n算法思想:if(A && B) // 若 A 为 false ,则 B 的判断不会执行(即短路),直接判定 A && B 为 false;if(A || B) // 若 A 为 true ,则 B 的判断不会执行(即短路),直接判定 A || B 为 true;本题中,n > 1 && sumNums(n - 1) // 当 n = 1 时 n > 1 不成立 ,此时 “短路” ,终止后续递归。代码:cla

2021-08-03 22:31:41 33

原创 剑指offer 2021/8/2

66. 构建乘积数组代码:动态规划class Solution { public int[] constructArr(int[] a) { int len = a.length; if(len == 0) return new int[0]; int[] dp = new int[a.length]; dp[0] = 1; int tmp = 1; //计算i左边的乘积 fo

2021-08-02 20:02:50 50

原创 剑指offer 2021/8/1

58 - I. 翻转单词顺序法一:class Solution { public String reverseWords(String s) { if(s.equals("")) return ""; int m = 0; //去掉字符串前的空格 while(s.charAt(m)==' '){ s = s.substring(m+1); if(s.equals

2021-08-01 22:14:08 42

原创 剑指offer 2021/7/31

55 - I. 二叉树的深度法一:递归实现DFSclass Solution { public int maxDepth(TreeNode root) { if(root == null){ return 0; } return Math.max(maxDepth(root.left), maxDepth(root.right))+1; }}法二:BFS常规写法,但是要注意一层遍历结束之后res再执行加一操

2021-08-01 03:29:48 68

原创 剑指offer 2021/7/30

56 - I. 数组中数字出现的次数代码:class Solution { public int[] singleNumbers(int[] nums) { LinkedList<Integer> list = new LinkedList<>(); for(int num : nums){ if(list.contains(num)){ list.remove(list.index.

2021-07-31 04:32:17 127

原创 剑指offer 2021/7/29

27. 二叉树的镜像bfs遍历整个二叉树,并将节点的左右子树互换。代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode mirro

2021-07-30 23:38:51 26

原创 剑指offer 2021/7/28

13. 机器人的运动范围代码:回溯法。class Solution { int m, n; int res = 0; int[][] visited; public int movingCount(int m, int n, int k) { this.m = m; this.n = n; visited = new int[m][n]; dfs(0, 0, k); return res;

2021-07-29 00:53:11 25

原创 剑指offer 2021/7/27

38. 字符串的排列代码:回溯。class Solution { LinkedList<String> res = new LinkedList<>(); char[] c; public String[] permutation(String s) { c = s.toCharArray(); backtrack(0); return res.toArray(new String[0]); }

2021-07-28 03:16:56 26

原创 剑指offer 2021/7/26

14- I. 剪绳子法一:动态规划。1.dp[2]=1;2.对于总长度为i的绳子,假设减去了长度为j的一段,若剩下的绳子不再继续剪,则乘积为j*(i-j);若剩下的绳子继续剪,则乘积为j * dp[i-j]。j可以取值为2~i-1,最大乘积为max(dp[i], j*(i-j), j*dp[i-j])。class Solution { public int cuttingRope(int n) { int[] dp = new int[n + 1]; //长

2021-07-27 02:51:42 32

原创 剑指offer 2021/7/25

57 - II. 和为s的连续正数序列算法思想leetcode题解法一class Solution { public int[][] findContinuousSequence(int target) { int i = 1; double j = 2.0; ArrayList<int[]> list = new ArrayList<>(); while(i < j){

2021-07-25 23:30:17 52 1

原创 剑指offer 2021/7/24

63. 股票的最大利润算法思想:动态规划。当前位置最大值等于max(前一个位置最大值,当前位置值-记录的最小值)。代码:class Solution { public int maxProfit(int[] prices) { if(prices.length == 0) return 0; int min = prices[0], profit = 0; for(int i = 1; i < prices.length; ++i){

2021-07-25 03:51:45 72

原创 反射与注解

反射与注解1. 反射1.1 基本信息1.概念:将类的各个组成部分封装为为其他对象,这就是反射机制。2.好处可以在程序运行过程中,操作这些对象;可以解耦,提高程序的可扩展性。1.2 Class类1.2.1 获取class对象的方式:Class.forName(“全类名”):将字节码文件加载进内存,返回class对象;(多用于配置文件,将类名定义在配置文件中,读取文件,加载类)类名.class:通过类名的属性class获取;(多用与参数的传递)对象.getClass():getC

2021-07-25 00:40:50 40

原创 MySQL

MySQL1. MySQL基本信息1.1 数据库分类关系型数据库:(SQL)MySQOL, Oracle, Sql Server, DB2, SQLlite通过表和表之间,行和列之间的关系进行数据的存储非关系型数据库:(NOSQL) Not Only SQLRedis,MongDB非关系型数据库,对象存储,通过对象自身的属性来决定1.2 DBMS(数据库管理系统)DB存数据,DBMS管理和操作数据数据库的管理软件,科学有效地管理数据,维护和获取数据;MySQL本质是数据库管

2021-07-24 00:49:29 55

原创 剑指offer 2021/7/22

62. 圆圈中最后剩下的数字算法思想:动态规划。假设f(n)代表n个数字依次删除第m个节点最后剩下的数字,执行第一次删除操作后,从第m%n个节点开始继续执行下一轮操作,此时可以将它看作f(n-1)的问题,而原数组中的m%n节点对应f(n-1)问题中的0节点,即f(n)=(f(n-1)+m)%n。当n=1时,一定是编号为0的节点为最后剩下的节点,即f(0)=1。通过该状态转移方程可以求解。代码:class Solution { public int lastRemaining(int n,

2021-07-23 03:56:48 101

原创 剑指offer 2021/7/21

59 - I. 滑动窗口的最大值算法思想:使用两个指针i,j分别指向滑动窗口左端和右端。将数组元素放入一个队列中,要求:1.队列中必须只包含滑动窗口中的元素,这就需要比较队列中第一个元素和nums[i-1],若相等,则进行出队操作,若不等,则说明此元素在之前已执行出队列操作。1.队首必须是滑动窗口中的最大元素,且队列需满足非严格递减,即每次将nums[j]和队列中最后一个元素进行比较,若大于最后一个元素,则执行出队操作。最后将nums[j]插入队列尾部。代码:class Solution {

2021-07-22 04:16:34 35

原创 剑指offer 2021/7/20

30. 包含min函数的栈借助辅助栈代码:class MinStack { LinkedList<Integer> A,B; /** initialize your data structure here. */ public MinStack() { A = new LinkedList<>(); B = new LinkedList<>(); } public void push

2021-07-21 01:37:03 33

原创 剑指offer 2021/7/19

48. 最长不含重复字符的子字符串算法思想法一:动态规划+哈希表class Solution { public int lengthOfLongestSubstring(String s) { if(s.length() == 0){ return 0; } HashMap<Character, Integer> map = new HashMap<>(); int[] dp =

2021-07-20 02:21:47 25

原创 Java多线程

Java多线程1.并发与并行1.并发:指两个或多个事件在同一个时间段发生。(交替执行)2.并行:指两个或多个事件在同一时刻发生。(同时执行)2.线程与进程1.进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。2.线程:线程是进程中的一个执行单元,负责程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之

2021-07-19 04:31:56 160

原创 剑指offer 2021/7/17

07. 重建二叉树代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { int[] preorder; HashMap<Integer, Intege

2021-07-18 03:18:22 29

原创 剑指offer 2021/7/16

09. 用两个栈实现队列代码:class CQueue { LinkedList<Integer> A, B; public CQueue() { A = new LinkedList<>(); B = new LinkedList<>(); } public void appendTail(int value) { A.push(value); } p

2021-07-17 01:51:10 45

原创 Java常用类

Java常用类1.Random类用来生成随机数字。1.导包import java.util.Random2.创建Random r = new Random();3.使用nextInt(int n) 参数代表范围,左闭右开空间2.ArrayList类基本信息1.数组的长度不可以发生改变,但是ArrayList集合的长度是可以随意变化的。2.对于ArrayList来说,有一个尖括号代表泛型。泛型:也就是装在集合中的所有元素,全都是统一的什么类型。注意:泛型只能是引用类型,不能是基本类

2021-07-16 23:51:40 72

原创 剑指offer 2021/7/15

42. 连续子数组的最大和算法思想:令dp[i]为以nums[i]为结尾的连续子数组最大和,dp[0]=nums[0];如果dp[i-1]>0,dp[i]=dp[i-1]+nums[i];否则,dp[i]=nums[i]。输出dp数组中最大的元素。class Solution { public int maxSubArray(int[] nums) { int[] dp = new int[nums.length]; dp[0] = nums[0];

2021-07-16 02:00:06 38

原创 剑指offer 2021/7/14

22. 链表中倒数第k个节点代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode getKthFromEnd(ListNode head, int k) { in

2021-07-15 12:19:15 38

原创 剑指offer 2021/7/13

11. 旋转数组的最小数字算法思想:使用二分法进行查找。将数组看作左右两个数组,设置两个指针i,j分别指向数组首尾,若n[mid]>n[j],说明mid在左边数组中,令i=mid+1;若n[mid]<n[j],说明mid在右边数组中,令j=mid;若n[mid]=n[j],无法判断mid在哪边数组,j–减少区间范围。详细题解(关于为什么不和i进行比较/j–的正确性证明)代码:class Solution { public int minArray(int[] numbers)

2021-07-14 03:52:03 24

原创 剑指offer 2021/7/12

10- II 青蛙跳台阶问题代码:简单的动态规划问题。class Solution { public int numWays(int n) { int[] count = new int[n+1]; if(n == 0 || n == 1){ return 1; } count[0] = 1; count[1] = 1; for(int i = 2; i < n+1 ;

2021-07-13 01:12:15 41

空空如也

空空如也

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

TA关注的人

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