自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

田野中的锋芒

大学学习的总结

  • 博客(124)
  • 收藏
  • 关注

原创 二叉树求最大最小叶子节点距离

题目描述:有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。给定二叉树的根节点root,请返回所求距离。思路:先求最大最小叶子节点,再求两节点的LCA(最近公共祖先),求两节点到LCA距离。首先得先明白如何求LCA(LCA属于比较经典的一类考点...

2019-09-18 11:50:02 2253

原创 流利说面试 & 用两个栈实现队列 & 237. 删除链表中的节点 &  119. 杨辉三角 II & 118. 杨辉三角 & 64. 最小路径和

面试官当时问我的是上面代码有问题没,我回答说会报错,又追问我是编译时报错还是运行时报错,我回答的是运行时会报错,又追问道回报什么类型的错误,我回答的是类型转换异常(因为map 调用get方法时,如果没获取到会返回值为null,把一个null类型的赋值给基本类型就会报错),然而经过现实运行,结果证明我的猜错是wrong。。。135. 分发糖果老师想给孩子们分发糖果,...

2019-09-14 17:11:35 285

原创 389. 找不同 & 179. 最大数

41. 缺失的第一个正数给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例1:输入: [1,2,0]输出: 3示例2:输入: [3,4,-1,1]输出: 2示例3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。来源:力扣(LeetCode)链接:https://lee...

2019-09-03 14:51:01 260

原创 203. 移除链表元素 & 234. 回文链表 & 198. 打家劫舍

203. 移除链表元素删除链表中等于给定值val的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5/** * Definition for singly-linked list. * public class ListNode { * ...

2019-09-02 18:09:03 197

原创 31. 下一个排列 & 145. 二叉树的后序遍历 & 1171. 从链表中删去总和值为零的连续节点

31. 下一个排列实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1来源:力扣(LeetCode)...

2019-09-01 20:02:15 201

原创 136. 只出现一次的数字 & 167. 两数之和 II - 输入有序数组 &  141. 环形链表 & 160. 相交链表&169. 求众数 & 168. Excel表列名称

136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcod...

2019-09-01 00:27:20 198

原创 已知先序遍历序列和中序遍历序列,求后序遍历序列

回顾一下二叉树的三种遍历先序: 根->左->右中序:左->根->右后序:左->右->根只要我们知道中序和先序或着后序 那么我们就可以根据已知的两种遍历序列求出剩下的另一种遍历序列例:已知该二叉树的先序遍历序列为:A-B-D-E-G-C-F,中序遍历序列为:D-B-G-E-A-C-F。求该二叉树后序遍历序列第一步:找根 先...

2019-08-31 21:55:30 10590 2

原创 笔试题总结一

多态的含义:多态是指同一个方法的调用,由于对象的不同可能会有不同的行为。上述是一般对于多态的定义,实际上由于函数入口参数的不同也能构成多态,不过此处与前者定义不同之处在于不再强调对象不同。两种不同时期的多态:编译时期多态:其又被称为静态多态,编译时期的多态是靠重载实现的,根据参数个数,类型和顺序决定的(必须在同一个类中)运行时的多态:运行时期的多态是靠方法的重写实现的,在编译期间被视作相...

2019-08-31 21:36:51 124

原创 110. 平衡二叉树

110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,...

2019-08-30 23:50:50 129

原创 (LeetCode) 83. 删除排序链表中的重复元素 66. 加一

(LeetCode) 83. 删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/p...

2019-08-30 00:19:07 120

原创 (LeetCode)108. 将有序数组转换为二叉搜索树 & 105. 从前序与中序遍历序列构造二叉树 & 106. 从中序与后序遍历序列构造二叉树

(LeetCode)108. 将有序数组转换为二叉搜索树将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 ...

2019-08-30 00:18:02 154

原创 (LeetCode) 58. 最后一个单词的长度 & 69. x 的平方根 & 98. 验证二叉搜索树

给定一个仅包含大小写字母和空格' '的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/length-of-last-word ...

2019-08-29 13:06:49 149

原创 (LeetCode)53. 最大子序和

给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray ...

2019-08-29 12:36:14 95

原创 (LeetCode)38. 报数 & 67. 二进制求和 & 88. 合并两个有序数组 & 100. 相同的树 & 101. 对称二叉树 & 104. 二叉树的最大深度

(LeetCode)38. 报数报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1. 12. 113. 214. 12115. 1112211被读作"one 1"("一个一") , 即11。11 被读作"two 1s"("两个一"), 即21。21 被读作"one 2", "one...

2019-08-29 11:04:58 227 1

原创 (LeetCode) 26. 删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例2:...

2019-08-29 10:45:41 95

原创 (LeetCode)21. 合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists...

2019-08-29 10:31:08 97

原创 (LeetCode) 20. 有效的括号

给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输...

2019-08-29 10:22:27 85

原创 (LeetCode)70. 爬楼梯

假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶...

2019-08-29 10:02:50 88

原创 (LeetCode)35. 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来...

2019-08-29 09:47:39 109

原创 (LeetCode)28. 实现 strStr()

实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = ...

2019-08-29 09:38:56 101

原创 (LeetCode)27. 移除元素

给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中...

2019-08-29 00:19:18 67

原创 (LeetCode) 7. 整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-integerpackage demo4.huaw...

2019-08-28 23:48:40 62

原创 (LeetCode)2. 两数相加

给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...

2019-08-27 18:21:51 190

原创 (LeetCode)1. 两数之和

给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(...

2019-08-27 17:23:53 73

原创 (Leetcode)5. 最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-subst...

2019-08-27 16:27:29 147

原创 (LeetCode)9. 回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。来源:...

2019-08-27 15:19:21 108

原创 (Leetcode)8. 字符串转换整数 (atoi)

请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可...

2019-08-27 15:16:24 159

原创 InheritableThreadLocal

InheritableThreadLocal 可以让子线程从父线程中取得值值继承package ext;import java.util.Date;public class InheritableThreadLocalExt extends InheritableThreadLocal { @Override protected Object initialV...

2019-08-27 11:02:13 97

原创 浅谈SimpleDateFormat的线程安全问题

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...

2019-08-27 11:01:47 218

原创 SimpleDateFormat非线程安全测试及修改

1.出现异常package demo4.jd;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class MyThread extends Thread { private SimpleDateFormat sdf; priva...

2019-08-27 09:24:03 124

原创 Base64编码原理解析与Java实现

个人理解总结,得到以下3点:将原始数据以先后顺序每3个字节分成一组*。在每一组中,把3段8bit的字节(3*8=24)按高低位顺序分为每段6bit的4段(4*6=24),将每段转为十进制得到0~63之间的数,以之为码值/索引在Base64编码表中对照/映射得到4个密文。重复以上操作。密文每76个字符数据后加一个换行符*。若原始数据字节长度除3余1,则在输出数据末尾加2个“=”;若原始...

2019-08-26 21:41:57 198

原创 n个元素进栈,共有多少种出栈顺序?

我们把n个元素的出栈个数的记为f(n), 那么对于1,2,3, 我们很容易得出:f(1) = 1//即 1f(2) = 2 //即 12、21f(3...

2019-08-26 19:59:23 6460

原创 瓜子2019/08/26(LeetCode 962. 最大宽度坡 520. 检测大写字母)

给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写,比如"Google"。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: "USA"输出: True示例 2:输入: "FlaG"...

2019-08-26 19:43:28 212 2

原创 快手版本号问题2019/08/25

package demo4.jd;import java.util.Scanner;//第一题 比较版本号public class test6 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int m...

2019-08-25 21:58:07 13030

原创 线程常见的状态

public enum State { NEW,RUNNABLE, BLOCKED,WAITING,TIMED_WAITING, TERMINATED;}新建(new)可运行(Runnable)阻塞(block)无限期等待(waiting)限期等待(TIMED_WAITING)结束(terminated)新创建一个线程,线程处于新建状态...

2019-08-20 22:29:36 74

原创 FutureTask详解

Future接口和实现Future接口的FutureTask类,代表异步计算的结果。FutureTask简介FutureTask除了实现Future接口外,还实现了Runnable接口。因此,FutureTask可以交给 Executor执行,也可以由调用线程直接执行(FutureTask.run())。根据FutureTask.run()方法被执行 的时机,FutureTask可以处于下...

2019-08-20 22:25:35 6103

转载 FutureTask获取线程返回值原理、源码分析

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 ...

2019-08-20 17:55:09 787

原创 ScheduledThreadPoolExecutor详解

ScheduledThreadPoolExecutor继承自ThreadPoolExecutor。它主要用来在给定的延迟之后运 行任务,或者定期执行任务。ScheduledThreadPoolExecutor的功能与Timer类似,但 ScheduledThreadPoolExecutor功能更强大、更灵活。Timer对应的是单个后台线程,而 ScheduledThreadPoolExecutor...

2019-08-20 13:27:37 30974 3

原创 ThreadPoolExecutor详解

Executor框架最核心的类是ThreadPoolExecutor,它是线程池的实现类,主要由下列4个组件构成。·corePool:核心线程池的大小。·maximumPool:最大线程池的大小。·BlockingQueue:用来暂时保存任务的工作队列。·RejectedExecutionHandler:当ThreadPoolExecutor已经关闭或ThreadPoolExecutor...

2019-08-20 12:54:51 267

原创 Executor框架

在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。Java的线程既是工作单元,也是执行机制。从JDK 5开始,把工作单元与执行机制分离开 来。工作单元包括Runnable和Callable,而执行...

2019-08-20 12:22:19 308

空空如也

空空如也

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

TA关注的人

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