草庐IT

LeetCode之双指针法

全部标签

算法沉淀——二分查找(leetcode真题剖析)

算法沉淀——二分查找01.二分查找02.在排序数组中查找元素的第一个和最后一个位置03.搜索插入位置04.x的平方根05.山脉数组的峰顶索引06.寻找峰值07.寻找旋转排序数组中的最小值08.LCR173.点名二分查找(BinarySearch)是一种在有序数组中查找特定元素的算法。该算法的基本思想是通过每一次比较,将查找范围缩小一半,最终找到目标元素或者确定目标元素不存在。二分查找的步骤:初始化:定义两个指针,left和right,分别指向数组的起始和结束位置。循环条件:在left的条件下,执行以下步骤。计算中间位置:计算中间位置的索引mid,可以使用mid=(left+right)/2或者

Leetcode每日一题周汇总 (12.24-12.30)

Leetcode每日一题周汇总(12.24-12.30)1.Sunday(12.24)题目链接:1954.收集足够苹果的最小花园周长-力扣(LeetCode)题目描述:给你一个用无限二维网格表示的花园,每一个整数坐标处都有一棵苹果树。整数坐标(i,j)处的苹果树有|i|+|j|个苹果。你将会买下正中心坐标是(0,0)的一块正方形土地,且每条边都与两条坐标轴之一平行。给你一个整数neededApples,请你返回土地的最小周长,使得至少有neededApples个苹果在土地里面或者边缘上。|x|的值定义为:如果x>=0,那么值为x如果x,那么值为-x示例1:输入:neededApples=1输出

【刷题】 leetcode 面试题 08.05.递归乘法

递归乘法1题目描述2思路一(返璞归真版)3思路二(二进制乘法器版)4思路三(变态版)Thanks♪(・ω・)ノ谢谢阅读下一篇文章见!!!1题目描述来看题目描述,真可谓大道至简的描述啊。让我们不使用*来实现乘法运算。2思路一(返璞归真版)首先我就想到了乘法的加法表示:A*B=B个A相加。也可得到递推公式:A*B=A*(B-1)+A我们很容易就可以构造出递归算法intmultiply(intA,intB){ //B为1直接返回Bif(B==1)returnA;returnA+multiply(A,B-1);}来看运行效果:3思路二(二进制乘法器版)接下来我们换一种方法,大家一定记得小时候计算乘法的

算法沉淀——滑动窗口(leetcode真题剖析)

算法沉淀——滑动窗口01.长度最小的子数组02.无重复字符的最长子串03.最大连续1的个数III04.将x减到0的最小操作数05.水果成篮06.找到字符串中所有字母异位词07.串联所有单词的子串08.最小覆盖子串滑动窗口算法是一种用于解决数组或列表中子数组或子序列问题的有效技巧。它通过维护一个可变大小的窗口(通常是一个连续的子数组或子序列),在数据流中滑动该窗口来进行问题求解。这种方法在一维数组和二维数组中都有应用,并且在字符串处理中也很常见。滑动窗口算法的基本思想是使用两个指针,通常是左指针(left)和右指针(right)来定义窗口,通过移动这两个指针,调整窗口的大小和位置,从而在不重复计

ios - 为 ScrollView 上的双指滑动分配独特的行为

我想为WKWebView上的双指滑动分配一个独特的行为。引用thissite,我写了如下代码。它有效,但在webview上滚动变得非常慢。有没有更好的方法来避免缓慢滚动?letdoubleSwipeGestureRecognizer=UISwipeGestureRecognizer.init(target:self,action:"doubleSwiped2")doubleSwipeGestureRecognizer.numberOfTouchesRequired=2doubleSwipeGestureRecognizer.direction=UISwipeGestureRecogni

算法沉淀——双指针算法(leetcode真题剖析)

算法沉淀——双指针算法01.移动零02.复写零03.快乐数04.盛最多水的容器05.有效三角形的个数06.和为s的两个数字07.三数之和08.四数之和双指针算法(TwoPointerAlgorithm)是一种常用于数组(或链表)操作的算法技巧。它的核心思想是通过维护两个指针,在数组中高效地解决一些问题,这里的指针不一定是真实的指针,是一种抽象的概念,比如数组的下标,C++的迭代器等等。这两个指针可以分别指向数组的不同位置,也可以分别指向数组的开始和结束。常见的双指针算法有两种类型:快慢指针和左右指针。快慢指针:用于解决一些查找或判断问题,比如判断链表是否有环、找到链表的中间节点等。快指针每次移

【每日一题】5.LeetCode——环形链表

📚博客主页:爱敲代码的小杨.✨专栏:《JavaSE语法》❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!文章目录1.题目描述示例1:示例2:示例3:提示:2.思路3.代码1.题目描述给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。示例1:

LeetCode 144. 94. 145. 二叉树的前序,中序,后续遍历(详解) ੭ ᐕ)੭*⁾⁾

目录144.二叉树的前序遍历一.TreeSize函数的实现:二. preOrderTree函数的实现:三.preorderTraversal函数的实现: 最后完整代码:94.二叉树的中序遍历: 145.二叉树的后续遍历:经过前面的二叉树的学习,现在让我们实操来练练手~如果对二叉树还不熟悉的小伙伴可以看看我的这篇博客~数据结构——二叉树(先序、中序、后序及层次四种遍历(C语言版))超详细~(✧∇✧)Q_Q-CSDN博客144.二叉树的前序遍历题目描述:题目让我们返回节点值的前序遍历,让我们一起看看题目所给的代码:  函数的定义与功能:1.定义一个TreeSize函数用于计算这颗数的节点个数2.p

LeetCode 热题 100 | 矩阵

目录1 73.矩阵置零2 54.螺旋矩阵3 48.旋转图像4 240.搜索二维矩阵II菜鸟做题第二周,语言是C++1 73.矩阵置零解题思路:遍历矩阵,寻找等于0的元素,记录对应的行和列将被记录的行的元素全部置0将被记录的列的元素全部置0classSolution{public:voidsetZeroes(vector>&matrix){intn=matrix.size(),m=matrix[0].size();unordered_setrow,col;//寻找0for(inti=0;i2 54.螺旋矩阵解题思路:定义right,down,left,up来标志四个方向根据不同的方向设置不同的坐

leetcode刷题(剑指offer) 240.搜索二维矩阵Ⅱ

240.搜索二维矩阵Ⅱ编写一个高效的算法来搜索*m*x*n*矩阵matrix中的一个目标值target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例1:输入:matrix=[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]],target=5输出:true示例2:输入:matrix=[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]],target=20输出