栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数组双指针、滑动窗口练习

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数组双指针、滑动窗口练习

Question 1 0344. 反转字符串

经典的双指针练习题,定义左右指针分别指向 s 的第一个元素和最后一个元素,然后逐个交换位置,待到两个指针指向的元素相同时跳出即可。

 class Solution {
 public:
     void reverseString(vector& s) 
     {
         char temp = 0;
         int left = 0, right = s.size() - 1;
         while(left < right)
         {
             temp = s[left];
             s[left] = s[right];
             s[right] = temp;
             left++; right--;
         }
     }
 };

算法分析:

时间复杂度O(n),其中n为s中元素数目的一半

空间复杂度O(1)

Question 2 0080. 删除有序数组中的重复项 II

这道题主要练习快慢指针,按照题目要求,只需要检查nums[right] 和 nums[left-2]是否相等即可。如果不等,则说明nums[right]所指向的元素应该被保留。

 class Solution {
 public:
     int removeDuplicates(vector& nums) 
     {
         int left = 2, right = 2;
         int n = nums.size();
         if(n <= 2)
         {
             return n;
         }
         for(int i = 2; i < n; i++)
         {
             if(nums[right] != nums[left-2])
             {
                 nums[left] = nums[right];
                 left++;
             }
             right++;
         }
         return left;
     }
 };

算法分析:

时间复杂度O(n)

空间复杂度O(1)

Question 3 0674. 最长连续递增序列

一道不定长度窗口的应用题。所求的数组长度即为窗口大小。

定义左右指针left 和 right,逐个比较nums[right]和nums[right-1]的大小即可。

 class Solution {
 public:
     int findLengthOfLCIS(vector& nums) 
     {
         int left = 0, right = 1;
         int n = nums.size();
         int ans = 0;
         if(n == 1)
         {
             return n;
         }
         while(right < n)
         {
             if(nums[right-1] < nums[right])
             {
                 right++;
             }
             else
             {
                 left = right;
                 right++;
             }
             ans = max(ans, (right-left));
         }
         return ans;
     }
 };

算法分析:

时间复杂度O(n),需要遍历数组

空间复杂度O(1)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604718.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号