Array题型刷题套路

Array题型刷题套路,第1张

Array题型刷题套路 1 概述

Array类型题型,一般而言题目中数据都有固定长度或者数量,通常使用双指针的方式解决此类问题。此处双指针不一定就是两个指针,同时也不一定是真实的指针,而且多数是数组下标的处理方式,主要是指使用双指针的思维,比如同向移动指针或者反向移动指针。

2 同向双指针方式

使用下图表示同向双指针的思考方式:

同向双指针将数据分为三个区域:

  1. [0, i) 表示处理好的数据
  2. [i, j) 表示处理过但是不需要的数据
  3. [j, array.len) 表示接下来要处理的数据

那么一般此类题的通用步骤就是:

  1. 初始化下标i, j
  2. while (j < array.len)
    (1)如果需要array[i], 可以array[i] == array[j], 然后向前移动i, 其中i是下一个要保存的位置
    (2) 不需要array[j]的话,就跳过它,继续判断array[j+1], 而i不需要移动位置

如leetCode 26. 删除有序数组中的重复项

class Solution {
public:
    int removeDuplicates(vector& nums) {
        if (nums.size() == 0) {
            return 0;
  

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5685608.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存