什么是滑动窗口思想:滑动窗口是一种算法技巧,用于解决一类涉及子串/子数组的问题。滑动窗口可以通过定义两个指针(通常是左右指针或起始和结束指针),来构建一个可变大小的窗口,从而在给定的数据结构(如字符串或数组)上移动窗口,并实时更新窗口内的状态。滑动窗口算法的基本思想是:初始化窗口的左右边界,使窗口包含初始的元素或子串。不断移动右边界,扩大窗口,同时根据问题要求进行相应的操作(如计算最小值、最大值、求和等)。如果窗口内的状态满足某个条件,尝试缩小窗口,即移动左边界,继续进行步骤2。重复步骤2和3,直到右边界到达数据结构的末尾。滑动窗口主要分为两大类,一种是长度固定的滑动窗口,一种是长度动态变化的
📚博客主页:爱敲代码的小杨.✨专栏:《JavaSE语法》❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!文章目录1.题目描述示例1:示例2:提示2.思路3.代码1.题目描述给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回null。图示两个链表在节点c1开始相交:题目数据保证整个链式结构中不存在环。注意,函数返回结果后,链表必须保持其原始结构。自定义评测:评测系统的输入如下(你设计的程序不适用此输入):intersectVal-相交的起始节点的值。如果不存在相
0.引言es的java客户端不太友好的语法一直饱受诟病,书写一个查询语句可能需要书写一大串的代码,如果能像mybatis–plus一样,支持比较灵活方便的语句生成器那就好了。于是为elasticsearch而生的ORM框架Easy-Es诞生了,使用及其方便快捷,今天我们就一起来学习easy-es,对比看看原生java-client方便之处在哪儿。1.Easy-Es简介Easy-Es是以elasticsearch官方提供的RestHighLevelClient为基础,而开发的一款针对es的ORM框架,类似于es版的mybatis-plus,可以让开发者无需掌握es复杂的DSL语句,只要会mysq
1矩阵置零给定一个 mxn 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。示例1:输入:matrix=[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]方法一:使用标记数组新建两个标记数组rowcolumn第一次遍历数组记录数组中每一行每一列中的值是否为0第二次遍历数组将数组中0所在的行和列设置为0classSolution{publicvoidsetZeroes(int[][]matrix){intm=matrix.length;intn=matrix[0].length;//新建两个数组记录
字符串压缩字符串压缩思路一(双指针顺畅版)思路二(sprintf函数巧解版)Thanks♪(・ω・)ノ谢谢阅读下一篇文章见!!!字符串压缩来看题目:根据题目所说,我们需要完成函数书写,保证返回一个相对较小的字符数组:如果压缩后比原字符串小,则返回压缩字符串,否则返回原字符串。思路一(双指针顺畅版)本思路一步一步操作,逐步完成任务先确认字符串长度是否小于2,小于直接返回(因为压缩字符串长度至少是2)然后定义双指针和计数位开始遍历:*fast与*slow不相等则fast向后移动然后记录重复次数重复次数分位数进入数组slow到fast位置,计数归零重复3-6直到遍历结束char*compressSt
【岛屿数量】给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。思路:很经典也很基础的图搜题,bfs或者dfs都行,这题先用dfs写一下。每次开启函数(而不是被递归调用),会将当前起点能接触到的所有陆地都访问一次再退出,记录函数开启的次数即可。对每个格子,我们向上下左右四个方向拓展,对其中位置合法的、是陆地的、还没被访问过的格子进行递归调用,直到所有能访问的格子都访问完毕。代码其实跟树的dfs也大同小异,区别只在出口的判断条件,以及可能递归
题目:反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]提示:链表中节点的数目范围是 [0,5000]-5000代码:publicListNodereverseList(ListNodehead){if(head==null){returnnull;}ListNodelast=head;ListNodenode=head.next;ListNodetemp;//辅助交换while(node!=null){temp=node;node=node.next;temp.next=head;head=tem
两数之和Givenanarrayofintegersnumsandanintegertarget,returnindicesofthetwonumberssuchthattheyadduptotarget.Youmayassumethateachinputwouldhaveexactlyonesolution,andyoumaynotusethesameelementtwice.Youcanreturntheanswerinanyorder.算法思路最容易想到的方法是枚举数组中的每一个数x,寻找数组中是否存在target-x。当我们使用遍历整个数组的方式寻找target-x时,需要注意到每一个
一、题目描述18. 四数之和给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a],nums[b],nums[c],nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):0a、b、c 和 d 互不相同nums[a]+nums[b]+nums[c]+nums[d]==target你可以按 任意顺序 返回答案。二、题目解析算法思想:排序+双指针1、依次固定一个数a;2、在a后面的区间内,用“三数之和”找到三个数,使用这三个数的和等于target-a即可同理,对于三数之和的算法:1、依次固定一个数
文章目录刷题性价比刷题大概可以分为4个阶段怎么样到达第三阶段?华为OD算法/大厂面试高频题算法练习冲刺训练华为OD算法/大厂面试高频题算法练习冲刺训练本文转自我的合伙人@程序员吴师兄。刷题性价比算法是一种技能,是可以通过科学合理的方式训练出来的能力。在想刷题之前,得从心里认识到接受刷题很重要,才能坚持去刷题。江湖有个传言:国内刷LeetCode,最多够你吃1年老本;湾区刷LeetCode,够你吃10年老本了。为什么湾区的刷题性价比这么高呢?你想想,电面考4道题,一道题值5万!单位是Dollar!刷到就是赚到!!想想是不是很刺激,有没有动力开始刷题了!可以提速刷题了!就目前互联网的情况来说,无论