自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指Offer-打印从1到最大的n位数

49.打印从1到最大的n位数输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]思路要打印的范围其实1到是10的n次幂-1。求幂,可以使用快速幂加快速度。将时间复杂度降低到O(logN)class Solution { pu...

2020-04-02 11:58:58 180

原创 剑指Offer-顺时针打印矩阵

48.顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 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],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]...

2020-03-30 13:32:38 171

原创 剑指Offer-n-1中缺失的数字

47.0~n-1中缺失的数字一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8思路二分。二分的条件是数组下标与其对应的元素是否相等。如果发现不相等,则...

2020-03-30 11:09:47 285

原创 剑指Offer-在排序数组中查找数字 I

46.在排序数组中查找数字 I统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0思路一双指针。首尾各放一个指针,由于数组是排好序的,所以找到与target相等的那个范围即可。注意返回值,如果i和j相遇也...

2020-03-30 10:50:46 178

原创 剑指Offer-二叉搜索树第K大的节点

45.二叉搜索树第K大的节点给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ ...

2020-03-24 14:06:52 107

原创 剑指Offer-二叉搜索树的最近公共祖先

43.二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q ...

2020-03-24 13:10:41 134

原创 剑指Offer-数组中出现次数超过一半的数字

剑指Offer-数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2思路一HashMap解决。遇到统计次数的题目,往map想。统计数组中元素频率超过数组一半的元素即可。class Solution { ...

2020-03-22 13:04:34 100

原创 剑指Offer-把数组排成最小的数

剑指Offer-把数组排成最小的数输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"示例 2:输入: [3,30,34,5,9]输出: "3033459"思路将其转换为一个排序问题,考查API的使用。如果数组中的两个数s1和s2转化成字符串后,满足(s1+s2)<(s2+s1),...

2020-03-22 11:15:06 178

原创 剑指Offer-剪绳子(一)

剑指Offer-剪绳子(一)给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m] 。请问 k[0]*k[1]*...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2...

2020-03-20 11:35:43 108

原创 剑指Offer-机器人的运动范围

剑指Offer-机器人的运动范围地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0]的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8...

2020-03-19 16:43:46 117

原创 剑指Offer——矩阵中的路径

剑指Offer——矩阵中的路径请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”...

2020-03-19 13:12:40 135

原创 LeetCode-面试题57.和为s的连续正数序列

LeetCode-面试题57.和为s的连续正数序列输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]...

2020-03-15 11:41:38 134

原创 LeetCode-200. 岛屿数量

LeetCode-200. 岛屿数量给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3思路遍历二维数组,...

2020-03-15 10:52:59 220

原创 剑指Offer-替换空格

请实现一个函数,把字符串中的每个空格替换成`"%20"`。你可以假定输入字符串的长度最大是1000。注意输出字符串的长度可能大于1000。样例输入:"We are happy."输出:"We%20are%20happy."思路最朴素的想法就是,新开一个字符串,遍历原始字符串,遇到空格就在新字符串中追加“%20”。但是这种做法需要额外的空间,事实上可以利用双指针的思想在原始字符串...

2020-03-02 13:23:55 87

原创 LeetCode-347. 前 K 个高频元素

LeetCode-347. 前 K 个高频元素给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]思路TopK的问题优先想到用堆。堆的特点是,每一棵子树的root都是这棵子树中最大或最小的值。如果我们建立一个K大小...

2020-02-02 13:14:14 144

原创 堆排序

堆排序对于一个数组,我们可以用完全二叉树来表示.其第一个元素是它的根节点.下标i的元素,其左孩子节点是2i+1,右孩子节点是2i+2,根节点是(i-1)/2大根堆:任何一棵子树的root都是这棵子树的最大值小根堆:任何一棵子树的root都是这棵子树的最小值建堆(自下而上)给定一个数组,如果想利用堆结构去进行逻辑运算,首先要建立一个堆(大根堆or小根堆)。建堆的时候应该自行脑补一...

2020-02-01 12:45:13 124

原创 LeetCode-94. 二叉树的中序遍历

LeetCode-94. 二叉树的中序遍历给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]思路分为递归版本和非递归版本。递归/** * Definition for a binary tree node. * public class TreeNode { * ...

2020-01-31 12:50:05 187

原创 LeetCode-20. 有效的括号

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

2020-01-31 11:13:28 151

原创 LeetCode-108. 将有序数组转换为二叉搜索树

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

2020-01-30 16:37:55 111

原创 LeetCode-53. 最大子序和

LeetCode-53. 最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路使用动态规划求解。首先将要求解的大集合分解成一个个小集合。如果我们知道每个以nums数组中当前元素结尾的子...

2020-01-29 14:10:53 123

原创 LeetCode-64. 最小路径和

LeetCode-64. 最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路经典动态规划问题。在行进的过程中,我们应时刻记录每到一个...

2020-01-29 12:02:45 184

原创 LeetCode-213. 打家劫舍 II

LeetCode-213. 打家劫舍 II你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入...

2020-01-29 11:05:58 111

原创 LeetCode-198. 打家劫舍

LeetCode-198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房...

2020-01-29 10:23:37 141

原创 LeetCode-241. 为运算表达式设计优先级

LeetCode-241. 为运算表达式设计优先级给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: "2-1-1"输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2示例 2:输入: "2*3-4*5"输出: [-34...

2020-01-09 22:26:41 253

原创 LeetCode-540. 有序数组中的单一元素

LeetCode-540. 有序数组中的单一元素给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。示例 1:输入: [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: [3,3,7,7,10,11,11]输出: 10注意: 您的方案应该在 O(log n)时间复杂度和 O(1)空间复杂度中运行。思路这道题非常有意思。限制...

2020-01-08 00:17:56 282

原创 LeetCode-744. 寻找比目标字母大的最小字母

LeetCode-744. 寻找比目标字母大的最小字母给定一个只包含小写字母的有序数组letters 和一个目标字母 target,寻找有序数组里面比目标字母大的最小字母。数组里字母的顺序是循环的。举个例子,如果目标字母target = ‘z’ 并且有序数组为 letters = [‘a’, ‘b’],则答案返回 ‘a’。示例:输入:letters = ["c", "f", "j"]...

2020-01-07 21:07:26 141 1

原创 LeetCode-69. x 的平方根

LeetCode-69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。思路首先明确,所要寻找的x的开方...

2020-01-07 20:18:27 114

原创 LeetCode-452. 用最少数量的箭引爆气球

LeetCode-452. 用最少数量的箭引爆气球在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xe...

2020-01-06 21:17:51 168

原创 LeetCode-455. 分发饼干

LeetCode-455. 分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。...

2020-01-06 19:48:34 225

转载 Spring——使用注解开发

说明在spring4之后,想要使用注解形式,必须得要引入aop的包在配置文件当中,还得要引入一个context约束<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3....

2019-12-27 17:09:22 494

转载 Spring——自动装配

Bean的自动装配自动装配是使用spring满足bean依赖的一种方法spring会在应用上下文中为某个bean寻找其依赖的bean。Spring中bean有三种装配机制,分别是:在xml中显式配置;在java中显式配置;隐式的bean发现机制和自动装配。这里我们主要讲第三种:自动化的装配bean。Spring的自动装配需要从两个角度来实现,或者说是两个操作:组件扫描(...

2019-12-27 17:08:13 554

转载 Spring——依赖注入DI

依赖注入(DI)依赖注入(Dependency Injection,DI)。依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 .注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 .构造器注入我们在之前的案例4已经详细讲过了settet注入 (重点)要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属...

2019-12-27 17:06:30 740

转载 Spring——第一个Spring程序

第一个程序、对象创建方式、配置说明导入Jar包注 : spring 需要导入commons-logging进行日志记录 . 我们利用maven , 他会自动下载对应的依赖项 .<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc...

2019-12-27 17:03:25 187

转载 MyBatis——缓存

缓存简介什么是缓存 [ Cache ]?存在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率。什么样的数据能使用缓存?经常查询并且不经常改变的数据。Mybatis缓存...

2019-12-26 17:40:01 348

转载 MyBatis——动态SQL

介绍什么是动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句.官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 虽然在以前...

2019-12-26 17:38:53 137

原创 LeetCode-88. 合并两个有序数组

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

2019-12-26 11:24:31 80

原创 LeetCode-680. 验证回文字符串

LeetCode-680. 验证回文字符串给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: "aba"输出: True示例 2:输入: "abca"输出: True解释: 你可以删除c字符。思路首先,验证回文字符串使用的是双指针的思路。头尾指针指向的字符是否相同,如果到相遇之前都相同,那么说明是回文的。如何验证删除之后是回文字符串呢?还...

2019-12-26 10:31:36 135

转载 MyBatis—— 一对多查询

一对多的理解:一个老师拥有多个学生如果对于老师这边,就是一个一对多的现象,即从一个老师下面拥有一群学生(集合)!实体类编写@Datapublic class Student { private int id; private String name; private int tid;}@Data public class Teacher { p...

2019-12-25 22:07:09 134

转载 MyBatis——多对一查询

多对一的处理多对一的理解:多个学生对应一个老师如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师!数据库设计CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=INNODB DEFAULT ...

2019-12-25 22:06:08 107

原创 LeetCode-345.翻转字符串中的元音字母

LeetCode-345.翻转字符串中的元音字母编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: "hello"输出: "holle"示例 2:输入: "leetcode"输出: "leotcede"思路此题考查双指针思想以及对字符串API的熟练使用。我们可以利用双指针分别从字符串的头和尾部遍历整个字符串,遇到非元音字母就填充到结果集中,遇到元音字...

2019-12-25 11:12:02 269

空空如也

空空如也

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

TA关注的人

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