算法知识点————双指针【删除重复元素】【反转链表】

删除重复元素

题目 ://给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数
思路:

快指针遍历数组

慢指针记录保留的

cpp 复制代码
int removedup(vector<int>& nums){
   int len = nums.size();
   int fast =1;//快指针遍历数组
   int slow =1; //慢指针记录保留的
    if(len ==0){//参数校验
      return 0;
    }
    while(fast < len){
     	if(nums[fast] != nums[fast-1]){
        nums[slow]=nums[fast];
        slow++;
      }
       fast++;
    }
   return slow;
}
反转链表

1、先用c记录b一会的位置,

2、然后b指向a节点

3、然后ab后往后移动一个,

循环此过程

cpp 复制代码
/翻转链表(迭代版本) 
struct ListNode{
  int val;
  ListNode *next;
  ListNode(int x): val(x),next(NULL){}
};
ListNode* ReverseList(ListNode* head){
  if(!head || !head->next) return head; //只有一个结点或者节点为空
  auto a = head;//自动匹配类型
  auto b = head->next;
  while(b){
    auto c = b->next;//记录一下b一会的位置
    b->next = a;
    a = b;b = c;
  }
  head->next = NULL;
  return a; 
}

///反转链表和上面一样效果
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* prev = nullptr;
        while (head) {
            ListNode* next = head->next;
            head->next = prev;
            prev = head;
            head = next;
        }
        return prev;
    }
};
相关推荐
想你依然心痛8 分钟前
AtomCode在算法竞赛中的实战体验:LeetCode周赛辅助编程
linux·算法·leetcode
SilentSamsara13 分钟前
模型部署方案选型:REST/gRPC/批量推理/边缘部署的场景决策
人工智能·深度学习·算法·机器学习
zzz_236819 分钟前
【Java实习面试算法冲刺】哈希!
java·算法·面试
大耳朵糊涂20 分钟前
找前/后驱节点
算法
孤狼warrior25 分钟前
从冒泡到传送带流水线:一个3D沉浸式算法靶场,让思想的伟力改变世界
python·算法·typescript
bu_shuo35 分钟前
计算机二级学习-查找和排序
学习·算法·排序算法
战族狼魂1 小时前
每天一课:算法系统学习路线
人工智能·算法·大模型·大语言模型
Sam09271 小时前
【AI 算法精讲 13】朴素贝叶斯:文本分类的基石
人工智能·python·算法·ai
SilentSamsara1 小时前
模型可解释性业务化:SHAP/LIME 的业务汇报与合规审查
人工智能·算法·机器学习·自动化
byte轻骑兵1 小时前
【LE Audio】CSIP精讲[5]: 蓝牙协同设备组的安全防护体系与实战规范
算法·安全·音频·le audio·低功耗音频