自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指Offer刷题学习笔记汇总

渣渣鹏的学习记录1、前言2、题目总结数组(13道):字符串(9道):链表(8道):二叉树(15道):栈(3道):回溯法(2道):递归、动态规划(4道):位运算(1道):其他(11道):1、前言本系列为渣渣鹏的《剑指Offer》学习笔记。刷题平台:牛客网使用语言:JavaGitHub笔记地址:    开始刷题的时间太晚了,草草的结束了第一遍学习,把67道题过了一遍,使用的是java语言进...

2020-03-22 16:52:24 315

原创 JVM方法区总结笔记

JVM整体架构图放在底部运行时数据区结构图从线程共享与否的角度来看栈、堆、方法区的交互关系方法区内部结构方法区(Method Area)存储什么?它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等。                                                                         -----《深入理解Java虚拟机》    • (1)JVM架构图...

2020-05-27 16:22:14 188

转载 贪心思想

1. 分配饼干2. 不重叠的区间个数3. 投飞镖刺破气球4. 根据身高和序号重组队列5. 买卖股票最大的收益6. 买卖股票的最大收益 II7. 种植花朵8. 判断是否为子序列9. 修改一个数成为非递减数组10. 子数组最大的和11. 分隔字符串使同种字符出现在一起保证每次操作都是局部最优的,并且最后得到的结果是全局最优的。1. 分配饼干455. Assign Cookies (Easy)Leetcode / 力扣Input: grid[1,3], size[1,2,4]..

2020-05-24 22:55:17 169

原创 Leetcode刷题记录(Leetcode题解)

前言    渣渣彭的Leetcode刷题记录,缓慢持续更新中~ ????算法思想双指针排序二分查找分治搜索动态规划数据结构链表树栈和队列哈希表字符串数组与矩阵图位运算

2020-05-24 22:28:04 207

原创 JVM--双亲委派机制

概述    Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将她的class文件加载到内存生成的class对象。而且加载某个类的class文件时,java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式。工作原理    • (1)如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;    • (2)如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归请求最终将到达顶层的启动类加载器;    

2020-05-20 15:25:30 229

原创 堆是分配对象存储的唯一选择吗?

堆是分配对象存储的唯一选择吗随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么“绝对”了。----------《深入理解Java虚拟机》    • 在Java虚拟机中,对象是在Java堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析( Escape Analysis)后发现,一个对象并没有逃逸出方法的话,那么就可能被优化成栈上分配。这样就无需在堆上分配内存,也无须进行垃圾回收了。这也是

2020-05-20 14:36:08 377

原创 对象分配过程:TLAB

为什么会有TLAB(Thread Local Allocation Buffer)?    • 堆区是线程共享区域,任何线程都可以访问到堆区中的共享数据;br>    • 由于对象实例的创建在JVM中十分频繁,一次在并发环境下从堆区中划分内存空间是线程不安全的;    • 为避免多个线程操作同一地址,需要使用加锁等机制,进而影响分配速度。什么是TLAB?    • 从内存模型而不是垃圾收集的角度,对Eden区域继续进行划分,JVM为每个线程分配了一个私有缓存区域,它包含在Eden区域内。 .

2020-05-20 14:02:33 2643

原创 玩转算法面试-- Leetcode真题分门别类讲解

如何“正确”的回答一个算法问题对一组数据进行排序:1、这组数据有什么样的特征?    • ①有没有可能包含有大量重复的元素?    如果有这种可能的话,三路快排是更好的选择(Java种快排的基本实现就是使用三路快排)。    • ②是否大部分数据距离它正确的位置很近?是否近乎有序?    如果是这样的话,插入排序是更好的选择(如对银行的业务按照业务发生的时间进行排序,大多数业务先发生也...

2020-04-04 00:52:44 1310

原创 Java基础必知必会

基础知识笔记记录,持续更新ing~ 个人博客:www.zhazhapeng.cn1、JDK\JRE的区别    • JDK(Java Development Kit)        开发工具        基本类库        javac(编译)        javap(反编译)        javadoc(编译文档)    • 运行环境(单单运行一个Java程序)  ...

2020-04-02 16:15:59 195

原创 MySQL学习笔记

MySQL学习笔记登录和退出MySQL服务器# 登录MySQL$ mysql -u root -p12345612# 退出MySQL数据库服务器exit;基本语法-- 显示所有数据库show databases;-- 创建数据库CREATE DATABASE test;-- 切换数据库use test;-- 显示数据库中的所有表show tables;--...

2020-03-30 23:29:31 119

原创 Git Bash中按下Ctrl+C无法中断hexo s的解决方法

1、打开cmd;2、复制 taskkill /F /IM node.exe,粘贴运行;3、搞定!Peace!

2020-03-25 20:33:29 2067 2

原创 剑指Offer(六十四):滑动窗口的最大值

滑动窗口的最大值:题目链接:牛客网题目描述:    给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1},{2,[3,4,2],6...

2020-03-24 20:05:34 113

原创 剑指Offer(五十一):构建乘积数组

构建乘积数组:题目链接:牛客网题目描述:    给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。(注意:规定B[0]=A[0]×A[1]×…×A[n-2];)示例 1:输入: [1,2,3,4,5]输出: [120,60,40,30,24]示...

2020-03-24 18:19:57 81

原创 剑指Offer(五十):数组中重复的数字

数组中重复的数字:题目链接:牛客网题目描述:    在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。示例 1:输入: [2,3,1,0,2,5,3]输出: 2解题...

2020-03-24 17:50:22 121

原创 剑指Offer(四十):数组中只出现一次的数字

数组中只出现一次的数字:题目链接:牛客网题目描述:    一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。示例 1:输入: [1,2,1,3,2,5]输出: [3,5]解题思路:• (一):用利用哈希表的特性来解答• (二):利用异或:    现在数组中只有连个数字只出现过1次 a, b ,直接异或一次只能得到这两个数字的异或...

2020-03-24 13:59:10 110

原创 剑指Offer(三十七):数字在排序数组中出现的次数

数字在排序数组中出现的次数:题目链接:牛客网题目描述:    统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0解题思路:    • 可以先二叉搜索找一下这个元素的位置,然后再开始遍历搜索一下。...

2020-03-24 13:01:50 171

原创 剑指Offer(三十五):数组中的逆序对

数组中的逆序对:题目链接:牛客网题目描述:    在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007示例 1:输入: [7,5,6,4]输出: 5解题思路:    每一个值都要跟前面的值进行比较判断是否为逆序对,可以借助归并排...

2020-03-24 12:08:05 87

原创 剑指Offer(三十二):把数组排成最小的数

把数组排成最小的数:题目链接:牛客网题目描述:    输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”解题思路:    比...

2020-03-23 15:13:38 118

原创 剑指Offer(三十):连续子数组的最大和(dp)

连续子数组的最大和:题目链接:牛客网题目描述:    HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始...

2020-03-23 12:45:24 159

原创 剑指Offer(二十八):数组中出现次数超过一半的数字

数组中出现次数超过一半的数字:题目链接:牛客网题目描述:    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2示例 2:输入: [...

2020-03-23 10:23:49 84

原创 剑指Offer(十九):顺时针打印矩阵

顺时针打印矩阵:题目链接:牛客网题目描述:    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入: matrix = [ [1,2,3],               [4,5,6],               [7,8,9] ]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入: matrix = [ [1,2,3,4], ...

2020-03-22 22:22:08 68

原创 剑指Offer(十三):调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面:题目链接:牛客网题目描述:    输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。示例 1:输入: nums = [1,2,3,4]输出: [1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。解题思路:解法1:遍...

2020-03-22 21:36:00 79

原创 剑指Offer(六):旋转数组的最小数字

旋转数组的最小数字:题目链接:牛客网题目描述:    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。示例 1:输入: [1,3,5]输出: 1示例 2:...

2020-03-22 20:54:39 77

原创 剑指Offer(一):二维数组中的查找

二维数组中的查找:题目链接:牛客网题目描述:    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。Consider the following matrix:[ [1, 4, 7, 11, 15], [2, 5, 8, 1...

2020-03-22 18:53:15 91

原创 基数排序--数据结构排序(JAVA)

基数排序介绍(桶排序)介绍:1)基数排序属于“分配式”排序,又称“桶子法”,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用;2)基数排序法是属于稳定性的排序,基数排序法是效率高的稳定性排序法;3)基数排序是桶排序的拓展;4)基数排序是1887年赫尔曼·何乐礼发明的。它是这样实现的:将整数按位数切割成不同的数字,然后按照每个位数分别比较。基数排序基本...

2020-02-18 20:56:36 119

原创 快速排序--数据结构排序(JAVA)

快速排序法介绍:    快速排序(Quick Sort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按照次方法对两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序思路图:代码实现:import java.util.Arrays;public clas...

2020-02-18 20:52:30 146

原创 归并排序--数据结构排序(JAVA)

归并排序介绍:归并排序(Merge Sort)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略。注:分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案“修补”在一起,即分而治之。归并排序思想示意图1-基本思想:归并排序思想示意图2-合并相邻有序子序列:代码实现:import...

2020-02-18 20:43:49 96

原创 希尔排序--数据结构排序(JAVA)

简单插入排序存在的问题数组arr={2, 3, 4, 5, 6, 1},这时需要插入的数1(最小),这样的过程是:{2, 3, 4, 5, 6, 6}{2, 3, 4, 5, 5, 6}{2, 3, 4, 4, 5, 6}{2, 3, 3, 4, 5, 6}{2, 2, 3, 4, 5, 6}{1, 2, 3, 4, 5, 6}结论:当需要插入的数是较小的数时,后移的次数明显增多,对效率有...

2020-02-18 20:39:08 90

原创 插入排序--数据结构排序(JAVA)

插入排序介绍:    插入式排序属于内部排序法,是对于欲排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的。插入排序法思想:    插入排序(Insertion Sorting)的基本思想:把n个待排序的元素看成一个有序表和无序表,开始时有序表只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,把它插入到...

2020-02-18 20:36:23 73

原创 选择排序--数据结构排序(JAVA)

选择排序提高了冒泡排序的性能,它每遍历一次只交换一次数据。即第一次循环:设定第一个数为最小值,经历循环后找到真正最小值,然后进行交换;同理,第二次交换:设定第二个数为最小值,经历第二次循环后找到次小值,与第二个数进行交换。。。遍历(arr.length - 1)次循环后得到有序数组。动态图展示:代码实现:import java.text.SimpleDateFormat...

2020-02-18 20:32:18 90

原创 冒泡排序--数据结构排序(JAVA)

从第一个数开始比较相邻的元素,如果前一个数比后一个数大,就交换他们两个。    对每一对相邻元素都做相同的工作,从一个数至最后一个数,第一轮结束后最后一个数应该是最大的数;第二轮过后倒数第二个数应该是第二大的数…由此可知,一共循环 (arr.length - 1) 次,每次循环至 (arr.length -1 -i) 次数。即:(1) 比较相邻的元素。如果第一个比第二个大,就交换它们两个...

2020-02-17 23:10:49 75

空空如也

空空如也

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

TA关注的人

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