自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 525.连续数组

题目描述给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。注意:0 ≤ x, y < 231.示例1输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例2输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。提示1 <= nums.length <= 105nums[

2021-06-04 09:55:05 130

原创 LeetCode 461. 汉明距离

题目描述两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。思路这道题求的是两个数字对应二进制位不同的位置的数目,那么只需要遍历这两个的二进制形式,依次比较对应位置的元素是否相同,相同则最终结果加一

2021-05-27 09:59:30 163

原创 LeetCode 1190. 反转每对括号间的子串

题目描述给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1输入:s = "(abcd)"输出:"dcba"示例 2输入:s = "(u(love)i)"输出:"iloveu"示例 3输入:s = "(ed(et(oc))el)"输出:"leetcode"示例 4输入:s = "a(bcdefghijkl(mno)p)q"输出:"apmnolkjihgf

2021-05-26 16:39:34 200

原创 LeetCode每日一题 2021/5/24 664. 奇怪的打印机

题目描述给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ,其中 queries[i] = [xi, mi] 。第 i 个查询的答案是 xi 和任何 nums 数组中不超过 mi 的元素按位异或(XOR)得到的最大值。换句话说,答案是 max(nums[j] XOR xi) ,其中所有 j 均满足 nums[j] <= mi 。如果 nums 中的所有元素都大于 mi,最终答案就是 -1 。返回一个整数数组 answer 作为查询的答案,其中 answer.length

2021-05-24 12:16:13 166

原创 LeetCode每日一题 2021/5/23 1707. 与数组中元素的最大异或值

题目描述给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ,其中 queries[i] = [xi, mi] 。第 i 个查询的答案是 xi 和任何 nums 数组中不超过 mi 的元素按位异或(XOR)得到的最大值。换句话说,答案是 max(nums[j] XOR xi) ,其中所有 j 均满足 nums[j] <= mi 。如果 nums 中的所有元素都大于 mi,最终答案就是 -1 。返回一个整数数组 answer 作为查询的答案,其中 answer.length

2021-05-24 11:50:38 85

原创 字典树:1707. 与数组中元素的最大异或值

题目描述给你一个由非负整数组成的数组 nums 。另有一个查询数组 queries ,其中 queries[i] = [xi, mi] 。第 i 个查询的答案是 xi 和任何 nums 数组中不超过 mi 的元素按位异或(XOR)得到的最大值。换句话说,答案是 max(nums[j] XOR xi) ,其中所有 j 均满足 nums[j] <= mi 。如果 nums 中的所有元素都大于 mi,最终答案就是 -1 。返回一个整数数组 answer 作为查询的答案,其中 answer.length

2021-05-24 11:45:26 125

原创 字典树:421. 数组中两个数的最大异或值

题目描述给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。进阶:你可以在 O(n) 的时间解决这个问题吗?示例 1输入:nums = [3,10,5,25,2,8]输出:28解释:最大运算结果是 5 XOR 25 = 28.示例 2输入:nums = [0]输出:0示例 3输入:nums = [2,4]输出:6示例 4输入:nums = [8,10,2]输出:10示例 5输入:num

2021-05-24 11:02:00 257

原创 字典树:208. 实现 Trie (前缀树 / 字典树)

题目描述Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。boolean starts

2021-05-23 15:01:13 117

原创 LeetCode每日一题 2021/5/22 810. 黑板异或游戏

题目描述黑板上写着一个非负整数数组 nums[i] 。Alice 和 Bob 轮流从黑板上擦掉一个数字,Alice 先手。如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败。 (另外,如果只剩一个数字,按位异或运算得到它本身;如果无数字剩余,按位异或运算结果为 0。)换种说法就是,轮到某个玩家时,如果当前黑板上所有数字按位异或运算结果等于 0,这个玩家获胜。假设两个玩家每步都使用最优解,当且仅当 Alice 获胜时返回 true。示例输入: nums = [1

2021-05-22 11:35:27 340 5

原创 Spring学习笔记:json&Ajax

1. js 对象var student = {lastName:"张三",age:18};var student = {lastName:"张三",age:18,car:{pp:“宝马”,price:“30000$”},infos:[{bookName:“西游记”,price:98.98},18,true]};//一个复杂的js对象var student = { lastName : "张三", age : 18, car : { pp : "宝马", price :

2021-05-21 17:32:20 152 1

原创 Spring学习笔记:Filter&Listener

一. Filter什么是Filter?Servlet、Filter、Listener(三大组件);Servlet:处理请求Filter:过滤拦截请求Listener:监听器三大组件基本都需要在web.xml中进行注册;除过Listener中的两个(活化钝化监听器,绑定解绑监听器)需要javaBean实现,不注册外,剩下的三大组件都需要注册使用过滤器的使用步骤;实现 FIlter 接口,去 web.xml 进行配置;Filter配置<filter> &lt

2021-05-21 16:29:19 141

原创 Spring学习笔记:Cookie&Session

一. Cookie什么是Cookie?Cookie 是浏览器端保存少量数据的一种技术特点:保存少量数据纯文本保存当前网站的cookie;每次访问这个网站都会携带;默认不支持中文使用服务器如何给浏览器发送保存cookieCookie cookie = new Cookie("username","zhangsan");response.addCookie(cookie);响应头中命令浏览器保存一个Cookie,如下: Content-Length:20

2021-05-21 16:07:57 324

原创 Spring学习笔记:前言

今天正式开始学习 Spring,在学习 Spring 之前,建议同学们先学一下前端,不需要精通,但起码要看得懂前端代码。关于前端的学习,网上有很多资源,同学们可以自行去 b 站、github 等查找。在学习 Spring 之前,由三个重要的知识点需要先了解一下Cookie&SessionjsonAjax...

2021-05-21 15:31:27 114

原创 LeetCode每日一题 2021/5/21 1035. 不相交的线

关于这道题,同学们可以看我之前的文章动态规划之子序列:1035.不相交的线这道题是一道经典的动态规划子序列问题。关于动态规划问题,我将其分为子序列系列、路径系列、股票系列、打家劫舍系列、背包问题系列。接下来对每一个系列,我都会详细地讲解,希望能帮助同学们轻松掌握动态规划问题。...

2021-05-21 15:00:59 83

原创 动态规划之子序列:1035.不相交的线

题目描述在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足:nums1[i] == nums2[j]且绘制的直线不与任何其他连线(非水平线)相交。请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。示例 1输入:nums1 = [1,4,2], nums2 = [1,2,4]输出:2解释:可以画出两条不

2021-05-21 14:52:08 182 2

原创 动态规划之子序列:1143. 最长公共子序列

题目描述给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。示例 1输入:text1 = "abcde", text2 = "

2021-05-21 14:37:57 154

原创 动态规划之子序列:718. 最长重复子数组

题目描述给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例1输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出:3解释:长度最长的公共子数组是 [3, 2, 1] 。提示:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100思路注意题目中说的子数组,其实就是连续子序列。这种问题动规最拿手,动规五部曲分析如下:确定dp数组(dp table)以及下标的含义d

2021-05-21 14:18:02 116

原创 动态规划之子序列:674. 最长连续递增序列

题目描述给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。示例1输入:nums = [1,3,5,4,7]输出:3解释:最长连续递增序列是 [1,3,5], 长度为3。

2021-05-21 10:55:11 245

原创 动态规划之子序列:300.最长递增子序列

2021年5月21,今天 LeetCode 的每日一题是 1035. 不相交的线,这道题属于动态规划的子序列问题。想到这,决定先写一个动态规划子序列的专题。在这个专题中,我将通过 LeetCode 中的12道题目,手把手教你掌握动态规划的子序列问题。废话不多说,上干货。300.最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的

2021-05-21 10:22:39 92

原创 LeetCode每日一题 2021/5/20 692. 前K个高频单词

题目描述给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例1输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 注意,按字母顺序 "i" 在 "love" 之前。示例2输入: ["the", "day", "is",

2021-05-20 11:10:23 239

原创 LeetCode每日一题 2021/5/19 1738. 找出第 K 大的异或坐标值

题目描述给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。矩阵中坐标 (a, b) 的 值 可由对所有满足 0 <= i <= a < m 且 0 <= j <= b < n 的元素 matrix[i][j](下标从 0 开始计数)执行异或运算得到。请你找出 matrix 的所有坐标中第 k 大的值(k 的值从 1 开始计数)。示例1输入:matrix = [[5,2],[1,6]], k = 1输出:7解释:坐标 (

2021-05-19 15:06:55 155 3

原创 LeetCode每日一题 2021/5/17 993. 二叉树的堂兄弟节点

题目描述在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。示例1输入:root = [1,2,3,4], x = 4, y = 3输出:false示例2输入:root = [1,2,3,null,

2021-05-19 14:26:59 131 2

原创 LeetCode每日一题 2021/5/18 1442. 形成两个异或相等数组的三元组数目

题目描述给你一个整数数组 arr 。现需要从数组中取三个下标 i、j 和 k ,其中 (0 <= i < j <= k < arr.length) 。a 和 b 定义如下:a = arr[i] ^ arr[i + 1] ^ … ^ arr[j - 1]b = arr[j] ^ arr[j + 1] ^ … ^ arr[k]注意:^ 表示 按位异或 操作。请返回能够令 a == b 成立的三元组 (i, j , k) 的数目。示例1输入:arr = [2,3,1,6,

2021-05-18 11:37:44 85

原创 LeetCode刷题之双指针 18. 四数之和

题目描述给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例1输入:nums = [1,0,-1,0,-2,2], target = 0输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]示例2输入:nums = [], target = 0输出:[]解

2021-05-18 10:24:59 63

转载 LeetCode刷题之双指针 15. 三数之和

题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例2输入:nums = []输出:[]示例3输入:nums = [0]输出:[]解法一:哈希法思路两层for循环就可以确定 a 和b 的数值了,可以使用哈希法来

2021-05-18 10:04:49 162

原创 LeetCode刷题之链表 面试题 02.07. 链表相交

题目描述给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。示例1输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注

2021-05-17 18:18:53 99

原创 LeetCode刷题之链表 24. 两两交换链表中的节点

题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例1输入:head = [1,2,3,4]输出:[2,1,4,3]思路建议使用虚拟头结点,这样会方便很多,要不然每次针对头结点(没有前一个指针指向头结点),还要单独处理。初始时,cur指向虚拟头结点,然后进行如下三步:操作之后,链表如下:看这个可能就更直观一些了:代码class Solution { public ListNode swa

2021-05-17 17:30:20 105

原创 LeetCode刷题之链表 19. 删除链表的倒数第 N 个结点

题目描述给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例1输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]思路这道题是双指针的经典应用首先定义一个虚拟节点,它指向链表的头节点head定义双指针 fast 和 slow,均初始化为虚拟节点fast 向后移动 n 个位置fast 和 slow 同时向后移动,直至 fast 到达链表的尾部, 此时 slow 就到达了倒数第 n 个节点的位置要想删除

2021-05-17 16:59:30 127

原创 二叉树的层序遍历,看这一篇就搞定了

层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。这种遍历的方式和我们之前讲过的都不太一样。需要借用一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑,而是用栈先进后出适合模拟深度优先遍历也就是递归的逻辑。而这种层序遍历方式就是图论中的广度优先遍历,只不过我们应用在二叉树上。102.二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)示例:二叉树:[3,9,20,null,null,15,7]返回其层序遍历结果:clas

2021-05-17 15:25:43 1723

原创 LeetCode刷题之链表 第142题 环形链表Ⅱ

题目描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。示例输入: head = [3,2,0,-4], pos = 1输出: 返回索引为 1 的链表节点方法一:HashSet思路新建一个ListNode类型的HashSet,遍历链表的节点,并添加到Ha

2021-05-17 10:09:23 83

原创 十大排序算法的代码实现

点击此链接

2021-04-23 17:01:32 70

原创 十大经典排序算法

稳定的排序:冒泡排序、插入排序、归并排序、计数排序、桶排序、基数排序不稳定的排序:选择排序、快速排序、堆排序、希尔排序

2021-04-23 15:48:57 40

原创 JAVA中如何用Math.max()和Math.min()求三个数中的最大数和最小数

max = Math.max(a, Math.max(b, c));min = Math.min(a, Math.min(b, c))

2021-04-22 11:10:38 4422

原创 String类的substring()方法

截取字符串,在java语言中的用法1、 public String substring(int beginIndex)返回一个新字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。参数:beginIndex - 开始处的索引(包括),返回:指定的子字符串,异常:如果 beginIndex 为负或大于此 String 对象的长度,则抛出IndexOutOfBoundsException ‘例:"unhappy".substring(2) "mybaby"

2021-04-21 10:58:25 264

原创 java中Arrays.sort()对二维数组进行排序

int [][]a = new int [5][2];//定义一个二维数组,其中所包含的一维数组具有两个元素对于一个已定义的二位数组a进行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升序排序(即a[][0]),若第一个元素相等,则按照第二个元素进行升序排序(a[][1])。(特别注意,这里的a[][0]或者a[][1]在java中是不能这么定义的,这里只是想说明是对于某一个一维数组的第0或1个元素进行排序)Arrays.sort(a, new Comparator<int[]>

2021-04-19 16:35:41 946 1

原创 Java中==和equals的区别

== 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值,对于引用类型就是比较内存地址equals属于java.lang.Object类里面的方法,如果该方法没有被重写过默认也是==String等类的equals方法是被重写过的,而且String类在日常开发中用的比较多,久而久之,形成了equals是比较值的错误观点。具体要看自定义类里有没有重写Object的equals方法来判断。通常情况下,重写equals方法,会比较类中的相应属性是否都相等。...

2021-04-07 20:32:06 47

原创 堆和栈:Java内存解析

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在

2021-04-07 16:41:10 63 2

原创 LeetCode刷题之栈与队列 232 用栈实现队列

题目描述请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, siz

2021-04-05 22:02:16 93

原创 一种写法搞定二叉树的前中后序遍历(非递归法)

题目描述给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例1输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例二输入: "aba"输出: False示例三 输入: "abcabcabcabc"输出: True解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。)方法:KMP算法对应 java 代码class

2021-04-05 21:18:19 73

原创 LeetCode刷题之字符串 28 实现strStr() (KMP算法)

题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例1输入: haystack = "hello", needle = "ll"输出: 2示例二输入: haystack = "aaaaa", needle = "bba"输出: -1方法一:暴力解法对应Java代码class Solution { publ

2021-04-05 21:13:38 74

空空如也

空空如也

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

TA关注的人

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