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

news/2025/9/19 15:43:35/文章来源:https://www.cnblogs.com/lxjshuju/p/19100976

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;
}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/907869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件体系结构概论 1章

1.如何客服软件危机 人们面临的不光是技术问题,更重要的是管理问题。 采用工程化的开发方法与工业化的生产技术 在技术上,应该采用基于重用的软件生产技术,在管理上,应该采用多维的工程管理模式

vLLM常用参数解释

vLLM常用参数解释--max-model-len 16384 :设置模型能处理的最大上下文长度(输入 + 输出)token数量,典型值:8192, 16384, 32768, 131072--max-num-batched-tokens 8192 :一次批处理(batch)中,最多允许的总 tok…

vue2 项目实例 Layout布局(二)

vue2 项目实例 Layout布局(二)本布局是按照vue-admin-template 搭建流程即可或其它后台框架搭建,实际根据需求改动https://panjiachen.github.io/vue-element-admin-site/zh/guide/ 1、使用Scss 安装scss 后续在页…

故障处理:ORA-00600 2252故障处理

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。1,环境介绍…

Android 平台 MAUI 应用更新服务

该代码是面向 Android 平台 的 MAUI(.NET Multi-platform App UI)应用更新服务实现,实现了IUpgradeService接口,核心功能涵盖版本检查、APK 下载与安装,整体设计兼顾异常处理、用户体验与 Android 版本兼容性。 一…

SQLSERVER数据备份 - 实践

SQLSERVER数据备份 - 实践2025-09-19 15:37 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

SQL脚本:查询指定SQL的统计信息(cursor,awr)

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。SQL脚本:查询…

k8s学习笔记8——Service

k8s学习笔记8——Service容器带来的问题自动调度: 在Pod创建之前,用户无法预知Pod所在节点以及Pod的IP地址 一个已经存在的Pod在运行过程中,出现故障,Pod也会在新的节点使用新的IP进行部署 应用程序访问服务时,地址是不…

逆向分析之if语句与循环语句的分析

前言 本次我们要介绍if语句,for循环编译后的反汇编内容,以C/C++编写的可执行程序为例进行分析 一只Demo 首先是一只Demo,是我们本次分析对象的源码 #include <stdio.h>void if_demo(int v) {if (v > 5)pri…

读书笔记:索引组织表(IOT):让数据库查询飞起来的黑科技

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

AI 自动化智能体训练营

课程背景与解决的问题 你是否也有这样的困扰? 每天被大量重复劳动占据时间? 报表、PPT、文案写得慢,效率低? 想用 AI 提高效率,却不知道从哪入手? 想做副业/创业,但缺乏技术与工具? 👉 这门训练营,将带你从…

ROMA-iOS适配深色模式总结

一、背景深色模式在低光环境下(如夜间使用)可以显著减少屏幕发出的蓝光,降低眼睛疲劳,减轻视觉压力。深色背景配合浅色文字能提供更好的对比度和可读性,减少眩光,让内容更易于阅读。深色模式还可以显著节省电量,…

本地(或自下载)浏览器插件 安装指南

1 首先准备好安装包 通过不用渠道下载所要安装插件的压缩包 2 安装流程 第一步 解压 解压压缩包至文件夹中,请确保您的电脑上已安装解压工具,否则会解压失败 1)mac系统中,双击压缩包即可完成解压。 2)win系统解压…

Docker是什么?最全Docker使用教程(小白到高手) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

408学习之c语言(结构体) - 教程

408学习之c语言(结构体) - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

路由查看命令

路由查看命令多网卡,软路由设置route print //查看当前路由表route print -4 //查看当前IPv4路由表网络目标,网络掩码,网关,跃点数route print //查看当前路由表route print -4 //查看当前IPv4路由表route delete …

Linux 基础命令01

一、线上查询及帮助命令 1.1 man root@ubuntu2204:~/test 14:28:16 # man ls1.2 help root@ubuntu2204:~/test 14:30:00 # ls --help1.3 info root@ubuntu2204:~/test 14:30:47 # info ls二、文件和目录操作命令 2.1 l…

Git 指令笔记 - 详解

Git 指令笔记 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "…

Syntax Error: TypeError: eslint.CLIEngine is not a constructor 解决方案

Syntax Error: TypeError: eslint.CLIEngine is not a constructor 解决方案 删除 package-lock.json 然后 删除 node_modules 从新 npm install 然后再revert package-lock.json (别动项目文件)(如果按新包了,再区…

TDMQ CKafka 版客户端实战指南系列之一:生产最佳实践

TDMQ CKafka 版客户端实战指南系列之一:生产最佳实践导语 在当今数字化时代,数据的产生和流动呈爆发式增长,消息队列作为一种高效的数据传输和处理工具,在各种应用场景中发挥着关键作用。TDMQ CKafka 版作为一款分…