自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【面试总结】美团提前批一面二面

【面试总结】美团提前批一面二面面试总结面试7月19号一面 40分钟 自我介绍 jvm内存结构 什么情况下出现堆内存的溢出? out of memory怎么排查?怎么解决? 堆内存分代? 计算机网络分层结构? http和https的区别? 线程创建的方式 锁是干嘛的? 什么时候发生死锁? 数组和链表特点

2021-07-22 09:33:32 212

原创 更好的中序遍历-Morris中序遍历(java实现)

Morris中序遍历二叉树的中序遍历更好的空间复杂度二叉树的中序遍历二叉树的中序遍历,遍历顺序是先从左子树开始,接下访问根节点,然后访问右子树,我自己为了方便记忆,就是想中序,就是下一个访问中间节点,也就是从左子树开始,接下来访问根节点。一般中序遍历是递归或者非递归方式实现。非递归是用栈实现。递归有递归深度,栈也有栈空间,这两种方式的空间复杂度都是O(n)。递归实现的中序遍历:1 public static void InOrder(TreeNode root) {2 if (

2020-09-25 15:38:49 434

原创 【LeetCode第93题】复原IP地址(java实现)

【LeetCode第93题】复原IP地址递归+回溯代码实现总结题目:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: “25525511135”输出: [“255.255.11.135”, “255.255.111.35”]递归+回溯题目可以理解为一段字符串分成几断。思路就是先分一段出来,然后再把后面的字符串继续分,这是很常规的递归思想。也就是后续的动作都是重复的

2020-08-10 17:43:18 667

原创 【剑指offer第45题】把数组排成最小的数(java实现)

把数组排成最小的数字典排序代码实现总结字典排序输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例:输入: [10,2]输出: “102”输入: [3,30,34,5,9]输出: “3033459”首先组合成字符串题型,最好开始就把数字转化为字符串,这样避免数字相加后越界,而且使用StringBuffer类,字符串是可变的,还是线程安全的。数字组合成字符串,还涉及到大小,这里就要排序。而且观察到,第一位数字越小,就应该排在前面。那么这样就可以确

2020-07-30 11:26:36 390

原创 最近股市跌宕起伏,一文解决LeetCode所有股票问题(java实现)

LeetCode所有股票问题动态规划股票相关题目总结动态规划所有的股票问题都是动态规划问题,而用动态规划解题就需要写出动态转移方程,也就是需要先定义好状态。基础题型:给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;设计一个算法来计算你所能获取的最大利润。你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。股票相关的题目是很明显的动态规划题目,因为股票买不买卖不卖这就是状态转化的过程,所以很自然需要考虑动态规划思想。而解决动态规划问题最重要的写出状态转移方

2020-07-18 12:51:56 567

原创 【LeetCode第44题】 通配符匹配(java实现)

通配符匹配动态规划代码实现总结动态规划题目描述:给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 。示例:输入: s = “aa” p = “a” 输出: false输入: s = “aa”

2020-07-05 19:52:00 912

原创 位运算学习总结(java实现)

位运算学习总结位运算算法题非算法题位运算位运算不仅仅是二进制数字的移动,还包括逻辑运算。常见逻辑运算就是与运算、或运算、异或运算、同或运算等等。首先最基础的就是数字的移动:比如数字5,二进制数字是101(2),分别左移和右移一位结果:1 int data = 5;2 int rightShift = data>>1; //右移一位3 int leftShift = data<<1; //左移一位4 System.out.prin

2020-07-01 12:48:10 190

原创 [LeetCode第209题] 长度最小的子数组(java实现)

长度最小的子数组解题思路代码实现总结解题思路题目:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。首先想到暴力法,遍历所有的子数组,在子数组和大于等于s之中,选长度最短的。时间复杂度是O(n^2),很耗时。然后是双指针,两个指针表示子数组

2020-06-28 13:37:59 368

原创 【剑指offer第24题】二叉树中和为某一值的路径(java实现)

二叉树中和为某一值的路径解答思路代码实现总结解答思路输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[[5,4,11,2],[5,8

2020-06-26 11:38:50 184

原创 2020年6月的面试总结

6月的三场面试总结趁暑假有两个月时间,不能浪费,这个月投了很多实习岗位,都是后台java开发。反馈很少,自己太菜,实习只有两个月时间太短,再者地点不合适。总共面试了三家,面试官人都很不错,也看我是非应届生,找实习的,问的问题很基础,没有太为难我。下面是对三次面试的总结。以所属知识点分类,包括数据结构、数据库、计算机网络、操作系统、java基础、项目、非技术问题等等这些。数据结构: 1、数组和链表的区别 2、哈希表减少冲突的方法 3、给定一个数组,写出快排后的第一趟结果

2020-06-26 11:06:01 154

原创 【剑指offer第25题】复杂链表的深拷贝(java实现)

复杂链表的深拷贝结题思路实现代码总结结题思路输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)两次遍历如果是普通的链表,就很简单,直接遍历一遍链表,然后边遍历边复制。但是此时多了一个引用,指向任意的结点。这个可以单独处理,先把链表复制好,根据原来老的链表的随机指针的引用再一次复制到新的链表中。而这时候需要有个对应关

2020-06-26 10:59:47 327

原创 计数排序和桶排序(java实现)

计数排序和桶排序的java实现计数排序桶排序测试快排、归并、插入在相应的条件下已经很快了。但是随着计算机存储设备越来越充足,计算机存储能力也大大提高。这样不需要考虑计算机内存情况下。计数排序和桶排序进一步提高排序速度,当然也是在牺牲空间复杂度的情况下。计数排序计数排序,不考虑存储空间的限制,用一个很大的数组(上界是待排序数据最大值)来存放数据中每个数出现的次数,然后按照从小到大输出即可,计数...

2020-04-29 17:00:19 219

原创 利用java的PriorityQueue类实现堆排序(java实现)

堆排序堆排序实现代码优化堆排序堆排序:利用自己写的最大堆或者java库中的PriorityQueue优先队列类,可以进行堆排序。把数组每个数放进堆里面,PriorityQueue优先队列类默认最小堆,那么每次从堆中取值都是当前堆中最小值,所以依次放入数组即可,时间复杂度是O(nlogn)。实现代码private void heapSort(int[] array , int n) { ...

2020-04-19 18:43:11 633

原创 快速排序详解及优化(java实现)

快速排序快速排序思想实现代码快速排序思想快速排序是找一个标定的数据,让数组中小于这个数的,大于这个数的分为两组,这两组再分别进行标定分组,是个递归的过程。但是,当数组近乎于有序时,快速排序退化为O(n^2)。为了防止这发生,选择的标定是随机选择的,而不是选择最左端点的值。这里随机选择标定值,防止快排退化成O(n^2),把标定值移动到最前面后,暂存下来,然后右指针移动过程中比标定值小的...

2020-04-19 18:39:19 155

原创 使用递归及不使用递归的归并排序(java实现)

归并排序实现思想及代码实现归并排序思想归并排序代码实现不使用递归的归并排序归并排序思想归并排序采用分治的思想,每次都把当前数组分了两半,直到分成一个数据为单位,这里利用递归实现,然后治的过程就是合并的过程。合并的时候顺便排好的序。新建一个临时数组,存放还没排好序的两部分。为排序两部分分别从L 和mid + 1出开始比较。小的数就存放在数组中。归并排序代码实现代码实现:private ...

2020-04-19 18:34:32 246

原创 希尔排序及手推时间复杂度(java实现)

希尔排序希尔排序思想代码实现测试希尔排序思想希尔排序是在插入排序基础上做出的改进,引进分组的思想,以一个步长(step)为间隔单位的数据为一组,也就是分成了step组,而且每次分组的步长是递减的,直到步长是1. 每次分组后以组为单位进行插入排序。如下图所示:越进行后面,数组越接近于有序,插入排序使用更少。代码实现private void ShellSort(int[] array...

2020-04-19 18:27:43 842

原创 [排序算法总结一] O(n^2)级别的排序算法(冒泡排序、选择排序、插入排序)

三种级别的排序算法0、前言1、冒泡排序2、选择排序3、插入排序4、总结0、前言排序算法我觉得是属于很基础但是又很重要的一部分,在今后的实际工作中肯定会经常遇到,而且排序算法能增加对数据排序的深入理解,自己实现过程中也提高自己动手能力,排序顾名思义就是给串数据给你,需要升序或者降序输出。但是今后工作中的数据会是百万千万级别的,这时候选择合适高效的排序算法是至关重要的。今天先从最基本也是经典的几种...

2020-04-15 11:02:39 271

原创 [LeetCode面试题13] 机器人运动范围,详解图的BFS和DFS,都是套路。

**图的深度优先遍历和广度优先遍历**1、 BFS和DFS2、代码实现3、套路总结1、 BFS和DFS图(Graph)也是一种重要的数据存储结构,图是由顶点的有穷非空集合和顶点之间边的集合组成,顶点与顶点之间可以是有方向,也可以是无方向的。有方向用箭头表示,对应图为有向图,无方向用直线表示,对应图为无向图。为了方便表示图的结构,引入二维邻接矩阵的概念,即顶点之间连接关系以矩阵的形式表达出来。矩...

2020-04-08 19:45:36 2423

空空如也

空空如也

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

TA关注的人

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