自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2020-11-16leetcode算法-二叉树的层次遍历二

题目要求给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]思路对于我来说广度优先搜索实在很难学会- -树的层次遍历可以使用广度优先搜索实现。从根节点开始搜索,每次遍历同一层的全部节点,使用一个列表存

2020-11-16 13:18:04 126 1

原创 【转载】二叉树算法套路

作者:labuladong链接:https://leetcode-cn.com/problems/same-tree/solution/xie-shu-suan-fa-de-tao-lu-kuang-jia-by-wei-lai-bu-/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。二叉树算法的设计的总路线:明确一个节点要做的事情,然后剩下的事抛给框架。void traverse(TreeNode root) { // root 需要做

2020-11-13 12:21:15 143

原创 2020-11-13-leetcode算法-二叉树的最大深度

题目要求给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。思路搜索深度,想到递归每次算出左子树和右子树的最大深度,在访问到下一个节点为空时退出最后判断左子树和右子树谁的深度值较大就返回谁解法public int maxDepth

2020-11-13 11:53:47 135

原创 2020-11-12-leetcode算法-对称二叉树

题目要求给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3思路和昨天的题差不多一样,无脑递归迭代还不太会解法 public boolean isSymmetric(TreeNode roo

2020-11-12 14:41:20 115 1

原创 2020-11-11-leetcode算法-相同的树

题目要求给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / \ 2

2020-11-11 16:34:58 71

原创 2020-11-10-leetcode算法-合并两个有序数组

题目要求给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]

2020-11-10 18:46:43 75

原创 2020-11-9-leetcode算法-爬楼梯

题目要求假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶思路经过一个个枚举可以发现刚好是一个斐波那契数列前

2020-11-09 12:40:20 118

原创 2020-11-6-leetcode算法-x的平方根

题目要求实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。思路没写出来- -思路过程就是猜数字,大了就往小猜,小了就反之解法 public int mySqrt(int x) {//x = 8

2020-11-06 20:53:08 84

原创 2020-11-5-leetcode算法-二进制求和

题目要求给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。 示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"思路没有做出来- -首先,倒序遍历两个字符串,相对短的字符串后面补0,使成为一致长度,同为1则进位,还需要判断最后一次计算是否有进位 有则在最前面加上1

2020-11-05 20:58:57 65

原创 2020-11-4leetcode算法-加一

题目要求给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路没做出来。答案简直巧妙从后往前遍历,给最后一位加一如果最后一位取余10 不等于0,直接返回当

2020-11-04 15:23:39 81

原创 2020-11-4算法leetcode-最后一个单词长度

题目要求给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。 示例:输入: "Hello World"输出: 5思路从后向前遍历,遇到空格直接return,如果不是空格,增加一个计数器,每次加一,直到碰到下一个空格时break循环,retur

2020-11-04 12:41:22 110

原创 2020-11-2算法-最大子序和

题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。思路没有思路,看不明白题解class Solution { public int maxSubArray(in

2020-11-02 18:23:04 159

原创 2020-10-27算法-JAVA错题

文章目录算法-外观数列算法-外观数列题目要求给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一个字符串。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1描述前一项,这个数是 1 即 “一个 1 ”,记作 11描述前一项,这个数是 11 即 “两个 1 ” ,记作

2020-10-27 18:11:30 114 1

原创 2020-10-24JAVA错题

1.下列说法正确的是()正确答案: B 你的答案: A (错误)A:在类方法中可用this来调用本类的类方法B在类方法中调用本类的类方法时可直接调用C:在类方法中只能调用本类中的类方法D:在类方法中绝对不能调用实例方法解析:先要理解什么是类的方法,所谓类的方法就是指类中用static 修饰的方法(非static 为实例方法)2.JVM内存不包含如下哪个部分( )正确答案: D 你的答案: B (错误)A:StacksB:PC寄存器C:HeapD:Heap Frame

2020-10-26 20:09:39 795

原创 2020-10-26算法-JAVA错题

文章目录算法-搜索插入位置算法-搜索插入位置题目要求给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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思路纪念一下第一次五分钟写出来我的思路很简单,就

2020-10-26 19:59:48 213 2

原创 leetcode算法-实现 strStr()

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

2020-10-24 18:14:35 158

原创 2020-10-23JAVA错题

1.下面有关java类加载器,说法正确的是?正确答案: A B C D 你的答案: A B D (错误)A:引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的B:扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。C:系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类D:tomcat为每个App创建一个Loade

2020-10-23 16:20:11 538

原创 leetcode算法-移除元素

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

2020-10-23 14:55:24 449

原创 leetcode算法-删除排序数组中的重复项

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

2020-10-23 13:35:32 188

原创 2020-10-21JAVA错题

1.在 main() 方法中给出的字节数组,如果将其显示到控制台上,需要正确答案: A 你的答案: B (错误)A:标准输出流System.out.println()。B:建立字节输出流。C:建立字节输入流。D:标准输入流System.in.read()。解析:out是java.lang.System类中的一个字段,out是“标准“”输出流,public static final PrintStream out,out是PrintStream类型,PrintStream是包装流,你传入

2020-10-21 20:24:07 911

原创 leetcode算法-合并两个单链链表

题目要求将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路我们可以用迭代的方法来实现上述算法。当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。首先,我们设定一个哨兵节点

2020-10-21 19:38:23 110

原创 leetcode算法-有效括号

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

2020-10-19 22:00:16 63

原创 2020-10-19JAVA错题

1.运用下列哪个命令能够获取JVM的内存映像正确答案: B 你的答案: D (错误)A: jinfoB: jmapC: jhatD: jstat1、jps:查看本机java进程信息。2、jstack:打印线程的栈信息,制作线程dump文件。3、jmap:打印内存映射,制作堆dump文件4、jstat:性能监控工具5、jhat:内存分析工具6、jconsole:简易的可视化控制台7、jvisualvm:功能强大的控制台2.以下哪项不属于java类加载过程?正确

2020-10-19 18:17:53 956

原创 leetcode算法-最长公共前缀

题目要求://编写一个函数来查找字符串数组中的最长公共前缀。 //// 如果不存在公共前缀,返回空字符串 ""。 //// 示例 1: //// 输入: ["flower","flow","flight"]//输出: "fl"// //// 示例 2: //// 输入: ["dog","racecar","car"]//输出: ""//解释: 输入不存在公共前缀。// //// 说明: //// 所有输入只包含小写字母 a-z 。 思路爷不会,tmd抽出一个方

2020-10-18 21:34:07 78

原创 2020-10-16JAVA错题

1.一个类中,有两个方法名、形参类型、顺序和个数都完全一样,返回值不一样的方法,这种现象叫覆盖。错误:直接报错,覆盖事子类和父类之间的,也不是重载2.下列代码的输出结果是boolean b = true ? false : true == true ? false : true;System.out.println(b);A:trueB:false (选B)C:nullD:空字符串== 的优先级大于 三目运算符优先级三目运算符从右往左运算3.以下代码执行的结果显示是多少?publ

2020-10-17 18:05:51 612

原创 leetcode算法-罗马字母转整数

题目要求罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 X

2020-10-17 17:14:33 112 1

原创 leetcode算法-回文数

题目要求判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?思路我不会,全靠zlz大佬教做人解法

2020-10-17 17:13:57 104 1

原创 2020-10-14JAVA错题

1.关于抽象类和接口叙述正确的是? ( )A抽象类和接口都能实例化的B抽象类不能实现接口C抽象类方法的访问权限默认都是publicD接口方法的访问权限默认都是publicD正确2.JSP分页代码中,哪个步骤次序是正确的?A先取总记录数,得到总页数,最后显示本页的数据。B先取所有的记录,得到总页数,再取总记录数,最后显示本页的数据。C先取总页数,得到总记录数,再取所有的记录,最后显示本页的数据。D先取本页的数据,得到总页数,再取总记录数,最后显示所有的记录。A正确流程:coun

2020-10-14 22:15:41 455

原创 leetcode算法-整数反转

题目要求给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解法 //反转之后的数 int end =

2020-10-14 21:12:18 146 2

原创 2020-10-13JAVA错题

1:哪一行有错1.byte a1 = 2,a2 = 4,a3;2.short s = 16;3.a2 = s;4.a3 = a1 * a2;第3、4行出现错误: 小类型转换大类型事隐式转换 ,大转小是强制 a2 = (byte) s; byte short 计算的时候自动转成int a3 = (byte) a1 * a2;2:A:java语言是编译型语言,会把java程序编译成二进制机器指令直接运行B:java编译出来的目标文件与具体操作系统有关C:java在运行时才进行翻译

2020-10-13 19:29:37 471

原创 leetcode算法-两数之和

题目要求给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。eg:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法1:暴力遍历法 思路: 一一遍历数组每个值X,寻找数组中是否有target - X 数组同一个元素不能使用两遍,所

2020-10-13 14:55:23 82

原创 CSS笔记day29

CSSCSS概念:Cascading Style Sheets 层叠样式表 作用就是用来美化HTML标签HTML标签他的主要作用,就是用来定义网页元素,但是HTML能够定义网页元素,但是他还会自带一些属性,来控制这个网页元素的展示样式。HTML 自带的属性很贫乏,有时不能满足我们更加丰富的样式需求,那这个时候我们的CSS就登场了,CSS里面提供了非常丰富的样式属性,能够满足我们对样式的需求。也就是说有了CSS之后,我们要控制这个元素长什么样式,就交由CSS来控制,基本上不用HTML标签自带的属性

2020-07-06 12:12:10 78

原创 html笔记day28

HTMLHyperText Markup Language 的缩写意思是"超文本标记语言"<html></html> <html>标记用于html文件的最前面,用来表示html文件的开始。而</html>的标记则是放在html的最后面,用来表示html文件的结束,两个标记必须一起使用。 <head>和</head> <head>和</head>构成html文件的头部部分,在此标记

2020-07-06 10:27:37 100

原创 javase笔记day27

lambda表达式Lambda表达式,是JDK1.8引入的一种语法,这种语法可以对匿名内部类的写法,进行简写JDK1.8 引入了一个箭头符号 -> 这个箭头符号 将Lambda表达式分为 左右两部分。 左边->右边 左边:写的是你实现的这个接口中的抽象方法的 形参列表 右边:写的是你对接口中这个抽象方法的具体实现逻辑。 // Comparator 比较器 是个接口 list.sort(new Comparator<Integer>() {

2020-07-02 20:14:44 192

原创 javase笔记day26

反射类加载当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 加载: 就是指将.class文件读入内存,并为之创建一个Class对象。 任何类被使用时系统都会建立一个Class对象。 连接: 验证:是否有正确的内部结构,并和其他类协调一致 准备:负责为类的静态成员分配内存,并设置默认初始化值 解析:把类中的符号引用转换为直接引用 初始化: 静态代码块和设置变量的初始值为程序员设定的值,new 对象,读取或

2020-06-19 10:49:11 131

原创 javase笔记day25

网络编程计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来, 在网络操作系统,网络管理软件及网络通信协议的管理和协调下, 实现资源共享和信息传递的计算机系统。 网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换网络模型网络模型一般是指: OSI(Open System Interconnection开放系统互连)七层参考模型 TCP/IP四层参考模型 网络层(物理层 , 数据链路层) 网际层

2020-06-15 21:26:42 228

原创 javase笔记day24

线程池线程池:容器,存有一定数量线程对象的容器,线程池可以复用管理线程对象。程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。在JDK5之前,我们必须手动实现自己的线程池,从JDK5开始,Java内置支持线程池JDK5新增了一个Executors工厂类来产生线程池,有如下几个方法:

2020-06-12 18:39:58 101

原创 javase笔记day23

多线程线程是依赖于进程存在的进程就是正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。一个进程可以启动多个线程比如java程序: JVM就是一个进程,main为主线程,垃圾回收也是一个线程,两个线程并发 线程:在一个进程内部又可以执行多个任务,而这每一个任务我们就可以看成是一个线程。是程序使用CPU的基本单位。所以,进程是拥有资源的基本单位, 线程是CPU调度的基本单位。多线程的作用不是提高执行速度,而是为了提高应用程序的使用率程序在运行

2020-06-10 19:22:26 99

原创 javase笔记day22

数据输入输出流数据输入流: DataInputStream数据输出流: DataOutputStream什么顺序写进去的,什么顺序读出来内存操作流 a:操作字节数组 ByteArrayOutputStream ByteArrayInputStream 此流关闭无效,所以无需关闭 b:操作字符数组 CharArrayWrite CharArrayReader c:操作字符串 StringWriter StringReader 底层用的是StringBuffer 来充

2020-06-02 15:36:02 151

原创 javase笔记day21

字节流转换流OutputStreamWriter(OutputStream out):根据默认编码(GBK) 把字节流的数据转换为字符流OutputStreamWriter(OutputStream out,String charsetName) 根据指定编码把字节流数据转换为字符流 InputStreamReader(InputStream is) 用默认的编码(GBK)读取数据InputStreamReader(InputStream is,String charsetName

2020-06-01 13:33:50 76

空空如也

空空如也

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

TA关注的人

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