力扣刷题笔记

三数之和

题目如下,是力扣热题100的第15题:力扣icon-default.png?t=O83Ahttps://leetcode.cn/problems/3sum/?envType=featured-list&envId=2cktkvj首先学习到C++的sort方法:

  • 默认: 两个参数first,last,将[first, last)区间内元素升序排列。
  • sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使用stable_sort函数
  • 由于在排序过程中涉及到元素交换等操作,所以sort函数仅支持可随机访问的容器,如数组, string、vector、deque等。
  • 时间复杂度:O(N*log2(N))
sort(nums.begin(), nums.end());

begin和end

  • begin:返回指向容器第一个元素的迭代器

  • end:返回指向容器最后一个元素下一个位置的迭代器

 还有一个困惑代码:

vector<vector<int>> ans;
ans.push_back({nums[first], nums[second], nums[third]});

解释如下:

这里大括号是C++11功能,可以使用大括号(而不是圆括号)括起来的列表调用构造函数

 其实就是:

vector<vector<int>> ans;
ans.push_back(vector<int>{nums[first], nums[second], nums[third]});

电话号码的字母组合

题目如下,是力扣热题100的第15题:

力扣icon-default.png?t=O83Ahttps://leetcode.cn/problems/letter-combinations-of-a-phone-number/?envType=featured-list&envId=2cktkvj

map构造方法:

map<string,int> my_map;

插入新数据方法:

map<int,string> my_map;
my_map.insert(pair<int,string>(1,"first"));

注:

  • map是红黑树实现的,数据有序;unordered_map是哈希表实现
  • 初始化问题,如下代码:
string s;
vector<int> list1;

初始化的字符串与vector皆为空

  • string也有push_back(),pop_back()方法,push_back只能增加字符char
  • substr(int pos=0, int n)方法:pos是开始子串截取位置,n表示取多少个字符,不填表示截取到末尾

合并 K 个升序链表

题目如下,是力扣热题100的第23题:

力扣icon-default.png?t=O83Ahttps://leetcode.cn/problems/merge-k-sorted-lists/?envType=featured-list&envId=2cktkvj

PriorityQueue:

template <typename T, 
typename Container=std::vector<T>, 
typename Compare=std::less<T>> class priority_queue

默认less,即“大根堆”;

结构体中this为指向本结构体的指针

自定义比较的操作如下:

C++ priority_queue的自定义比较方式_c++优先队列自定义比较_AAMahone的博客-CSDN博客C++ priority_queue的自定义比较方式,终于可以不用手写堆了icon-default.png?t=O83Ahttps://blog.csdn.net/AAMahone/article/details/82787184?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-82787184-blog-105365964.235%5Ev36%5Epc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-82787184-blog-105365964.235%5Ev36%5Epc_relevant_default_base3&utm_relevant_index=1

下一个排列

题目如下,是力扣热题100的第31题:

力扣icon-default.png?t=O83Ahttps://leetcode.cn/problems/next-permutation/

关于reverse方法

1.reverse(str.begin(),str.end()) 反转字符串
 	 
2.reverse(vector.begin(),vector.end()) 反转向量
 
3.reverse(a,a+strlen(a)) 反转数组

数组中直接swap()交换值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值