尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

完整教程:LeetCode 刷题【81. 搜索旋转排序数组 II、82. 删除排序链表中的重复元素 II、83. 删除排序链表中的重复元素】

完整教程:LeetCode 刷题【81. 搜索旋转排序数组 II、82. 删除排序链表中的重复元素 II、83. 删除排序链表中的重复元素】
📅 发布时间:2026/6/19 22:26:44

完整教程:LeetCode 刷题【81. 搜索旋转排序数组 II、82. 删除排序链表中的重复元素 II、83. 删除排序链表中的重复元素】

81. 搜索旋转排序数组 II

自己做

解:二分查找

class Solution {
public:
bool search(vector& nums, int target) {
int n = (int)nums.size();
int begin = 0;
int end = n - 1;
sort(nums.begin(), nums.end());
//调整边界
if(target >= nums[0]){              //target如果存在,则必然存在于左边,调整右边界(end)到左边
while(begin  nums[end] && nums[end] > target){
int mid = (begin + end) / 2;    //新边界
if(nums[begin] > nums[mid])         //新边界还在右边
end = mid - 1;
else                                //新边界在左边
if(nums[mid]  nums[end] && nums[begin] > target){
int mid = (begin + end) / 2;    //新边界
if(nums[begin] > nums[mid])         //新边界还在左边
begin = mid + 1;
else                                //新边界在左边
if(nums[mid] > target)          //跳过头了
end = mid - 1;
}
}
//二分查找
while(begin  target)          //往小处找
end = mid - 1;
if(nums[mid] < target)          //往大处找
begin = mid + 1;
}
//没找到
return false;
}
};

82. 删除排序链表中的重复元素 II

自己做

解:计数法

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode() : val(0), next(nullptr) {}
*     ListNode(int x) : val(x), next(nullptr) {}
*     ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
vector count(200, 0);                  //计数数组
ListNode* p = head;
//遍历计数
while(p != nullptr){
count[p->val + 100]++;
p = p->next;
}
//首先删除开头部分(涉及头结点更改)
while(head != nullptr && count[head->val + 100] > 1)
head = head->next;
if(head == nullptr)                          //删完了
return head;
//删除结点
p = head;
ListNode* q = p->next;
while(q != nullptr){
if(count[q->val + 100] > 1)
p->next = q->next;
else
p = p->next;
q = p->next;
}
return head;
}
};

83. 删除排序链表中的重复元素

自己做

解:前后指针

/**
* Definition for singly-linked list.
* struct ListNode {
*     int val;
*     ListNode *next;
*     ListNode() : val(0), next(nullptr) {}
*     ListNode(int x) : val(x), next(nullptr) {}
*     ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
//删除开头重复部分
while(head != nullptr && head->next != nullptr && head->val == head->next->val)
head = head->next;
if(head == nullptr)         //删完了或者本身为空
return head;
//删除中间部分
ListNode* p = head;
while(p->next != nullptr){
if(p->val == p->next->val)              //有重复
p->next = p->next->next;
else                                    //无重复
p = p->next;
}
return head;
}
};

相关新闻

  • vue2 项目实例 Layout布局(二)
  • 故障处理:ORA-00600 2252故障处理
  • Android 平台 MAUI 应用更新服务

最新新闻

  • 南通同城购宠指南:钟秀中路+天都花苑正规宠舍,无套路带质保 - 萌宠俱乐部
  • Java集成海康SDK:从环境搭建到实时报警监听实战
  • 物联网时序数据清理实战:lotvacuum系统设计与数据库优化
  • WechatBakTool:如何安全备份微信聊天记录的技术实现解析
  • 5分钟掌握B站智能评论分析:成分检测器完整指南
  • 2026深圳宝安搬家公司臻选:居民/企业/专业搬迁全场景优质搬迁服务商榜单 - 从来都是英雄出少年

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号