首页 > 编程语言 >算法题笔记

算法题笔记

时间:2023-09-05 14:14:37浏览次数:60  
标签:ListNode target nums int 笔记 middle 算法 节点

数组

常用STL和遍历

//1.常用STL
nums.size();//返回数组元素数量
nums.begin();
nums.end();
sort(A.begin(), A.end()); // 快速排序
    
//2.遍历
int size = nums.size();
for(int i = 0; i < size; i++){}

二分查找

int left = 0;
int right = nums.size() - 1; // 定义target在左闭右闭的区间里,[left, right]
while (left <= right) { // 当left==right,区间[left, right]依然有效,所以用 <=
    int middle = left + ((right - left) / 2);// 防止溢出 等同于(left + right)/2
    if (nums[middle] > target) {
        right = middle - 1; // target 在左区间,所以[left, middle - 1]
    } else if (nums[middle] < target) {
        left = middle + 1; // target 在右区间,所以[middle + 1, right]
    } else { // nums[middle] == target
        return middle; // 数组中找到目标值,直接返回下标
    }

双指针

双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。

滑动窗口

while (sum >= s) {
    subLength = (j - i + 1); // 取子序列的长度
    result = result < subLength ? result : subLength;
    sum -= nums[i++]; // 这里体现出滑动窗口的精髓之处,不断变更i(子序列的起始位置)
}

链表

定义与初始化

//1.单链表定义
struct ListNode {
    int val;  // 节点上存储的元素
    ListNode *next;  // 指向下一个节点的指针
    ListNode(int x) : val(x), next(NULL) {}  // 节点的构造函数
};

//2.初始化节点(常用于初始化虚拟节点)
ListNode* dummyHead = new ListNode(0);
dummyHead->next = head;

删除节点

//3.删除节点
ListNode* tmp = head;
head = head->next;
delete tmp;//C++需要手动删除内存

标签:ListNode,target,nums,int,笔记,middle,算法,节点
From: https://www.cnblogs.com/filosefer/p/17679259.html

相关文章

  • 前端项目环境搭建笔记
    @目录简介一、vue3组件通信方式1.1props1.2自定义事件1.2.1原生DOM事件1.2.2自定义事件1.3全局事件总线1.4v-model1.5useAttrs1.6ref与$parent1.7provide与inject1.8pinia1.9slot二、搭建后台管理系统模板2.1项目初始化2.1.1环境准备2.1.2初始化项目2.2项目配置一、eslint......
  • 形式化建模与分析方法-笔记
    第五章命题逻辑定义定义3-1对事物作出确定判断的陈述句称为命题。当符号P表示一个确定命题时,该符号称为命题常元。当符号P表示任意一个命题时,该符号称为命题变元。原子命题:原子命题是不能再细分的命题复合命题:原子命题通过命题联结词构造的命题。(命题联结词:非合取......
  • LightGCN阅读笔记
    LightGCN阅读笔记​ 现有的将GCN缺乏对GCN的消融分析,并且该论文发现特征变换和非线性激活对协同过滤一点用都没有,甚至增加了训练的难度并且降低了推荐的效果。​ 造成上面结果的原因是,GCN最初是应用于属性图上的节点分类,其中每个节点都有丰富的属性作为属性特征,而在协同过滤的用......
  • 【算法】斐波那契数列与台风的故事
    在小岛的一个海滨小镇上,住着一个名叫苏菲的女孩。苏菲一家人靠海为生,她的生活简单而朴素,与大自然和谐共生。每天,苏菲都会来到海边,欣赏那美丽的日出和日落,感受着大海的呼吸。然而,小岛的美丽风光并非一成不变。每年夏季,热带气旋活跃,台风频繁登陆,给小岛带来了严重的危害。有一天,苏......
  • 算法时间复杂度和空间复杂度简介
    评估算法的核心指标1时间复杂度2空间复杂度 空间复杂度就是算法解决一个问题时额外占用的内存空间是多大时间复杂度就是算法解决一个问题时数据量和运行时间的关系 一般我们评判算法的优劣首先考虑的就是时间复杂度。 时间复杂度什么是常数时间操作?执行时间固定的......
  • 基于遗传算法的排课系统
    系统使用技术:SSH前端技术:css、js等开发工具:eclipse数据库:mysql5.7项目介绍:系统框架采用SSH,前端使用css、js等,适合基础中等或以下,做排课系统的同学。系统主要分为三个角色:管理员、教师、学生,主要功能包括:专业信息管理、班级信息管理、教室信息管理、课程信息管理、教师信息管理、自......
  • m常用信道编译码算法matlab对比仿真,包括RS,BCH,turbo,LDPC以及RSBCH级联等
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要编码和解码是数字通信系统中的关键技术,用于提高数据传输的可靠性。RS码(Reed-Solomon码)、BCH码(Bose-Chaudhuri-Hocquenghem码)、Turbo码、LDPC码(Low-DensityParity-Check码)以及RSBCH级联码是常见的编码方案,每种编码......
  • ELK-windows搭建笔记
    一、        介绍Elasticsearch:开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash:对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。Kibana:以为Logstash和ElasticSearch提供......
  • 加密算法总结
    AESAdvancedEncryptionStandard对称加密算法RSARivest-Shamir-Adleman非对称加密算法DESDataEncryptionStandard对称加密算法ECCEllipticCurveCryptography椭圆曲线密码;非对称加密算法CMACCipher-basedMessageAuthenticationCode基于分组密码的消息认证码算法SHASecureHa......
  • openGauss学习笔记-60 openGauss 数据库管理-逻辑存储结构
    openGauss学习笔记-60openGauss数据库管理-逻辑存储结构openGauss的数据库节点负责存储数据,其存储介质也是磁盘,本节主要从逻辑视角介绍数据库节点都有哪些对象,以及这些对象之间的关系。数据库逻辑结构如图1。图1数据库逻辑结构图说明:Tablespace,即表空间,是一个目录,可......