💖比起被围观,悄悄努力或许更踏实💖
系列文章目录🍁
文章目录
🌴前言
大家好,我是小沐!😃编程路上一个人可能走的更快,但一群人才能走得更远,关注小沐一起学习不迷路!今天分享的是双指针的用法,后续还会有leetcode上的相关题目。话不多说,秃头走起——>冲冲冲👊👊👊!!!
🌿一、基础知识
首先要注意,此指针非彼指针。双指针算法中的指针是索引(如数组下标)而不是C/C++中的指针。
上面字符串的索引范围为[0,11]
双指针即双索引,对于同一数组或字符串有两个索引。
🌿二、分类及应用
注:在例子中我们以 i , j 或 left , rigth 表示两个指针。
1.普通双指针
两个指针往同一个方向移动。
思路:
①起始令i,j 都指向下标为0处;
②如果 j 指针指向的值不等于 val,它一定是输出数组的一个元素,我们就将 j 指针指向的值复制到 i 指针位置,然后将两个指针同时右移;
③如果 j 指针指向的元素等于 val,它不能在输出数组里,此时 i 指针不动,j 指针右移一位。
代码如下:
int removeElement(int* nums, int numsSize, int val){
int i=0;
for(int j=0