Leetcode27/209/581-矩阵中的指针用法

矩阵中的指针用法

1 快慢指针

​ Leetcode27移除元素

  • 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
    public int removeElement(int[] nums, int val) {
       int fastIndex=0;
       int slowIndex=0;

       while(fastIndex<nums.length){
           if(nums[fastIndex]!=val){
               nums[slowIndex]=nums[fastIndex];
               slowIndex++;
           }
           fastIndex++;
       }

       return slowIndex;
    }

2 左右指针

​ 二分查找(略)

​ Leetcode209长度最小的子数组

  • 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0
  • 输入:target = 7, nums = [2,3,1,2,4,3]
  • 输出:2
   public int minSubArrayLen(int target, int[] nums) {
        int leftIndex=0;
        int rightIndex=0;
        int size=0;
        int minSize=Integer.MAX_VALUE;
        int sum=0;

        while(rightIndex<nums.length){
            sum+=nums[rightIndex];
            while(sum>=target){
                size=rightIndex-leftIndex+1;
                if(minSize>size){
                    minSize=size;
                }
                sum-=nums[leftIndex];
                leftIndex++;
            }
            rightIndex++;
        }

        return minSize==Integer.MAX_VALUE?0:minSize;
    }

Leetcode581最短无序连续子数组

  • 给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。
  • 输入:nums=[2,6,4,8,10,9,15]
  • 输出:5
  public int findUnsortedSubarray(int[] nums) {
        //初始化
        int len = nums.length;
        int min = nums[len - 1];
        int max = nums[0];
        int begin = 0, end = -1;
        //遍历
        for (int i = 0; i < len; i++) {
            if (nums[i] < max) {      //从左到右维持最大值,寻找右边界end
                end = i;
            } else {
                max = nums[i];
            }

            if (nums[len - i - 1] > min) {    //从右到左维持最小值,寻找左边界begin
                begin = len - i - 1;
            } else {
                min = nums[len - i - 1];
            }
        }
        return end - begin + 1;
    }
posted @   fao99  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示