算法 之 双指针

大概说明

双指针一般用于加快循环速度,多条件查找等情况,比如 搜索nums是否包含target、nums是否存在两个数之和等于target。

留模板自用~

搜索nums是否包含target

java 复制代码
    public static int search(int[] nums, int target) {
        int len = nums.length;
        int l = 0 ,r = len - 1;
        //记录目标值下标
        int index = -1;

        while(l < r){
            int mid = (r-l) / 2 + l;//求出中间下标 (数据类型)
            if(nums[mid] > target) r--; //大于目标值 移动右指针
            else if(nums[mid] < target) l++; //小于目标值 移动左指针
            else{
                index = mid;//等于目标值 记录下标值 结束循环
                break;
            }
        }
        return index;
    }

nums是否存在两个数之和等于target

java 复制代码
public static int[] getSum(int[] nums, int target) {
        Arrays.sort(nums);
        int len = nums.length;
        int l = 0 ,r = len - 1;

        int[] ans = new int[2];
        while(l < r){
            int num = nums[l] + nums[r];// 求和
            if(num > target) r--; //大于目标值 r左移减少
            else if(num < target) l++; //小于目标值 l右移增大
            else{
                ans[0] = nums[l];//等于目标值结束循环
                ans[1] = nums[r];
                break;
            }
        }
        return ans;
    }

快慢指针 删除倒数第N个节点

java 复制代码
public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode dummyNode = new ListNode();
        dummyNode.next = head;
        ListNode fastNode = dummyNode;
        ListNode slowNode = dummyNode;
        // fastNode 先走n步,slowNode在原点,它们相距5步
        while (n-- > 0 && fastNode.next != null) {
            fastNode = fastNode.next;
        }
        // fastNode 走完的时候,slow刚好是倒数n个
        while (fastNode.next != null) {
            fastNode = fastNode.next;
            slowNode = slowNode.next;
        }
        // 此时slowNode就是待删除节点的前一个节点
        slowNode.next = slowNode.next.next;
        return dummyNode.next;
    }
相关推荐
阡陌数智4 分钟前
Claude API新版本重大变更与安全升级指南
java·linux·安全
zh_xuan35 分钟前
LeeCode 496. 下一个更大元素I
数据结构·算法·栈·单调栈
机 _ 长44 分钟前
05 智算运维|8 张卡怎么才算「捆成一张」:NCCL 实测与拓扑
运维·人工智能·算法·智算运维
早起CaiCai2 小时前
【2023-01 OM】利用深度学习算法融合异质观测实现海洋场降尺度
人工智能·深度学习·算法
学长毕设2 小时前
基于SpringBoot的野生动物公益保护平台设计与实现-附源码
java·spring boot·后端
梦里寻码2 小时前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法
SL_staff2 小时前
离散制造排程破局:JVS-APS 四步闭环落地实践(开发者视角)
java·产品·全栈
这个昵称不容易2 小时前
SpringBoot 美容院管理系统:232个Java文件315个接口,5套角色从预约到发货一整条链路
java·springboot·毕设
猿人谷3 小时前
Surrogate Model:让进化算法学会“预测”,为什么它正在成为智能优化的重要技术?
后端·算法·架构
装不满的克莱因瓶3 小时前
【SpringAI Alibaba】ReactAgent记忆管理MessageTrimmingHook与MessageDeletionHook
java·人工智能·ai·ai编程·springai·springaialibaba