当前位置: 首页 > 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;**…...

剑指offer搜索二维矩阵

题目连接 https://leetcode.cn/problems/search-a-2d-matrix-ii/’ 代码 自己想出来的 解法一 初始化两个指针&#xff0c;i0,j列数-1 若此时matrix[i][j]target 则返回true 若此时matrix[i][j]>target,表明在第j列中不可能存在target&#xff0c;因为列是升序的 若此时ma…...

如何设置浏览器不缓存网页

设置浏览器不缓存网页可以通过多种方法实现&#xff0c;以下是一些常见的策略&#xff1a; HTTP响应头控制&#xff1a; Cache-Control&#xff1a;这是最常用的HTTP头之一&#xff0c;用于控制响应的缓存行为。例如&#xff1a; Cache-Control: no-cache, no-store, must-r…...

Iris简单实现Go web服务器

package mainimport ("github.com/kataras/iris" )func main() {app : iris.New() // 实例一个iris对象//配置路由app.Get("/", func(ctx iris.Context) {ctx.WriteString("Hello Iris")})app.Get("/aa", func(ctx iris.Context) {ct…...

后端项目java中字符串、集合、日期时间常用方法

我这里只介绍了项目中最常用的哈,比如像集合有很多,但我们最常用的就是ArrayList。 然后我这里会以javascript中的字符串、数组的方法为基准来实现,有些方法js和java会有些区别也会介绍 字符串 每次修改 String 对象都会创建一个新的对象,而 StringBuffer 可以在同一个对象…...

【Spring事务】深入浅出Spring事务从原理到源码

什么是事务 保证业务操作完整性的一种数据库机制 &#xff08;driver 驱动&#xff09;事务特定 ACID A 原子性 &#xff08;多次操作 要不一起成功 要不一起失败 &#xff08;部分失败 savepoint&#xff09;&#xff09; C 一致性 &#xff08;事务开始时数据状态&#xff0c…...

vue.js滑动到顶便锁定位置

<template><div><div class"nav"></div><div class"searchBar" id"searchBar"><ul :class"searchBarFixed true ? isFixed :"> <li>区域<i class"iconfont icon-jiantouxia"…...

EdgeX Core Service 核心服务之 Core Command 命令

EdgeX Core Service 核心服务之 Core Command 命令 一、概述 Core-command(通常称为命令和控制微服务)可以代表以下角色向设备和传感器发出命令或动作: EdgeX Foundry中的其他微服务(例如,本地边缘分析或规则引擎微服务)EdgeX Foundry与同一系统上可能存在的其他应用程序…...

掌握常用HTML标签:创建个人简介网页

任务目标 理解HTML文档的基本结构&#xff0c;掌握常见的HTML标签及其用途&#xff0c;创建一个简单的个人简介网页。 学习内容脑图 #mermaid-svg-5GTdqH41gawr4v0h {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

音视频学习(二十五):ts

TS&#xff08;MPEG-TS&#xff0c;MPEG Transport Stream&#xff09; 是一种广泛应用于流媒体传输和存储的容器格式。它最早由 MPEG&#xff08;Moving Picture Experts Group&#xff09;组织制定&#xff0c;用于视频和音频的压缩编码。在 HLS&#xff08;HTTP Live Stream…...

10. 虚拟机VMware Workstation Pro下共享Ubuntu和Win11文件夹

本文记录当前最新版虚拟机VMware Workstation Pro&#xff08;2024.12&#xff09;如何在win11下共享文件&#xff0c;以实现Windows与Ubuntu互传文件的目的。 1. 创建共享文件夹 1.1 先关闭虚拟机的客户机&#xff0c;打开虚拟机设置 1.2 在虚拟机设置界面找到“选项”->“…...