![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 70
Paul. strong no fat
这个作者很懒,什么都没留下…
展开
-
找到字符串中所有字母异位词
找到字符串中所有字母异位词一、题目描述二、套入模板一、题目描述leetcodeOJ链接: 找到字符串中所有字母异位词二、套入模板滑动窗口技巧总结:代码实现class Solution { public List<Integer> findAnagrams(String s, String p) { // 记录结果 List<Integer> list=new ArrayList<>(); Has原创 2022-01-01 22:19:17 · 183 阅读 · 0 评论 -
滑动窗口总结
滑动窗口总结一、滑动窗口解题模板二、滑动窗口例题2.1最长无重复数组2.2一、滑动窗口解题模板int left=0;int right=0;while(right<s.length()){ //扩大窗口 window.add(s[right]) right++; while(){ window.remove(s[remove]); left--;//缩小窗口 }}二、滑动窗口例题2.1最长无重复数组import java.util.*;public class原创 2022-01-01 23:11:03 · 987 阅读 · 4 评论 -
最小覆盖子串
最小覆盖子串一、题目描述二、模板套入一、题目描述leetcodeOJ链接: 最小覆盖子串二、模板套入滑动窗口模板介绍:代码实现:class Solution { public String minWindow(String s, String t) { if(s.length()<t.length()){ return ""; } HashMap<Character,Integer原创 2022-01-01 23:06:55 · 468 阅读 · 0 评论 -
字符串的重新排列
字符串的重新排列一、题目描述二、套入模板一、题目描述LeetCodeOJ链接: 字符串的重新排序二、套入模板滑动窗口模板介绍代码实现class Solution { public boolean checkInclusion(String s1, String s2) { HashMap<Character,Integer> need=new HashMap<>(); HashMap<Character,Intege原创 2022-01-01 22:25:22 · 938 阅读 · 0 评论 -
最长无重复数组
最长无重复数组一、题目描述二、套用模板一、题目描述leetcodeOJ链接 :最长无重复数组二、套用模板滑动窗口模板总结,请参考代码实现class Solution { public int lengthOfLongestSubstring(String s) { HashMap<Character,Integer> map=new HashMap<>(); int left=0; int right=0;原创 2022-01-01 22:04:54 · 305 阅读 · 0 评论 -
差分数组技巧
一、差分数组适用题型,和技巧前缀和数组:适用于原始数组不会被修改的情况下,频繁查询某个区间的累加和差分数组:主要适⽤场景是频繁对原始数组的某个区间的元素进⾏增减(比如:给你和数组arr,然后再下标0-4之间各元素加一,2-5之间各个元素减2,求最终的原数组)差分数组技巧1.构建差分数组(diff),diff[0]=nums[0],之后diff[i]=nums[i]-nums[i-1]int[] diff = new int[nums.length];// 构造差分数组diff[0] = n原创 2021-12-30 22:58:01 · 1180 阅读 · 5 评论 -
前缀和数组
前缀和数组一、区域和检索-数组不可变二、和为K的子数组一、区域和检索-数组不可变区域和检索-数组不可变preSum[i]:原数组起始下标到i-1下标的所有数之和class NumArray { private int preSum[]; public NumArray(int[] nums) { //构建前缀和数组 preSum=new int [nums.length+1]; // preSum[0] = 0,便于计算累加和原创 2021-12-29 21:38:44 · 239 阅读 · 4 评论 -
动态规划问题
动态规划一、动态规划题的特点二、动态规划的解题步骤三、动态规划的经典例题3.1斐波那契数列3.2零钱兑换一、动态规划题的特点把原来的问题分解成了几个相似的子问题。所有的子问题都只需要解决一次。储存子问题的解。题型一般是求最值、核心穷举二、动态规划的解题步骤状态定义状态间的转移方程定义状态的初始化返回结果三、动态规划的经典例题3.1斐波那契数列斐波那契3.2零钱兑换...原创 2021-12-11 19:51:17 · 627 阅读 · 3 评论 -
动规零钱兑换
动态规划解决零钱兑换一、动态规划解题步骤二、代码零钱兑换OJ一、动态规划解题步骤1、确定 base case,这个很简单,显然⽬标⾦额 amount 为 0 时算法返回 0,因为不需要任何硬币就已经凑出⽬标⾦额了。2、确定「状态」,也就是原问题和⼦问题中会变化的变量。由于硬币数量⽆限,硬币的⾯额也是题⽬给定的,只有⽬标⾦额会不断地向 base case 靠近,所以唯⼀的「状态」就是⽬标⾦额 amount。3、确定「选择」,也就是导致「状态」产⽣变化的⾏为。⽬标⾦额为什么变化呢,因为你在选择硬原创 2021-12-11 19:50:25 · 937 阅读 · 4 评论 -
斐波那契数列
斐波那契数列的两种解法一、暴力递归二、dp思想的动规斐波那契数列OJ链接一、暴力递归class Solution { public int fib(int n) { // 初始值 if(n <= 0) return 0; if(n == 1 || n == 2) return 1; // F(n)=F(n-1)+F(n-2) return fib(n - 1原创 2021-12-11 19:25:10 · 1326 阅读 · 3 评论 -
二叉树<一>
二叉树1.二叉树的特点以及两种特殊的二叉树1.1二叉树的特点1.2两种特殊的二叉树2.二叉树的性质3.二叉树的遍历3.1先序、中序、后续的文字描述3.2先序遍历的代码实现3.3中序遍历的代码实现3.4后序遍历的代码实现1.二叉树的特点以及两种特殊的二叉树1.1二叉树的特点二叉树中,任意一个节点的度要小于等于2*度 :每一个节点的子节点数量称之为度*节点 : 在树结构中,每一个元素称之为节点1.2两种特殊的二叉树满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就原创 2021-10-13 09:57:07 · 104 阅读 · 1 评论 -
一、栈和队列
栈和队列一、栈1.1栈的概念1.2栈的常用函数1.3代码实现栈二、队列2.1队列的概念2.2队列的常用函数2.3队列的实现三、栈队列相关面试题3.1 括号匹配问题。3.2 用队列实现栈。3.3 用栈实现队列。3.4 实现一个最小栈。3.5 设计循环队列。一、栈1.1栈的概念栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操原创 2021-10-19 18:49:41 · 116 阅读 · 3 评论 -
顺序表和链表
顺序表和链表一、顺序表1.顺序表的概念2.顺序表的代码实现二、链表1.链表的概念2.链表的代码实现三、相关面试题1.移除链表中的元素2.反转链表3.链表的中间结点4.链表中倒数第k个结点5.合并两个有序链表6.链表分割一、顺序表1.顺序表的概念顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:- 静态顺序表:使用定长数组存储。- 动态顺序表:使用动态开辟的数组存储。2.顺序表的代码实现package c原创 2021-10-26 12:24:03 · 295 阅读 · 5 评论 -
二叉数<二>
二叉树一、二叉树相关函数的实现1.求二叉树的结点个数2.求二叉树叶子结点的个数3.求二叉树第k层结点的个数4.求二叉树的高度5.求二叉树中值为val的所在结点6.判断该二叉树是不是满二叉树二、二叉树的基础面试题2.1 检查两颗树是否相同。2.2判断是不是另一颗的子树2.3二叉树的最大深度2.4判断二叉树 是否是平衡二叉树2.5判断是否是对称二叉树三、二叉树的进阶面试题3.1 二叉树的构建及遍历。3.2 二叉树的分层遍历 。3.3 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 。3.4 二叉树搜索原创 2021-11-08 15:52:27 · 490 阅读 · 0 评论 -
二叉搜索树
二叉搜索树一、二叉搜索树的概念二、二叉搜索树的查找2.1文字描述2.2代码实现三、二叉搜索树的插入3.1文字描述3.2代码实现四、二叉搜索树的删除4.1文字描述4.2代码实现一、二叉搜索树的概念二叉搜索树又称二叉排序树,它或者是一颗空树,或者是具有一下性质的二叉树:若它的左子树不为空,则左子树上所有结点的值都小于根节点若它的右子树不为空,则右子树上所有结点的值都大于根节点它的左右子树也分别为二叉搜索树该树上没有值相同的结点二、二叉搜索树的查找2.1文字描述判断根节点是否为空,若不为原创 2021-11-13 21:58:29 · 112 阅读 · 3 评论 -
Set和Map
Set和Map一、关于集合的体系结构二、Map的使用2.1关于Map.Entry一、关于集合的体系结构Set是继承自Collection的接口类,Set中只存储了Key。Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且K一定是唯一的,不能重复。二、Map的使用2.1关于Map.Entry<K, V>的说明Map.Entry<K, V> 是Map内部实现的用来存放<key, value>键值对原创 2021-11-15 23:35:50 · 1016 阅读 · 5 评论