代码随想录day3
203:移除链表元素:注意虚拟头节点的使用
ListNode* removeElements(ListNode* head, int val) {ListNode* result = new ListNode();result->next = head;ListNode* current = result;while(current != nullptr && current->next != nullptr){if(current->next->val == val){ListNode* tmp = current->next;current->next = tmp->next;delete tmp;}else{current = current->next;}}return result->next;}
707.设计链表:依然采用虚拟头节点方式
todo:学习双指针写法
class MyLinkedList {public:struct LinkedNode {int val;LinkedNode* next;LinkedNode(int val):val(val),next(nullptr){}};MyLinkedList() {prev = new LinkedNode(0);_size = 0;}int get(int index) {if(index < 0 || index >= _size){return -1;}LinkedNode* current = prev->next;//注意此处起始位置while(index--){current = current->next;}return current->val;}void addAtHead(int val) {LinkedNode* current = new LinkedNode(val);LinkedNode* tmp = prev->next;current->next = tmp;prev->next = current;_size++;}void addAtTail(int val) {LinkedNode* current = prev;while(current->next != nullptr){current = current->next;}LinkedNode* tail = new LinkedNode(val);current->next = tail;_size++;}void addAtIndex(int index, int val) {if(index > _size){return;}if(index < 0) index = 0;LinkedNode* current = prev;while(index--){current = current->next;}LinkedNode* node = new LinkedNode(val);node->next = current->next;current->next = node;_size++;}void deleteAtIndex(int index) {if(index < 0 || index > _size-1){return;}LinkedNode* current = prev;while(index--){current = current->next;}LinkedNode* tmp = current->next;current->next = tmp->next;delete tmp;_size--;}
private:int _size;LinkedNode* prev;
};
双链表写法:注意用过程变量来缓存节点,保持逻辑清晰
class MyLinkedList {public:struct DoubleLinkedNode {int val;DoubleLinkedNode* next;DoubleLinkedNode* prev;DoubleLinkedNode(int val):val(val),next(nullptr),prev(nullptr){}};MyLinkedList() {sentinel = new DoubleLinkedNode(0);sentinel->next = sentinel;sentinel->prev = sentinel;_size = 0;}int get(int index) {if (index > (_size - 1) || index < 0) { // 检查索引是否超出范围return -1; // 如果超出范围,返回-1}int num;int mid = _size >> 1; // 计算链表中部位置DoubleLinkedNode *curNode = sentinel; // 从哨兵节点开始if (index < mid) { // 如果索引小于中部位置,从前往后遍历for (int i = 0; i < index + 1; i++) {curNode = curNode->next; // 移动到目标节点}} else { // 如果索引大于等于中部位置,从后往前遍历for (int i = 0; i < _size - index; i++) {curNode = curNode->prev; // 移动到目标节点}}num = curNode->val; // 获取目标节点的值return num; // 返回节点的值}void addAtHead(int val) {DoubleLinkedNode* current = new DoubleLinkedNode(val);DoubleLinkedNode* next = sentinel->next;next->prev = current;current->prev = sentinel;current->next = next;sentinel->next = current;_size++;}void addAtTail(int val) {DoubleLinkedNode* current = new DoubleLinkedNode(val);DoubleLinkedNode* prev = sentinel->prev;prev->next = current;current->prev = prev;current->next = sentinel;sentinel->prev = current;_size++;}void addAtIndex(int index, int val) {if(index > _size){return;}DoubleLinkedNode* current = sentinel;while(index--){current = current->next;}DoubleLinkedNode* tmp = new DoubleLinkedNode(val);DoubleLinkedNode* next = current->next;tmp->next = next;tmp->prev = current;next->prev = tmp;current->next = tmp;_size++;}void deleteAtIndex(int index) {if(index < 0 || index >= _size){return;}DoubleLinkedNode* current = sentinel;while(index--){current = current->next;}DoubleLinkedNode* tmp = current->next;tmp->next->prev = current;current->next = tmp->next;delete(tmp);_size--;}
private:int _size;DoubleLinkedNode* sentinel;
};
206.反转链表:学习使用双链表法
ListNode* reverseList(ListNode* head) {ListNode* cur = head;ListNode* pre = nullptr;ListNode* tmp = head;while(cur){tmp = cur->next;cur->next = pre;pre = cur;cur = tmp;}return pre;}
相关文章:
代码随想录day3
203:移除链表元素:注意虚拟头节点的使用 ListNode* removeElements(ListNode* head, int val) {ListNode* result new ListNode();result->next head;ListNode* current result;while(current ! nullptr && current->next ! nullptr){if(current-…...
Spring 面试题【每日20道】【其一】
1、Spring 当中什么是循环依赖(常问)? 中等 在Spring框架中,循环依赖(Circular Dependency)是指两个或多个bean互相之间直接或间接地依赖对方的注入。例如: A bean依赖于B bean。B bean又依赖…...
leetcode刷题记录(八十九)——35. 搜索插入位置
(一)问题描述 35. 搜索插入位置 - 力扣(LeetCode)35. 搜索插入位置 - 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位…...
Flutter 与 React 前端框架对比:深入分析与实战示例
Flutter 与 React 前端框架对比:深入分析与实战示例 在现代前端开发中,Flutter 和 React 是两个非常流行的框架。Flutter 是 Google 推出的跨平台开发框架,支持从一个代码库生成 iOS、Android、Web 和桌面应用;React 则是 Facebo…...
基于Docker的Spark分布式集群
目录 1. 说明 2. 服务器规划 3. 步骤 3.1 要点 3.2 配置文件 3.2 访问Spark Master 4. 使用测试 5. 参考 1. 说明 以docker容器方式实现apache spark计算集群,能灵活的增减配置与worker数目。 2. 服务器规划 服务器 (1master, 3workers) ip开放端口备注ce…...
Web 代理、爬行器和爬虫
目录 Web 在线网页代理服务器的使用方法Web 在线网页代理服务器使用流程详解注意事项 Web 请求和响应中的代理方式Web 开发中的请求方法借助代理进行文件下载的示例 Web 服务器请求代理方式代理、网关和隧道的概念参考文献说明 爬虫的工作原理及案例网络爬虫概述爬虫工作原理 W…...
MySQL 事件调度器
MySQL 事件调度器确实是一个更方便且内置的解决方案,可以在 MySQL 服务器端自动定期执行表优化操作,无需依赖外部工具或应用程序代码。这种方式也能减少数据库维护的复杂性,尤其适用于在数据库频繁更新或删除时进行自动化优化。 使用 MySQL …...
直线拟合例子 ,岭回归拟合直线
目录 直线拟合,算出离群点 岭回归拟合直线: 直线拟合,算出离群点 import cv2 import numpy as np# 输入的点 points np.array([[51, 149],[122, 374],[225, 376],[340, 382],[463, 391],[535, 298],[596, 400],[689, 406],[821, 407] ], dtypenp.float32)# 使用…...
Flutter android debug 编译报错问题。插件编译报错
下面相关内容 都以 Mac 电脑为例子。 一、问题 起因:(更新 Android studio 2024.2.2.13、 Flutter SDK 3.27.2) 最近 2025年 1 月 左右,我更新了 Android studio 和 Flutter SDK 再运行就会出现下面的问题。当然 下面的提示只是其…...
关于IPD流程的学习理解和使用
IPD(Integrated Product Development,集成产品开发)是一种系统化的产品开发流程和方法论,旨在通过跨职能团队的协作和并行工程,缩短产品开发周期,提高产品质量,降低开发成本。IPD 最初由美国 PR…...
C# 类(Class)
C# 类(Class) 概述 在C#编程语言中,类(Class)是面向对象编程(OOP)的核心概念之一。类是一种用户定义的数据类型,它包含了一组属性(数据)和方法(…...
Jenkins pipline怎么设置定时跑脚本
目录 示例:在Jenkins Pipeline中设置定时触发 使用pipeline指令设置定时触发 使用Declarative Pipeline设置定时触发 使用Scripted Pipeline设置定时触发 解释Cron表达式 保存和应用配置 小结 在Jenkins中,定时跑脚本(例如定时执行Pip…...
PostgreSQL模糊查询相关学习参考
PostgreSQL大数据量快速模糊检索实践_postgresql 模糊查询-CSDN博客文章浏览阅读1.5k次,点赞20次,收藏25次。注意: 本文内容于 2024-08-18 23:50:33 创建,可能不会在此平台上进行更新。。_postgresql 模糊查询https://blog.csdn.n…...
【电脑无法通过鼠标和键盘唤醒应该怎么办】
【电脑无法通过鼠标和键盘唤醒应该怎么办】 方法一(有时候不起作用):方法二(方法一无效时,使用方法二): 方法一(有时候不起作用): 方法二(方法一无效时,使用方法二):...
Java 大视界 -- Java 大数据中的数据脱敏技术与合规实践(60)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Vue3.5 企业级管理系统实战(三):页面布局及样式处理 (Scss UnoCSS )
本章主要是关于整体页面布局及样式处理,在进行这一章代码前,先将前两章中的示例代码部分删除(如Home.vue、About.vue、counter.ts、App.vue中引用等) 1 整体页面布局 页面整体布局构成了产品的框架基础,通常涵盖主导…...
【xcode 16.2】升级xcode后mac端flutter版的sentry报错
sentry_flutter 7.11.0 报错 3 errors in SentryCrashMonitor_CPPException with the errors No type named terminate_handler in namespace std (line 60) and No member named set_terminate in namespace std 替换sentry_flutter版本为: 8.3.0 从而保证oc的…...
windows在命令行中切换盘符
一、问题描述 我们在使用windows的cmd(命令行)时,经常需要用cd命令在不同盘之间切换路径。但有时在不同盘之间切换时,会发现命令不起作用。 如下图所示,直接切换目录还是停留在原来的位置。 二、解决方法 首先切换盘符…...
亚博microros小车-原生ubuntu支持系列:11手指控制与手势识别
识别框架还是沿用之前的了MediaPipe Hand。 背景知识不摘重复,参见之前的:亚博microros小车-原生ubuntu支持系列:10-画笔-CSDN博客 手指控制 src/yahboom_esp32_mediapipe/yahboom_esp32_mediapipe/目录下新建文件10_HandCtrl.pyÿ…...
JAVA-快速排序
目录 一、快速排序基本思想 二、快速排序的实现 1.Hoare法找基准值 2.挖坑法 3.前后指针法(了解) 三、快速排序的优化 1.三数取中法 2.递归到小的子区间时,可以考虑使用插入排序 四、非递归的写法 五、时间空间复杂度 一、快速排序基本思想 快速排序是 H…...
单细胞测序入门(一):技术概览与数据获取实战
1. 单细胞测序技术全景解读 第一次接触单细胞测序时,我被这项技术的精妙设计深深震撼。想象一下,传统测序就像把水果榨成混合果汁检测成分,而单细胞测序则是把每个苹果、香蕉、葡萄分开榨汁分析——这就是单细胞分辨率带来的革命性视角。 核心…...
5步释放Win11潜能:用Win11Debloat让系统性能提升60%的实战指南
5步释放Win11潜能:用Win11Debloat让系统性能提升60%的实战指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutte…...
5个步骤掌握LibreCAD跨平台部署:从安装到精通的开源解决方案指南
5个步骤掌握LibreCAD跨平台部署:从安装到精通的开源解决方案指南 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C17. It can read DXF/DWG files and can write DXF/PDF/SVG files. It supports point/line/circle/ellipse/pa…...
Pi0具身智能v1快速部署指南:一键启动交互测试页面
Pi0具身智能v1快速部署指南:一键启动交互测试页面 1. 环境准备与镜像部署 1.1 选择合适的基础环境 在开始部署Pi0具身智能v1之前,请确保您的平台满足以下基本要求: 硬件配置:建议至少16GB显存的GPU(如NVIDIA RTX 3…...
FactoryBluePrints:颠覆性全流程工厂自动化解决方案
FactoryBluePrints:颠覆性全流程工厂自动化解决方案 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints是戴森球计划的开源蓝图仓库,…...
多任务学习进阶:从MMoE到PLE的模型演进与实战解析
1. 多任务学习基础与核心挑战 多任务学习(Multi-Task Learning, MTL)是机器学习领域的一个重要分支,它让单个模型同时学习多个相关任务。想象一下,你正在教一个学生同时学习数学和物理。如果这两个学科有共同的基础概念࿰…...
CCF和中国科协对NeurIPS更正投稿政策做出回应
点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达点击进入—>【顶会/顶刊】投稿交流群添加微信号:CVer2233,小助手拉你进群!扫描下方二维码,加入CVer学术星球!可以获得最新顶会/顶…...
Mirage Flow 与卷积神经网络(CNN)的跨模态融合应用
Mirage Flow 与卷积神经网络(CNN)的跨模态融合应用 你有没有想过,让机器不仅能“看见”图片,还能像人一样“理解”并“描述”图片里的故事?比如,给一张复杂的医学影像,它不仅能圈出病灶&#x…...
M2LOrder模型在AI编程助手场景的应用:代码注释情感分析
M2LOrder模型在AI编程助手场景的应用:代码注释情感分析 1. 引言 你有没有在代码注释里写过“这里有个天坑,后面的人小心”或者“TODO: 这个逻辑太绕了,得重构”?这些看似随手的吐槽,其实藏着开发者最真实的情绪。代码…...
实战应用:基于快马AI与OpenClaw构建Mac本地电商价格监控系统
最近在做一个电商价格监控的小工具,发现用OpenClaw配合Mac本地环境搭建特别方便。这里分享一下我的实战经验,希望能帮到有类似需求的同学。 为什么选择OpenClaw OpenClaw是个轻量级的Python爬虫框架,特别适合需要快速搭建数据采集系统的场景…...
