LeetCode之双指针(1)

力扣题库合集(1):双指针 双指针算法是一种非常常见且实用的算法技巧,它使用两个指针同时在数据结构上移动,从而达到特定的目的。这种算法通常用于解决数组或链表等线性数据结构中的问题,比如寻找某个元素、删除某个元素、反转数组等。对撞指针(Two Pointers): 两个指针从不同的方向"对撞"而前进,直到满足某个条件为止。这种方法常用于解决数组或链表的查找、删除等问题。快慢指针(Slow and Fast Pointers): 两个指针以不同的速度移动,比如一个指针每次移动一步,另一个指针每次移动两步。 阅读详情
88.Merge Sorted Array
题目链接:

https://leetcode.com/problems/merge-sorted-array/

题目描述:

给定两个有序数组,将两个数组合并。

题目分析:

因为两个数组大小给定了,可以用尾插法。

代码:
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int iM=m-1,iN=n-1,cur=m+n-1;
        while(iM>=0 && iN>=0){
            nums1[cur--]=nums1[iM]>nums2[iN]? nums1[iM--]:nums2[iN--];
        }
        while(iN>=0){
            nums1[cur--]=nums2[iN--];
        }
    }
};
125. Valid Palindrome
题目链接:

https://leetcode.com/problems/valid-palindrome/

题目描述:

判断字符串是否是回文。

For example,
“A man, a plan, a canal: Panama” is a palindrome.
“race a car” is not a palindrome.

题目分析:

比较麻烦的是字符串中的非字母和数字的处理。

代码:
class Solution {
public:
    bool isAlphanumeric(char ch){
        if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z') || (ch>='0' && ch<='9')){
            return true;
        }
        return false;
    }
    bool isPalindrome(string s) {
        int high=s.size()-1;
        int low=0;
        bool flag=true;
        while(low<high){
            flag=true;
            if(!isAlphanumeric(s[low])){
                low++;
                flag=false;
            }
            if(!isAlphanumeric(s[high])){
                flag=false;
                high--;
            }
            if(flag){
                s[low]=tolower(s[low]);
                s[high]=tolower(s[high]);
                if(s[low]!=s[high]){
                    return false;
                }
                low++;
                high--;
            }
        }
        return true;
    }
};
28. Implement strStr()
题目链接:

https://leetcode.com/problems/implement-strstr/

题目描述:

找出子串在主串第一次出现的下标索引。

题目分析:

朴素模式匹配算法。

代码:
class Solution {
public:
    int strStr(string haystack, string needle) {
        int lenH=haystack.size();
        int lenN=needle.size();
        int i=0,j=0;
        while(i<lenH &&j<lenN){
            if(haystack[i]==needle[j]){
                i++;
                j++;
            }
            else{
                i=i-j+1;
                j=0;
            }
        }
        if(j>=lenN){
            return i-j;
        }
        else{
            return -1;
        }
    }
};
智驾系统分层架构:从传感器到执行器的全链路解析 本文深入解析了智能驾驶系统的分层架构,从传感器数据采集融合、应用层决策到车辆管理层执行,完整呈现了从感知到控制的全链路工作流程。文章重点阐述了架构设计的核心优势在于接口标准化与模块解耦,以ACC和LKA协同场景为例,说明了各层级如何通过清晰分工与高效协作,实现复杂系统的可靠、灵活与易于升级。 阅读详情

相关推荐

DolphinScheduler工作流中ChunJun任务保存失败的深度解析与实战修复

本文深度解析了在DolphinScheduler工作流中创建ChunJun任务时遭遇“parameter invalid”保存失败的普遍问题。其根源在于前端表单的`customConfig`参数默认值与后端校验逻辑不匹配。文章提供了两种实战修复方案:一是修改前端源码并重新编译,二是热更新已部署的JS文件,并对比了其适用场景与风险,帮助用户彻底解决此集成障碍。

weixin_29010003的博客 395

LeetCode -贪心/双指针/二分查找/排序

文章目录一. 贪心算法二. 双指针1. 典型 Two Sum2. 归并数组3. 快慢指针 一. 贪心算法 二. 双指针 1. 典型 Two Sum 例题167。采用相反的两个指针遍历数组。一个初始指向最小的元素,即数组最左边,向右遍历;一个初始指向最大的元素,即数组最右边,向左遍历。 2. 归并数组 例题88。归并两个有序数组使之成为一个有序数组。如果不重新开辟空间,直接将数组b中的元素插入到数组a中,会出现数组a后续的元素被覆盖的情况(元素需要不断后移)。 所以,如果数组的数据有被覆盖的风险,可以记得用倒

weixin_39505091的博客 1630

HR效率翻倍!用Dify+飞书AI表格打造自动化简历处理流水线(附完整代码)

本文详细介绍了如何利用Dify工作流和飞书多维表格构建自动化简历处理系统,实现简历上传、AI智能解析与结构化数据入库的全流程自动化。通过整合大语言模型进行信息抽取,该系统能显著提升HR处理简历的效率与准确性,将HR从重复劳动中解放出来。

1a2s3d4f5g的博客 1025

Leetcode 5669:通过连接另一个数组的字数组得到一个数组

题目描述 给你一个长度为 n的二维整数数组groups,同时给你一个整数数组nums。 你是否可以从 nums中选出 n个 不相交 的子数组,使得第 i个子数组与 groups[i](下标从 0开始)完全相同,且如果i > 0,那么第(i-1)个子数组在 nums中出现的位置在第 i个子数组前面。(也就是说,这些子数组在 nums中出现的顺序需要与 groups 顺序相同) 如果你可以找出这样的 n 个子数组,请你返回true ,否则返回false。 如...

weixin_35338624的博客 237

VS2019 从零构建 OSG+OSGEarth+OSGQt 开发环境实战指南

本文提供了一份详细的实战指南,指导开发者如何在Windows系统下使用VS2019从零开始编译和配置OSG、OSGEarth与OSGQt开发环境。文章涵盖了从环境准备、源码获取、CMake配置、Visual Studio编译到最终测试的完整流程,并分享了关键的避坑技巧,旨在帮助三维GIS与可视化开发者高效搭建稳定、可控的专业开发平台。

weixin_28826961的博客 366

《Halcon 100项目-9》Halcon彩色线序检查

Halcon彩色线序检查

doubleintfloat的博客 1042

数据结构与算法再探(五)贪心-双指针-滑动窗口

贪心算法是一种常用的算法设计策略,旨在通过局部最优选择来构建全局最优解。它的基本思想是:在每一步选择中,都选择当前看起来最优的选项,而不考虑后续的影响。贪心算法通常用于解决最优化问题,尤其是在某些特定条件下能够得到全局最优解的问题。

dingyahui的博客 979

安装Quartus-II 13 和Modelsim

目录一、Quartus-II安装1.Quartus-II 13下载2.Quartus-II 13安装3.Quartus-II 13注册二、Modelsim安装 实验目的:安装Quartus-II 13 和Modelsim 实验环境:Windows10 参考资料:Quartus-II安装及使用 一、Quartus-II安装 1.Quartus-II 13下载 正点原子官方资料下载 百度网盘下载链接: https://pan.baidu.com/s/1a9d-bq9RZmWrRV542X4IEA 提取码:

qqq080的博客 8626

双指针技巧

使用情景一 我们通过迭代数组来解决一些问题。通常,我们只使用从第一个元素开始并在最后一个元素结束的一个指针来进行迭代。 但是,有时候,我们可能需要同时使用两个指针来进行迭代。 例如:翻转数组中的元素 void reverse(vector &amp;lt;int&amp;gt; &amp;amp;nums) { int i = 0; int j = nums.size(); while (i &amp;l...

进击的小杨人 379

RK356X linux系统移植RTL8723BU模块遇到的坑

RK356X linux系统移植RTL8723BU模块遇到的坑

目前从事linux驱动开发,多交流多学习吧 954

【学前须知】推荐阅读顺序

AUTOSAR学习笔记专栏文章推荐阅读顺序

weixin_47571898的博客 743

LeetCode 455. 分发饼干

  假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj &gt;= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 注意: 你可以假设胃口值为正...

菜鸟程序猿的博客 1010

【C++】开源:ncurses终端TUI文本界面库

ncurses配置使用(TUI)

DevFrank的博客 3165

力扣-双指针1

何为双指针双指针指向同一数组,然后配合着进行搜索等活动。滑动窗口的时候很好使用。

weixin_63551790的博客 940

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

力扣1(两数之和)三种方法(双指针)(暴力解决法)(字典储存)

class ss: def top(self,lis,shu): l = 0 r = len(lis) - 1 while r > l: pp = lis[l] + lis[r] if pp == shu : print(lis[l],lis[r]) l += 1 r -= 1 elif pp > shu: r-=1

weixin_46051418的博客 550

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【leetcode】(1)双指针

力扣刷题总结:双指针技巧

no_pain_no_gain_的博客 1217

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【leetcode】487 最大连续1的个数II(滑动窗口,双指针)

题目链接:https://leetcode-cn.com/problems/max-consecutive-ones-ii/ 题目描述 给定一个二进制数组,你可以最多将 1 个 0 翻转为 1,找出其中最大连续 1 的个数。 示例 1: 输入:[1,0,1,1,0] 输出:4 解释:翻转第一个 0 可以得到最长的连续 1。 当翻转以后,最大连续 1 的个数为 4。 注: 输入数组只包...

zjwreal 1250

力扣每日一练之双指针1Day8

力扣每日一练之双指针1Day8 🍕前面的话🥞 大家好!本篇文章将介绍20天算法刷题计划的题,本文将以两道题作为背景,介绍经典的双指针,展示语言为java(博主学习语言为java)。今天呢,是博主开始刷力扣的第五天,如果有想要开始准备自己的算法面试的同学,可以跟着我的脚步一起,共同进步。大家都是并肩作战的伙伴,一起努力奋力前行,路漫漫其修远兮,吾将上下而求索,相信我们一定都可以拿到自己期望的offer,冲冲冲! 👩‍💻博客主页:京与旧铺的博客主页 ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csd

qq_46272491的博客 838

双指针1:力扣刷题

题目:力扣167. 两数之和 II - 输入有序数组 给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1必须小于index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。 示例: 输入: numbers = [2, 7, 11, 15], target = 9 输出: [1,2] 解释: 2 与 7 ...

gtjsjj的博客 199

1.LeetCode算法习题讲解--双指针--移动零

利用双指针解决移动零问题

Jammy_1的博客 297

LeetCode 1. 两数之和---双指针索引和哈希表

排序:首先,对输入的数组 nums 进行排序。排序后,可以利用双指针技术来查找两个数的和是否等于目标值 target。双指针查找:使用两个指针 i 和 j 分别指向排序后数组的两端,i 从左端开始,j 从右端开始。比较两个指针指向的元素之和与目标值 target 的关系:如果和等于 target,则找到了这两个数,跳出循环。如果和大于 target,则移动右指针 j 向左移动,减小和的值。如果和小于 target,则移动左指针 i 向右移动,增加和的值。

Mo_ney_z的博客 1188

Leetcode485. 最大连续1的个数

题目 给定一个二进制数组, 计算其中最大连续1的个数。 示例 1: 输入: [1,1,0,1,1,1] 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3. 注意: 输入的数组只包含 0 和1。 输入数组的长度是正整数,且不超过 10,000。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/ma...

qq_22017379的博客 135

LeetCode 1004. 最大连续1的个数 III(遍历)+ (双指针优化)—— JavaScript

题链接:https://leetcode-cn.com/problems/max-consecutive-ones-iii/ 题描述: 解题思路(遍历): 遍历数组,在每个位置上面向后模拟,直到遍历完数组或者可翻转的次数用完。实时维护最长长度。 代码实现(遍历): /** * @param {number[]} A * @param {number} K * @return {number} */ var longestOnes = function(A, K) { let

ySFRaabbcc的博客 457

LeetCode双指针算法总结1

双指针算法是一类依靠单调性来去除结果的算法。

CS_boy的博客 731

1_相向双指针_leetcode_167_1

leetcode 刷题记录——167. 两数之和 II - 输入有序数组给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。 以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 in

qq_52295058的博客 1169

LeetCode算法题解——双指针1

LeetCode算法题解——双指针1,介绍双指针在数组中的第一类题型:一个数组当两个用。

qq_41214610的博客 423
上一篇: LeetCode98 Validate Binary Search Tree
下一篇: LeetCode之双指针(2)
_IanXiao
博客等级 码龄12年 84粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值