当前位置: 首页 > news >正文

LeetCode 刷题笔记

LeetCode 刷题笔记

1. 20241218

(1)2447

std::gcdC++17引入的一个函数,用于计算两个整数的最大公因数。位于<numeric>头文件中。

#include <iostream>
#include <numeric> // std::gcdint main() {int a = 36;int b = 60;// 计算两个整数的最大公因数int gcd = std::gcd(a, b);// 输出最大公因数std::cout << "The GCD of " << a << " and " << b << " is: " << gcd << std::endl;return 0;
}

计算一组数的最大公因数

function gcd(a, b):while b ≠ 0:temp = bb = a % ba = tempreturn afunction gcd_of_list(numbers):if numbers is empty:return 0result = numbers[0]for i from 1 to length(numbers) - 1:result = gcd(result, numbers[i])return result// 示例使用
numbers = [24, 36, 48, 60]
result = gcd_of_list(numbers)
print("The GCD of the given numbers is: " + result)

(2)3319

C++中,可以使用标准库中的std::priority_queue来实现最大堆和最小堆。默认情况下,std::priority_queue是一个最大堆,但能够通过指定比较函数来实现最小堆。

最大堆
#include <iostream>
#include <queue>
#include <vector>int main() {// 创建一个优先队列(最大堆)std::priority_queue<int> maxHeap;// 向堆中添加元素maxHeap.push(10);maxHeap.push(20);maxHeap.push(30);maxHeap.push(5);maxHeap.push(15);// 输出堆顶元素std::cout << "Top element: " << maxHeap.top() << std::endl;// 输出并移除堆中的所有元素std::cout << "Elements in the max heap: ";while (!maxHeap.empty()) {std::cout << maxHeap.top() << " "; // 获取堆顶元素maxHeap.pop(); // 移除堆顶元素}std::cout << std::endl;return 0;
}
最小堆
#include <iostream>
#include <queue>
#include <vector>
#include <functional>int main() {// 创建一个优先队列(最小堆)std::priority_queue<int, std::vector<int>, std::greater<int>> minHeap;// 向堆中添加元素minHeap.push(10);minHeap.push(20);minHeap.push(30);minHeap.push(5);minHeap.push(15);// 输出堆顶元素std::cout << "Top element: " << minHeap.top() << std::endl;// 输出并移除堆中的所有元素std::cout << "Elements in the min heap: ";while (!minHeap.empty()) {std::cout << minHeap.top() << " "; // 获取堆顶元素minHeap.pop(); // 移除堆顶元素}std::cout << std::endl;return 0;
}
自定义比较器
#include <iostream>
#include <queue>
#include <vector>struct Compare {bool operator()(const std::pair<int, int>& a, const std::pair<int, int>& b) {return a.second > b.second; // 按第二个元素从小到大排序}
};int main() {std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int>>, Compare> pq;pq.push({1, 10});pq.push({2, 5});pq.push({3, 20});while (!pq.empty()) {auto top = pq.top();std::cout << "(" << top.first << ", " << top.second << ") ";pq.pop();}// 输出:(2, 5) (1, 10) (3, 20)return 0;
}
#include <iostream>
#include <queue>
#include <vector>int main() {auto compare = [](int a, int b) {return a > b; // 小顶堆};std::priority_queue<int, std::vector<int>, decltype(compare)> pq(compare);pq.push(10);pq.push(5);pq.push(20);while (!pq.empty()) {std::cout << pq.top() << " "; // 输出:5 10 20pq.pop();}return 0;
}
常用方法

(1)push(const T& value):向堆中添加元素
(2)pop():移除堆顶元素
(3)top():获取堆顶元素
(4)empty():检查堆是否为空
(5)size():获取堆中元素的数量

(3)2316

std::queueC++ 标准库中的一个容器适配器,用于实现先进先出(FIFO)的数据结构。

常用方法

(1)构造函数:
queue():创建一个空的队列。
queue(const Container &cont):使用给定的容器创建队列。
queue(const queue &other):拷贝构造函数。
(2)push(const T& value):向队列的末尾添加元素。
(3)pop():移除队列的第一个元素。
(4)front():获取队列的第一个元素。
(5)back():获取队列的最后一个元素。
(6)empty():检查队列是否为空。
(7)size():获取队列中元素的数量。

2. 20241219

(1)1300

二分查找
C++ 标准库中,相关的函数主要有 std::lower_boundstd::upper_boundstd::equal_rangestd::binary_search。这些函数都位于 <algorithm> 头文件中,并且用于在已排序的范围内进行查找操作。

// 返回一个迭代器,指向第一个大于value的元素
// 如果所有元素都不大于value, 则返回last
// 使用 std::upper_bound 的前提是容器中的元素必须是已排序的。如果容器未排序,结果将是未定义的。
template< class ForwardIt, class T >
ForwardIt upper_bound( ForwardIt first, ForwardIt last, const T& value );
// 返回一个迭代器,指向第一个不小于 value 的元素
// 如果所有元素都小于 value,则返回 last
// 使用 std::lower_bound 的前提是容器中的元素必须是已排序的。如果容器未排序,结果将是未定义的
template< class ForwardIt, class T >
ForwardIt lower_bound( ForwardIt first, ForwardIt last, const T& value );
// 返回一个 std::pair 对象,包含两个迭代器:
// first:指向第一个不小于 value 的元素。
// second:指向第一个大于 value 的元素。
// 使用 std::equal_range 的前提是容器中的元素必须是已排序的。如果容器未排序,结果将是未定义的。
template< class ForwardIt, class T >
std::pair<ForwardIt, ForwardIt> equal_range( ForwardIt first, ForwardIt last, const T& value );
// 如果在范围内找到等于 value 的元素,则返回 true;否则返回 false
template< class ForwardIt, class T >
bool binary_search( ForwardIt first, ForwardIt last, const T& value );

3. 20241222

(1)3286

std::listC++ 标准模板库(STL)中的一个容器,提供了双向链表的实现。它允许高效地插入和删除元素,但在随机访问性能上不如 std::vector
特性
(1)双向链表
每个节点都包含一个数据和两个指针,分别指向前一个节点和后一个节点。
插入、删除操作的时间复杂度为 O(1)
(2)动态大小
自动调整大小,不需要手动管理内存。
(3)不支持随机访问
使用迭代器遍历元素,但不支持 [] 运算符。
(4)稳定性
在插入和删除操作后,迭代器和引用仍然有效。

常用操作
以下是一些常用的 std::list 成员函数:
(1)构造函数

std::list<int> l1;                  // 默认构造,空列表
std::list<int> l2(5, 10);           // 初始化 5 个值为 10 的元素
std::list<int> l3(l2.begin(), l2.end()); // 用迭代器范围初始化

(2)插入和删除

l1.push_back(1);    // 在尾部插入
l1.push_front(0);   // 在头部插入
l1.pop_back();      // 删除尾部元素
l1.pop_front();     // 删除头部元素
l1.insert(l1.begin(), 20); // 在指定位置插入
l1.erase(l1.begin());      // 删除指定位置的元素
l1.clear();        // 清空列表

(3)访问元素

l1.front();  // 返回头部元素
l1.back();   // 返回尾部元素

(4)大小相关

l1.empty();      // 检查列表是否为空
l1.size();       // 返回元素个数

(5)排序和反转

l1.sort();       // 排序,默认按升序
l1.reverse();    // 反转列表

(6)合并和去重

l1.merge(l2);     // 合并两个已排序列表
l1.unique();      // 删除相邻的重复元素

适用场景
需要频繁插入或删除操作的场景。
不需要随机访问时。
数据大小动态变化频繁时。

相关文章:

LeetCode 刷题笔记

LeetCode 刷题笔记 1. 20241218 &#xff08;1&#xff09;2447 std::gcd是C17引入的一个函数&#xff0c;用于计算两个整数的最大公因数。位于<numeric>头文件中。 #include <iostream> #include <numeric> // std::gcdint main() {int a 36;int b 60…...

【Java基础面试题034】Java泛型擦除是什么?

回答重点 泛型擦除指的是Java编译器在编译时将所有泛型信息删除的过程&#xff0c;以确保与Java1.4及之前的版本保持兼容 泛型参数在运行时会被替换为其上界&#xff08;通常是Object&#xff09;&#xff0c;这样一来在运行时无法获取泛型的实际类型。 作用&#xff1a;泛型…...

使用ssh命令远程登录服务器的两种便捷方式:简化ssh命令、创建bat文件

1. 简化ssh命令 使用记事本打开该路径C:\Users\<你的用户名>\.ssh\下的config文件&#xff0c;粘贴以下代码&#xff1a; Host myserverHostName 192.168.1.1(这里换成你的ip地址)User your_username(这里换成你的用户名)Port 22保存文件后现在在cmd中直接输入ssh myserv…...

access数据库代做/mysql代做/Sql server数据库代做辅导设计服务

针对Access数据库、MySQL以及SQL Server数据库的代做和辅导设计服务&#xff0c;以下是一些关键信息和建议&#xff1a; 一、服务概述 这些服务通常包括数据库的设计、创建、优化、维护以及相关的编程和查询编写等。无论是Access这样的桌面关系数据库管理系统&#xff08;RDB…...

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项任务书正式赛题

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项任务书-A 目录 一、竞赛阶段 二、竞赛任务书内容 &#xff08;一&#xff09;拓扑图 &#xff08;二&#xff09;模块A 基础设施设置与安全加固(200分) &#xff08;三&#xff09;B模块安全事件响应/网络安全数据取证/…...

Android学习(五)-Kotlin编程语言-面向对象中的 继承-构造函数-接口三模块学习

首先&#xff0c;我们需要定义一个 Person 类&#xff1a; open class Person {var name ""var age 0fun eat() {println("$name is eating.")} } 注意&#xff0c;Person 类前面加上了 open 关键字&#xff0c;表示这个类可以被继承。在 Kotlin 中&am…...

滑动窗口 + 算法复习

维护一个满足条件的窗口大小&#xff0c;然后进行双指针移动 1.最长子串 题目链接&#xff1a;1.最长子串 - 蓝桥云课 #include<bits/stdc.h> #define int long long using namespace std; string s; int k; signed main() {int max_len0,left0;cin>>s>>k;…...

贪心算法 greedy

文章目录 参考贪心算法[Leetcode455 分发饼干](https://leetcode.cn/problems/assign-cookies/description/)分析题解 [Leetcode135 分发糖果](https://leetcode.cn/problems/assign-cookies/description/)分析题解 leetcode435无重叠区间分析题解 参考 https://github.com/ch…...

基于python的家教预约网站-家教信息平台系统

标题:基于 Python 的家教预约网站-家教信息平台系统 内容:1.摘要 本文介绍了一个基于 Python 的家教预约网站-家教信息平台系统。该系统旨在为学生和家长提供一个方便、高效的家教预约平台&#xff0c;同时也为家教老师提供一个展示自己教学能力和经验的机会。本文详细介绍了系…...

基于深度学习多图像融合的屏幕缺陷检测方案

公司项目&#xff0c;已申请专利。 深度学习作为新兴技术在图像领域蓬勃发展&#xff0c;因其自主学习图像数据特征的性能避免了人工设计算法的繁琐&#xff0c;精准的检测性能、高效的检测效率以及对各种不同类型的图像任务都有比较好的泛化性能&#xff0c;使得深度学习技术在…...

MySQL基础笔记(三)

在此特别感谢尚硅谷-康师傅的MySQL精品教程 获取更好的阅读体验请前往我的博客主站! 如果本文对你的学习有帮助&#xff0c;请多多点赞、评论、收藏&#xff0c;你们的反馈是我更新最大的动力&#xff01; 创建和管理表 1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数…...

【JetPack】WorkManager笔记

WorkManager简介&#xff1a; WorkManager 是 Android Jetpack 库中的一个重要组件。它用于处理那些需要在后台可靠执行的任务&#xff0c;这些任务可以是一次性的&#xff0c;也可以是周期性的&#xff0c;甚至是需要满足特定条件才执行的任务。例如&#xff0c;它可以用于在后…...

docker 安装 ftp

前言 经多次测试 不知道为什么 必须添加被动模式跟端口才可以 连接成功&#xff0c;有知道为什么可以评论下 下载镜像 docker pull fauria/vsftpd启动ftp 服务 参考链接 docker run -d -v /etc/localtime:/etc/localtime:ro -v /home/dr/data/ftp:/home/vsftpd \ -e "…...

5.C语言内存分区-堆-栈

目录 内存分区 运行之前 代码区 全局初始化数据区 、静态数据区 (data) 未初始化数据区(bss&#xff08;Block Started by Symbol&#xff09;区) 总结 运行之后 代码区 &#xff08;text segment&#xff09; 未初始化数据区(bss) 全局初始化数据区&#xff0c;静态…...

传统CV算法——基于opencv的答题卡识别判卷系统

基于OpenCV的答题卡识别系统&#xff0c;其主要功能是自动读取并评分答题卡上的选择题答案。系统通过图像处理和计算机视觉技术&#xff0c;自动化地完成了从读取图像到输出成绩的整个流程。下面是该系统的主要步骤和实现细节的概述&#xff1a; 1. 导入必要的库 系统首先导入…...

国产 HighGo 数据库企业版安装与配置指南

国产 HighGo 数据库企业版安装与配置指南 1. 下载安装包 访问 HighGo 官方网站&#xff08;https://www.highgo.com/&#xff09;&#xff0c;选择并下载企业版安装包。 2. 上传安装包到服务器 将下载的安装包上传至服务器&#xff0c;并执行以下命令&#xff1a; [rootmas…...

「Mac畅玩鸿蒙与硬件46」UI互动应用篇23 - 自定义天气预报组件

本篇将带你实现一个自定义天气预报组件。用户可以通过选择不同城市来获取相应的天气信息&#xff0c;页面会显示当前城市的天气图标、温度及天气描述。这一功能适合用于动态展示天气信息的小型应用。 关键词 UI互动应用天气预报数据绑定动态展示状态管理 一、功能说明 自定义…...

Springboot @Transactional使用时需注意的几个问题

一、事务的隔离级别 在Springboot应用中&#xff0c;如果我们想实现方法一旦执行有异常产生&#xff0c;就触发事务回滚&#xff0c;可以在方法上面添加Transactional注解。如果应用采用mysql数据库&#xff0c;虽然mysql本身也有事务隔离机制&#xff0c;但在Sping数据库的应…...

数字经济下的 AR 眼镜

目录 1. &#x1f4c2; AR 眼镜发展历史 1.1 AR 眼镜相关概念 1.2 市面主流 XR 眼镜 1.3 AR 眼镜大事记 1.4 国内外 XR 眼镜 1.5 国内 AR 眼镜四小龙 2. &#x1f531; 关键技术 2.1 AR 眼镜近眼显示原理 2.2 AR 眼镜关键技术 2.3 AR 眼镜技术难点 3. &#x1f4a…...

力扣150题

88. 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 **注意&#xff1a;**…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...