自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 问答 (1)
  • 收藏
  • 关注

原创 力扣696.计数二进制子串

给定一个字符串s,计算具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是连续的。重复出现的子串要计算它们出现的次数。法1:中心拓展法遍历所有可能的子串中心,该中心要符合以下条件:中心由两个不同的字符组成一共有n-1个双中心,遍历这些中心,如果元素相同,则跳过,如果不同,则该中心为一个符合条件的子串,ans++。随后向该中心的左右两侧同时扩张,看是否有str[left]==str[left+1]&&str...

2021-03-21 16:46:21 148

原创 力扣647.回文子串

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。示例 1:输入:"abc"输出:3解释:三个回文子串: "a", "b", "c"示例 2:输入:"aaa"输出:6解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"法1:中心拓展法遍历每一个可能的回文子串的中心,从中心同时向两边拓展,两边相等个数加一,两边不相等跳过这个中心。..

2021-03-21 16:37:21 137

原创 力扣205.同构字符串

给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以按某种映射关系替换得到t,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。示例 1:输入:s = "egg", t = "add"输出:true示例 2:输入:s = "foo", t = "bar"输出:false示例 3:输入:s = "paper", t =...

2021-03-21 16:02:17 163

原创 力扣242. 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?法1:哈希表比较s和 t的长度,不同返回false遍历字符串s,利用哈希表统计s中每个字.

2021-03-21 13:54:32 115

原创 JZ22.从上往下打印二叉树

从上往下打印出二叉树的每个节点,同层节点从左至右打印。法1:层次遍历import java.util.*;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { pu

2021-03-21 13:22:34 70

原创 JZ61.序列化二叉树

请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"1,",然后..

2021-03-21 13:20:06 143

原创 力扣84.柱状图中最大的矩形

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。法1:暴力解法//对于每一个高度heights[i],向左右两边分别寻找第一个低于它的高度//left_i和right_i,heights[i]*(right_i-left_i-1)为这个.

2021-03-21 13:05:29 114

原创 力扣150.逆波兰表达式求值 middle

根据 逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。法1:使用一个栈保存运算数遍历表达式,遇到运算数入栈,遇到运算符出栈前两个运算数,结果入栈最后返回栈顶元素。classSolution{publicintevalRPN(String[]tokens){...

2021-03-16 10:56:16 126

原创 力扣227.基本计算器

给你一个字符串表达式s,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。法1:使用一个变量preOp记录当前操作数之前的运算符。初始时为‘+’遍历表达式,若为数字,则计算出数字大小,根据其前面的运算符:+:入栈-:其相反数入栈*:出栈栈顶计算乘法后入栈/:出栈栈顶计算除法后入栈最后计算栈中所有元素的和并返回。classSolution{publicintcalculate(Strings){char[...

2021-03-16 10:55:36 203

原创 JZ59.按之字形顺序打印二叉树

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。法1:使用层次遍历(BFS),每层遍历时,当前出队节点入ans数组,判断当前层是奇数层还是偶数层,偶数层插入到ans数组最前面。ps:判断层,每层遍历之前获得一下当前队列中节点个数size,每次遍历size--,size为0则遍历完一层。遍历完一层将ans加入到res数组。import java.util.ArrayList;impor...

2021-03-15 10:33:27 109

转载 JZ23.二叉搜索树的后序遍历序列

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜素树)法1:递归 //二叉排序树,满足左子树所有节点<根节点<右子树所有节点 //同时,后续遍历最后一个节点为跟节点 //先取到根节点,然后根据大小关系划分左右子树节点,看看是否满足大小关系。 //递归的在左右子树节点上进行判断public class Solution {...

2021-03-15 10:27:36 113

原创 JZ21.栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)法1:用栈模拟用一个栈来模拟,初始时I,j分别指向pushA和popA的开始位置。当pushA[i]!=popA[j]时,将pushA[i]入栈,i++;否则,此时pushA[i]是入栈后立即出

2021-03-15 10:14:42 127

原创 力扣155.最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop()—— 删除栈顶的元素。top()—— 获取栈顶元素。getMin() —— 检索栈中的最小元素。法1:使用一个新栈,栈顶表示原栈中最小值,每次往原栈插入时,若小于等于新栈顶,则同时插入新栈,出栈时,若等于新栈顶,则同时出新栈。classMinStack{Stack<Integer>s1;Stack&...

2021-03-15 10:02:02 75

转载 力扣16. 最接近的三数之和

法1:排序+双指针classSolution{publicintthreeSumClosest(int[]nums,inttarget){intn=nums.length;Arrays.sort(nums);//intminAbs=10000000;//2147483647intminAbs=10000000;for(inti=0;i<n;i++...

2021-03-07 19:42:09 77

原创 力扣15. 三数之和

给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。法1:排序+双指针本题的难点在于如何去除重复解。为了保证搜索出来的三元组不重复,先对数组nums进行排序,同时每层循环进行判断,当前遍历到的数不等于本层循环上一个遍历到的数时才进行下一步遍历。算法流程:特判,对于数组长度 n,如果数组为 null 或者数组长度小于 3,返回 [...

2021-03-07 19:32:31 90

原创 力扣1. 两数之和

给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。法1:暴力搜索intt_target=0;for(inti=0;i<nums.length;i++){t_target=target-nums[i];for(intj=i+1;j<nums.length;j++...

2021-03-07 19:17:44 121

原创 力扣81. 搜索旋转排序数组 II

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,0,1,2,2,5,6]可能变为[2,5,6,0,0,1,2])。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回true,否则返回false。示例1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例2:输入: nums = [2,5,6,0,0,1,2], target = 3输出: false进阶:这是 搜索旋转排序数...

2021-03-07 18:58:11 104

原创 80. 删除排序数组中的重复项 II

给定一个增序排列数组 nums ,你需要在 原地 删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。法1:和上一题类似,只不过添加一个变量count统计当前元素出现的次数,增加一个条件:重复次数少于两次的时候当前元素也移动到无两个以上重复元素的尾。classSolution{publicintremoveDuplicates(int[]nums){...

2021-03-07 18:32:19 98

原创 力扣26. 删除排序数组中的重复项

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。法1:设置一个count记录重复的元素的个数,temp记录重复的元素。初始值count=0,temp=nums[0]从第二个元素开始,每遍历一个元素,如果重复则count++,否则更新temp。当前元素前移count位。classSolution{publicintre...

2021-03-07 18:31:58 127

原创 JZ28.数组中出现次数超过一半的数

法1:哈希表遍历数组,数组元素作为key,出现次数作为值,存入哈希表遍历哈希表,若某个值大于n/2,返回其keyimport java.util.HashMap;public class Solution { public int MoreThanHalfNum_Solution(int [] array) { //哈希表 HashMap<Integer,Integer> hash = new HashMap<Integer,In..

2021-03-07 18:31:36 75

原创 JZ19.顺时针打印数组

法1:边界逼近import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { //收缩边界 ArrayList<Integer> list = new ArrayList<Integer>(); if(matrix==null||matrix.lengt...

2021-03-07 18:30:57 217

原创 JZ13.调整数组顺序使奇数位于偶数前面

法1:队列//遍历数组,遇到偶数入队列,奇数往前提队列中元素个位置,最后出队列依次入数组import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @return int整型一维数组 */ public int[] reOrderArray ..

2021-03-07 18:30:21 67

原创 JZ4.重建二叉树

二叉树的前序遍历第一个是根节点,中序遍历中,根节点左右分别为左右子树节点。1.获取根节点,建立根节点2.查找根节点在中序中的下标3.划分左子树右子树的前序和中序遍历区间,递归的构建当前根节点的左右子树。/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x)..

2021-03-07 18:20:21 116

原创 JZ1.二维数组中的查找

在leetcode做过,之前的文章有写。public class Solution { public boolean Find(int target, int [][] array) { //1.二分法:沿对角线遍历,分别对当前元素所在的行和列进行二分查找 //2.从右上角开始遍历,若当前元素小于目标,则下移,若大于则左移。直到走到左下或越界 int m = array.length,n = array[0].length;

2021-03-06 15:37:05 51

原创 JZ51.构建乘积数组

法1:import java.util.ArrayList;public class Solution { public int[] multiply(int[] A) { //暴力 int n = A.length; if(n<=1) return null; int[] B = new int[n]; for(int i=0;i<n;i++){ ...

2021-03-06 15:35:32 94

原创 JZ50.数组中重复的数字

法1:哈希表//建立一个长度和number相同的数组counts//遍历number,将counts[number[i]]++//遍历number,若counts[number[i]]>1,则找到了第一个重复数字//遍历完也没找到,返回-1import java.util.*;public class Solution { public int duplicate (int[] numbers) { // write code here ..

2021-03-06 15:11:22 82

原创 JZ42 和为S的两个数字

法1:暴力,两层循环遍历import java.util.ArrayList;public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { //暴力 int n = array.length; ArrayList<Integer> res = new ArrayList<Integer&g..

2021-03-06 15:06:33 65

原创 JZ37.数字在排序数组中出现的次数

法1:暴力略法2:二分法查找到目标k,然后往左往右分别查找其上下边界。法3:二分法直接查找其下界,上界。public class Solution { public int GetNumberOfK(int [] array , int k) { //二分搜索,得到上下界相减 //下界:如果存在目标,指向第一个目标,否则指向大于目标的第一个值 /* 求下界: 若mid==k,则已..

2021-03-06 15:00:23 66

原创 JZ7.斐波那契数列

斐波那契数列第一项为0,第二项为1,第三项为1,其余每项皆为前两项之和。求斐波那契数列中第n个数。法1:递归public class Solution { public int Fibonacci(int n) { if(n==0) return 0; if(n==1) return 1; return Fibonacci(n-1)+Fibonacci(n-2); }}法2:动态规划

2021-03-06 14:40:01 112

原创 力扣769.最多能完成排序的块

法1:要考虑数组下标和元素值的关系。升序排序后,数组下标和元素值相等。要想使每个块划分后,排完序其每个元素的值和其下标相等,那么划分块时,当前块的最大值应该等于当前划分位置。此时,首先最大值排序之后会在当前划分位置,并且,块内元素都比它小,且唯一,也就是说,它们的值为【块开始下标~块结束下标】因此将该块升序排序后,每个元素都和其下标相等。具体的://从左往右遍历数组,维护当前最大值//当当前最大值等于当前下标时,可以分割一次classSolution{...

2021-03-06 14:26:48 160

原创 力扣240.搜索二维矩阵II

法1:我们可以从右上角开始查找,若当前值大于待搜索值,我们向左移动一位;若当前值小于待搜索值,我们向下移动一位。如果最终移动到左下角时仍不等于待搜索值,则说明待搜索值不存在于矩阵中。classSolution{publicbooleansearchMatrix(int[][]matrix,inttarget){intm=matrix.length;if(m==0)returnfalse;...

2021-03-06 14:08:55 120

原创 力扣48.旋转图像

方法1:观察示例1中的矩阵变换,可以看出,第一行变换后变成了倒数第一列,而本行中元素的顺序没有改变。同样的,第二行变为倒数第二列,第三行变为倒数第三列。因此,我们有:matrix[col][n-row-1] = matrix[row][col] 式(1)因此,可以使用一个临时的辅助数组存储旋转后的结果,最后再将辅助数组复制到原数组。法2:题目中要求在不使用额外空间的情况下旋转矩阵。法1中,有:matrix[col][n-row-1] = matr...

2021-03-06 14:03:34 130

原创 力扣448.找到所有数组中消失的数字

法1:数组元素取值范围为1~n,数组大小为n,因此可以用另一个长度为n的数组counts统计数组元素出现的次数,再遍历一遍counts数组,输出数组值为0的下标。时间复杂度O(n),空间O(n)。classSolution{publicList<Integer>findDisappearedNumbers(int[]nums){//取值范围1-n,元素个数n//使用一个大小为n+1的数组counts记录每个元素出现的次...

2021-03-06 13:33:25 102

原创 求主元素问题的一些总结

前言最近一些同学问我一些关于数据结构的问题,在此做个总结,今天这篇是关于主元素的。一些简单的解法只给出思想,其他我感觉比较好的方法奉上代码。问题描述给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。解法1简单粗暴的两次循环,记录每个值出现多少次,最后比较次数得到主元素解法2使用排序算法(如快速排序),将数组排序,这样处于中间位置的一定是主元素(如果存在)解法3使用求中位数的思想,因为主元素是数量大于数组元素个数一半的数,所以这个数组的中位数一定是主元素,因

2020-10-17 13:47:45 1158 2

原创 【算法学习笔记】动态规划_最长上升子序列

描述一个数的序列bi,当b1<b2< ... <bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2, ...,aN),我们可以得到一些上升的子序列(ai1,ai2, ...,aiK),这里1 <=i1<i2< ... <iK<= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上...

2019-09-30 10:14:56 557

转载 避免 Hibernate 中用get/load方法获取的实体调用set方法后自动更新

转自:https://blog.csdn.net/yang_lover/article/details/450571811、问题症状描述      最近在处理一个新需求问题,代码的大致逻辑是获取一个实体对象,调用该对象的set方法设置其中的某些字段,然后把修改后的实体作为参数供其他地方调用,根据返回值来决定是否更新这个实体到数据库中。      按照这个思路调用了系统中的getByid方法,结果测...

2018-05-07 15:04:45 382

原创 tomcat虚拟路径配置

开发web项目时,最好数据与代码分离,将文件保存在非项目目录下。这个时候在页面中访问文件的简单的解决办法是配置Tomcat虚拟路径,具体如下:在Tomcat7的安装目录下找到conf目录,在该目录下有一个server.xml文件,这个文件的任务是配置整个服务器信息。例如修改端口号,添加虚拟主机…… 打开这个文件,找到HOST标签,在这个标签中处插入以下代码:&lt;Context path="/y...

2018-05-07 12:14:18 169

原创 Java web非项目目录下的文件(图片,视频)读取

最近在做毕业设计时,需要把文件(主要是图片和视频)放到网页上。因为不想项目太臃肿,本着数据与代码分离的想法,我把文件放在了非项目目录(磁盘目录),并在数据库中存放的也是磁盘目录(如G:\XX\XXX..)。这样一来在读取时就遇到一些问题,解决方法记录如下:(1)图片的读取在jsp页面中用&lt;img&gt;标签显示图片,其src属性支持流,于是解决思路是写一个servlet,用输入流读入图片,再...

2018-05-07 12:09:40 2787

转载 【转载】简单词法分析器的实现

词法分析器的C++实现

2017-06-11 16:38:55 681

原创 【C++学习之路】一 visual studio下载安装配置,第一个C++代码

visual studio 2015下载安装配置 第一个C++程序

2017-06-10 23:05:07 573

空空如也

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

TA关注的人

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