leetcode中C++内部提供的函数汇总

由LeetCode C++ sort函数第三个参数cmp必须声明为static 引发的思考 写在前面:我写博客主要是为了对知识点的总结、回顾和思考,把每篇博客写得通俗易懂是我的原则,因为能让别人看懂,才是真的学会了 从Math到CS的跨专业经历,让我格外珍惜学习时间,更加虚心好学,而分享技术和知识是快乐的,非常欢迎大家和我一起交流学习,期待与您的进一步交流 背景 你是否在刷LeetCode时出现过下面的情况? 而加上static就不会报错 具体解释 在class类中的sort函数的...... 阅读详情

        在刷leetcode的时候,经常就发现别人的代码有很多自带的函数,而自己根本不知道,这就有点不爽了,下面是我目前刷题遇到的一些函数,持续更新。

----------------------------强行分割线---------------------------

 

数组

在数组的最开始插入一个元素,比如数字 1

digits.insert(digits.begin(),1);

合并两个vector

result.insert(result.end(),vector1.begin(),vector1.end())

数组还有一个函数是end()函数,比如 a.size() == 5 ,那么 a.end()指向的是a[5],即最后一个元素的后一个元素

// 表示最后一个元素的后一个元素
digits.end()

获得字符串/数组的长度

s.length();
s.size();

重设数组大小

s.resize(100);    // 此时里面所有元素为 0
cout<<s.size()<<endl;
for(int item:s)
    cout<<item;    // 输出全是0

vector尾部插入一个数据,在vector头文件里面

res.push_back(nums1[l1]);

排序从小到大

sort(nums1.begin(),nums1.end());

排序从大到小(自定义排序规则)

#include<algorithm>
#include<iostream>
#include<vector>

using namespace std;

// 自定义排序函数
bool cmp(int a,int b){
    return a>b;
}

int main(){
    vector<int> arr;
    for(int i=0; i<10; i++){
        arr.push_back(i);
    }
    // 自定义逆序
    sort(arr.begin(),arr.end(),cmp);
    // STL逆序
    // reverse(arr.begin(),arr.end());
    for(int num:arr)
        cout<<num<<endl;
    return 0;
}

翻转数组

// 注意下面这个函数是将整个数组翻转,不是排序
// 如果要从大到小排序,需要自定义排序规则
reverse(nums1.begin(),nums1.end());

查找元素

// 后面再添加

 

字符串

翻转字符串

// result is string
reverse(result.begin(),result.end())

截取字符串

str.substr(start_index,len)
set

 set结构   C++中set的用法

set的各成员函数列表如下:

1. begin()--返回指向第一个元素的迭代器

2. clear()--清除所有元素

3. count()--返回某个值元素的个数

4. empty()--如果集合为空,返回true

5. end()--返回指向最后一个元素的迭代器

6. equal_range()--返回集合中与给定值相等的上下限的两个迭代器

7. erase()--删除集合中的元素

8. find()--返回一个指向被查找到元素的迭代器

9. get_allocator()--返回集合的分配器

10. insert()--在集合中插入元素

11. lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器

12. key_comp()--返回一个用于元素间值比较的函数

13. max_size()--返回集合能容纳的元素的最大限值

14. rbegin()--返回指向集合中最后一个元素的反向迭代器

15. rend()--返回指向集合中第一个元素的反向迭代器

16. size()--集合中元素的数目

17. swap()--交换两个集合变量

18. upper_bound()--返回大于某个值元素的迭代器

19. value_comp()--返回一个用于比较元素间的值的函数
// copy的
#include<set>
#include<iostream>
using namespace std;
int main()
{
    int i;
    int arr[5] = {0,1,2,3,4};
    set<int> iset(arr,arr+5);

    iset.insert(5);
    cout<<"size:"<<iset.size()<<endl;
    cout<<"3 count = "<<iset.count(3)<<endl;
    iset.erase(1);

    set<int>::iterator ite1 = iset.begin();
    set<int>::iterator ite2 = iset.end();
    for(;ite1!=ite2;ite1++)
    {
        cout<<*ite1;
    }
    cout<<endl;

    ite1 = iset.find(3);
    if(ite1!=iset.end())
        cout<<"3 found"<<endl;

    ite1 = iset.find(1);
    if(ite1!=iset.end())
        cout<<"1 not found"<<endl;
}

 

map

map用法 map的使用

map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的

声明一个map

map<int,int> map_arr1;

当前map中元素个数


    map<int,int> result;
    for(int i=0; i<10; i++){
        result[i] = i;
    }
    cout<<result.size()<<endl;

查找并返回查找结果

map<int,int>::iterator iter = map_arr1.find(1)
if(iter == map_arr1.end()){
//                 查找失败,新建
    map_arr1[1] = 1;
}else{
//                 查找成功                
}

单独获得 map 的键值(配合查找使用)

// 键
map->first;
// 值
map->second;

查找是否有这个东西出现

//由于map不包含重复的key,因此map.count(key)取值为0,或者1,表示是否包含
map_arr1.count(1);

插入

//用insert函數插入pair,没有验证是否正确
    mapStudent.insert(pair<string, string>("r000", "student_zero"));
 
//用"array"方式插入
    mapStudent["r123"] = "student_first";
    mapStudent["r456"] = "student_second";

删除map的某个元素


            map<int,int>::iterator iter = map1.begin();
            while(iter != map1.end()){
                map1.erase(iter);
            }

遍历map元素

        
        map<int,int>::iterator curr = map_arr.begin();
        while(curr != map_arr.end()){
            cout<<curr->first <<":"<<curr->second<<endl;
            curr ++;
        }
        // 也可以使用for循环遍历
        for(curr=map_arr.begin(); curr!=map_arr.end(); curr++){
            cout<<curr->first <<":"<<curr->second<<endl;
        }

使用map对vector计数

        map<int,int> count;
         // nums是一个vector
        for(int num:nums){
            // map有一个性质,就是如果没有出现过就会新建
            count[num] ++;
        }

 

栈 stack

初始化栈

stack<int> s;

入栈

s.push(1);

出栈

s.pop();

栈空

bool b = s.empty()    // 栈空返回true

 

得到栈顶元素但不弹出

int a = s.top();

得到栈顶元素并弹出

// 是的,没错,就是不能一下子既弹出又得到值
int a = s.top();
s.pop();

 

 

队列

声明一个队列

queue<TreeNode*> q;

队列长度

q.size()

进队

q.push(root);

出队,并不能获得出队元素

q.pop();

获得队头元素,但不会弹出这个元素

TreeNode *temp = q.front();

所以,获得队头元素并弹出

TreeNode *temp = q.front();
q.pop();

获得队尾元素,但不会弹出这个元素

q.back()

 

 

 

----------------------------强行分割线---------------------------

 

链表

 

 

 

 

 

 

----------------------------强行分割线---------------------------

 

----------------------------强行分割线---------------------------

 

 

 

 

 

----------------------------强行分割线---------------------------

----------------------------强行分割线---------------------------

力扣刷题实践:C++解题技巧与项目记录 力扣(LeetCode)是一个在线编程平台,为广大程序员提供了海量的编程题目,致力于帮助他们提升算法和编程能力,特别是为那些准备技术面试的人士提供了实用的学习资源。该平台不仅涵盖了从基础到高级的各类算法题,还设计了模拟面试的功能,通过与真实面试相似的题目和环境,让求职者在实战中锻炼自己。此外,力扣还提供了讨论区,让程序员们可以相互交流思路、算法和解决方案,促进了知识的共享与技术的交流。 阅读详情

相关推荐

BookSim2.0 教程

本文是yz关于BookSim2.0的个人学习经验与教程。 1.介绍 什么是BookSim2.0 BookSim2.0 是周期正确的互联网络模拟器(A Cycle-Accurate Interconnection Network Simulator),被设计用来伴随William James Dally 等人出版的的书籍 Principles and Practices of INterconnection on Networks使用。 此后其功能不断得到扩展。当前的主要版本 BookSim 2.0 支持广泛

更新一些计算机体系架构NoC,GEM5, AXI4,还有machine learning 的日常 5736

leetcode刷题常用C++函数

1. 字符串截取 截取下标从2(第3个字符)开始截取3个字符的字符串 string str = "ABCDEFG"; string cut= str.substr(2,3); 最终,cut="CDE",即从下标为2开始向后数3位 2. 字符串扩容 string s(len); s.resize(len+len2); ...

langtaosha1996的博客 801

contextcapture多区块点云_多源点云数据融合的建筑物精细化建模

本文内容来源于《测绘通报》2020年第8期,审图号:GS(2020)3611号多源点云数据融合的建筑物精细化建模王树臻1, 郑国强1, 王光生1, 胡玉民2, 张德怀2, 亓伟3 ...

weixin_36301639的博客 1825

C++刷LeetCode常用容器和函数

字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。std::unordered_set底层实现为哈希表,std::set 和std::multiset 的底层实现是红黑树,红黑树是一种平衡二叉搜索树,所以key值是有序的,但key不可以修改,改动key值会导致整棵树的错乱,所以只能删除和增加。此函数返回值为队列的头部元素,常与pop()函数一起,先通过front()获得队列头部元素,然后将其从队列中删除;在栈顶添加一个元素,无返回值;

weixw99的博客 1330

从PX4的FRD到Mavros的FLU:手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点

本文详细解析了PX4的FRD与Mavros的FLU坐标系转换问题,手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点。通过实战指南和常见错误排查,帮助开发者避免方向错乱问题,提升无人机控制精度。

weixin_33712987的博客 422

从工艺文件到寄生分析:手把手教你用华大九天RCExplorer做版图预检(附ITF文件解析)

本文详细介绍了华大九天RCExplorer工具在模拟IC和版图设计中的应用,从工艺文件解析到寄生参数提取的全流程。通过ITF文件的深度解析和实战案例,帮助工程师掌握金属层、介质层及通孔参数的关键影响,提升设计效率与准确性。文章还提供了与StarRC工作流集成的实用技巧,是国产EDA工具应用的权威指南。

weixin_42522552的博客 406

力扣刷题常用的c++库函数

2,min函数 2,sort函数 (1)第一个参数first:是要排序的数组的起始地址。(2)第二个参数last:是结束的地址(最后一个数据的后一个数据的地址)(3)第三个参数comp是排序的方法:可以是从升序也可是降序。如果第三个参数不写,则默认的排序方法是从小到大排序。 sort()函数和lambda表达式 1.reverse函数可以反转一个字符串 2.反转字符数组 3.反转整型数组 4,swap函数 5,memset()函数 C 库函数 **void memset(void str,

weixin_45510561的博客 3427

基于阻抗控制的工业机器人轨迹跟踪系统 Simulink/Simscape 仿真

  本文是对文献 [1] 的复现。 关于阻抗控制   阻抗控制的提出可以追溯到 1984 年,Neville Hogan 在 American Control Conference 发表的 Impedance Control:An Approach to Manipulation ,次年,Hogan N. 又在 Journal of Dynamic Systems Measurement and Control-transactions of The Asme 发表了阻抗控制经典三部曲 —— Imped.

-贝塔- 的博客 2万+

leetcode学习记录(C++)——第一题

1.题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 注:你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 2.原始模板 class Solution { public: vector<int> twoSum(vector<int>& nums...

LiuXF93的博客 817

KUKA机器人 - 从开机到自动运行

注1:本文仅代表本人对机器人使用的一些建议,在使用机器人前,还请详细阅读库卡机器人官方资料,道路千万条,安全第一条!!! 注2:技术有限,欢迎各位大大在阅读过程中发现各类问题,并且批评指正!!! 目录 一、准备工作 1. 机器人上电完成 2. 电脑安装Workvisual 二、学习手动移动机器人 三、项目配置 1. 设置机器人IP地址 2.电脑和机器人通过网线连接 3.查找并打开项目 4. 通讯配置 5. 项目上传 6. 检验IO配置 四、编程 1.新建程序 2. 程序...

yilunyao的博客 1万+

0基础手把手搭建 Trae\+Seedance2\.0 真人短剧生成智能体(可直接运行)

前言:本文专为0基础新手编写,全程无复杂代码、无专业术语,一步一截图提示(操作路径清晰),只需跟着点鼠标、复制粘贴,就能搭建出可自动生成真人短剧的智能体,生成的短剧可直接导出发布。核心工具:Trae(字节跳动AI IDE,免费)+ Seedance2.0(真人视频生成API,公测免费),无需提前学习编程、设计,全程10-15分钟搞定。 适用人群:0基础小白、想快速生成真人短剧(自媒体、短视频创作者)、无需懂技术即可实现自动化短剧生成的人群。

skygulangfendouz的专栏 1058

Leetcode题解------C++语言实现

283. 移动零 // 时间复杂度: O(n) // 空间复杂度: O(n) class Solution { public: // 通过引用的方式传入一个vector类型的数组 可以对其进行修改 void moveZeroes(vector<int>& nums) { vector<int> nonZeroE...

Yasin的博客 885

Windows 11 安装 Miniforge,配置国内源

本文详细介绍了在 Windows 11 系统中安装 Miniforge 的完整流程,包括下载、安装选项设置、配置国内镜像源(如清华大学源)以加速包管理,并启用 mamba 提升依赖解析与安装速度。同时涵盖 conda 与 mamba 的基本使用验证、PowerShell 初始化及环境提示符优化,帮助用户快速搭建高效、开源、免费的 Python 科学计算环境。

寒水馨 · 轻量级技术文档 · hanshuixin.org 4515

刷题汇总(五)leetcode 热题 HOT 100 C++ 答案总结

1、两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] clas...

zhoujie1994的博客 8134

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Leetcode(力扣)题解--C++实现(一)

Leetcode(力扣)题解–C++实现(一) 文章目录Leetcode(力扣)题解--C++实现(一)题目 1 [平方数之和](https://leetcode-cn.com/problems/sum-of-square-numbers/)题目 2 [两数之和 II - 输入有序数组](https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/)题目 3 [反转字符串中的元音字母](https://leetcode-cn.com/p

qq_43419412的博客 2707

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

如何将力扣的C++代码在自己的编译器上运行?(力扣的输入输出)

如何将力扣的代码在自己的编译器上运行?

sweetorange_的学习笔记 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【转】【力扣】报错汇总

报错信息

qq_44626762的博客 3560

力扣LeetCode打开转盘锁 C++实现

力扣LeetCode打开转盘锁 C++实现 写在开头 边做力扣的题目边学C++,我太难了。 题目描述 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。 锁的初始数字为 ‘0...

weixin_42369779的博客 601

Clion配置单个project下可以运行多个CPP文件的main函数

Clion配置单个project下可以运行多个CPP文件的main函数 我们使用clion可能经常会遇到单个project下想运行单个cpp的main函数,每个文件都可以运行自己独立的main函数的场景,但是clion默认是只支持单个project只能运行一个文件的main函数,那么我们该如何去解决这个情况呢? (特别是LeetCode周赛的时候,很容易的想一个project下先建四个cpp文件,然后遇到wa的情况来调试,每次调试一个新建cpp的main函数) 1.新建一个project 如图所示,当我们新

子冉冰清的博客 8777

Leetcode 228. 汇总区间 C++

Leetcode 228. 汇总区间 题目 给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。 测试样例 示例 1: 输入: [0,1,2,4,5,7] 输出: ["0->2","4->5","7"] 解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。 示例 2: 输入: [0,2,3,4,6,8,9] 输出: ["0","2->4","6","8->9"] 解释: 2,3,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。 题解 暴力,以

weixin_43750513的博客 336

算法练习——力扣随笔【LeetCode】【C++】

在哪定义结构体?有两个位置可写:1)类里面,讲究的话写在private中,这里就不讲究了。} };2)顶部区域int data;} };在哪定义全局变量?1)顶部区域public :return v;} };2)换个方式,传参方式改为引用很多全局变量是可以被替代的,比如希望值被修改并返回到原来作用域,但返回值位置紧张。暴力时,全局变量开大数组还是有点用处的。在哪定义头文件?一般是全面的,多虑了。

cold的博客 908

LeetCode 228. 汇总区间

1. 题目 给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。 示例 1: 输入: [0,1,2,4,5,7] 输出: ["0->2","4->5","7"] 解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。 示例 2: 输入: [0,2,3,4,6,8,9] 输出: ["0","2->4","6","8->9"] 解释: 2,3,4 可组成一个连续的区间; 8,9 可组成一个连续的区间。 来源:力扣(LeetCode) 链接:https://

Michael是个半路程序员 1748

Leetcode 力扣 岛屿问题 C++实现

Leecode 力扣 岛屿问题 C++实现写在最开始问题描述解决办法代码 写在最开始 第一次尝试写博客,不知道能不能坚持下去,尝试记录一些学习的过程。 已经大三了才开始写,感觉有点晚了,希望以后也可以慢慢写,哈哈。 问题描述 题目:给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边...

weixin_42369779的博客 995

力扣leetcode题库练习(C++)—1.两数之和

力扣leetcode题库练习(C++)—1.两数之和题目描述示例代码及注释如下结果如下注 题目描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0...

weixin_45682431的博客 901

LeetCode刷题指南

力扣,作为一个国内外的程序员都用作准备面试的刷题网站,对想要阅读这篇指南的你应该都不陌生。当你想要借助力扣刷题,提升代码能力、在面试中脱颖而出,却不知从何入手,这篇文章可以作为你的入门指南。

airhaohan 的博客 8989

Algorithm-CPP 项目教程

Algorithm-CPP 项目教程 1. 项目介绍 Algorithm-CPP 是一个开源的 C++ 算法库,旨在提供一系列常用的算法实现,帮助开发者快速实现各种算法需求。该项目由 shouxieai 发起并维护,代码托管在 GitHub 上。Algorithm-CPP 不仅提供了基础的算法实现,还包含了一些高级算法的优化版本,适用于各种复杂的应用场景。 2. 项目快速启动 2.1 环境准备 在...

gitblog_00273的博客 861
上一篇: 矩阵置零
下一篇: 字谜分组
rdc01234
博客等级 码龄9年 10粉丝 156原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值