*注——代码非博主本人所写,仅供学习参考,侵删

20200516双周赛:

1  to_string(int a)          将a转换成字符串形式

2  gcd(int a,int  b)          返回a,b的最大公约数,若返回1则表示a/b不可再约分

3  string +             字符串可以直接用+号来连接

4  vector<vector<int> > vec(N, vector<int>(M));

                   建立[N][M]二维 数组

20200517周赛

1  split(const string &s, char stop) 把字符串s用stop分离

vector<string> split(const string &s, char stop){
vector<string> ret;string t;
for (auto c : s)if(c == stop){ret.push_back(t);t = "";}else{t += c;}  
ret.push_back(t);
return ret;
}

2  isupper(char c)        判断c是否是大写字母

3  sort(a,b,cmp)        对数组进行排序a表示起始位置,b是结束位置,cmp是排序标准的函数

//利用数组a对数组v简介排序,a中储存v的下标,排序a,然后按照a中的先顺序输出v,可以保证v位置不变
sort(a.begin(), a.end(),
[&](int i, int j){//匿名函数,[&]表示参数按引用捕获
    //i表示排序后的位置在前的数,j表示排序后位置在后的数数
return v[i].size() < v[j].size() || v[i].size() == v[j].size() && i < j;//return 返回想要的结果
    //v[i].size() < v[j].size()  要求前短后长
    //v[i].size() == v[j].size() && i < j  要求前后通常的情况下,前面的 还是在前面(保持原来位置)
}
);

4  includes(bb.begin(),bb.end(),aa.begin(),aa.end()) 判断数组a是不是数组b的子集 

    int a[6]={1,2,3,4,5,9};
    int b[7]={1,2,3,4,5,9,8};
    vector<int> aa(a,a+6);
    vector<int> bb(b,b+7);
    sort(aa.begin(),aa.end());
    sort(bb.begin(),bb.end());
    bool f=includes(bb.begin(),bb.end(),aa.begin(),aa.end());

5  unordered_map查找复杂度O(n),普通map查找复杂度O(nlogn)

6  dfs,bfs的标记需要引用传参&,不能用形参

void fun(vector<vector<bool>>& bl,queue<node *>& que,vector<vector<int>>& m)
7

    !是逻辑运算符(与||,&&是一类符号),表示逻辑取反,可以把非0值变成0,把0值变为1
~是位运算符(与|,&是一类符号),表示按位取反,在数值的二进制表示上,将0变为1,将1变为0

8  int 是进行拷贝构造,而const int & 是返回的引用- 拷贝构造更消耗时间,与此同时还用析构函数。因此for (const int& num : nums)比for (int num : nums)更快

9  ans+=n&1;与ans=ans+n&1;的结果不同_原因:加号的优先级大于位与的优先级,后面一个应该写成ans = ans + (n & 1)

10  在处理大量数据时数组速度远超vector速度,以下是建立数组的代码

bool * isp=new bool [n];
delete[] isp;

11  map可以使用map<map<char,int>,int>嵌套,而unordered_map不能使用嵌套

12  变量初始化  int start(0)  强制类型转换  char tmpChar = s[end];vec[int(tmpChar)] = end;

13  set<int> st;auto it = st.upper_bound(4);找set中第一个比4大的数

14  Set.contains(e)  查找set中是否含有e,返回布尔值

15  (v%k + k) % k  正确取模方法,包含正数和负数

16  快速去重
  set<int> st(vec.begin(), vec.end());
  vec.assign(st.begin(), st.end());

17  for(;;)速度比while(1)快

18  特殊数据结构初始化

    vector<string> t={"a","b"};

    map<int,int> m={{1,2},{3,4}};

19  multiset是<set>库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数

20   查找字符串中某字符第一次出现的位置 int pos=s.find('e'); if(pos == string::npos)

21  set可以用作滑动窗口
    set.lower_bound(4)//查找第一个大于等于4的元素,返回此元素迭代器,未找到返回set.end()
set.upper_bound(4)//查找第一个大于4的元素,返回此元素迭代器,未找到返回set.end()

22  树集合,Java 中的 Treeset 或者 C++ 中的 set ,是由高度平衡的二叉搜索树实现的。因此,搜索、插入和删除的时间复杂度都是 O(logN)

   散列集合,Java 中的 HashSet 或者 C++ 中的 unordered_set ,是由哈希实现的,当存在具有相同哈希键的元素过多时,将花费 O(N) 时间复杂度来查找特定元素
   哈希集和树集之间的本质区别在于树集中的键是有序的。

23  输出数组的全排列

     vector<vector<int>>res;
sort(nums.begin(),nums.end());
do{res.push_back(nums);}
while(next_permutation(nums.begin(),nums.end()));
return res;

24  for(int i=10;i>=0;i--)等效于for(int i=10;~i;i--)  注意~i=-1-i

25  using ll = long long;

26  在 C++ 中 set/multiset 是有序的集合,它们是基于红黑树实现的。其中 set 会对元素去重,而 multiset 可以有重复元素。

27  set最小是set.begin(),最大是set.rbegin(),set.end()储存着set.size()

 

【C++】leetcode竞赛笔记的更多相关文章

  1. 知乎上的一些文章---leetcode【笔记1】

    张土汪 http://github.com/shawnfan Java{script}代码仔 42 人赞同 [1.19.2017] 更新: 2017年1月17日, 陪我征战多年的 2014 MackB ...

  2. 121. Best Time to Buy and Sell Stock (一) leetcode解题笔记

    121. Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of ...

  3. 110.Balanced Binary Tree Leetcode解题笔记

    110.Balanced Binary Tree Given a binary tree, determine if it is height-balanced. For this problem, ...

  4. leetcode学习笔记--开篇

    1 LeetCode是什么? LeetCode是一个在线的编程测试平台,国内也有类似的Online Judge平台.程序开发人员可以通过在线刷题,提高对于算法和数据结构的理解能力,夯实自己的编程基础. ...

  5. LeetCode算法笔记目录

    贪心算法: LeetCode翻转矩阵后的得分-Python3<六> LeetCode根据身高重建队列-Python3<七> LeetCode 任务调度器-Python3< ...

  6. leetcode算法笔记:二叉树,动态规划和回溯法

    在二叉树中增加一行 题目描述 给定一个二叉树,根节点为第1层,深度为 1.在其第 d 层追加一行值为 v 的节点. 添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N, ...

  7. LeetCode解题笔记 - 20. Valid Parentheses

    这星期听别人说在做LeetCode,让他分享一题来看看.试了感觉挺有意思,可以培养自己的思路,还能方便的查看优秀的解决方案.准备自己也开始. 解决方案通常有多种多样,我觉得把自己的解决思路记录下来,阶 ...

  8. Leetcode学习笔记(5)

    之前断了一段时间没做Leetcode,深感愧疚,重新续上 题目1 ID104 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点 ...

  9. Leetcode学习笔记(4)

    题目1 ID121 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股 ...

随机推荐

  1. 漏洞检测方法如何选?详解源代码与二进制SCA检测原理

    摘要:本文探讨的是SCA具体的检测原理,源代码SCA检测和二进制SCA检测有哪些相同点和不同点,在进行安全审计.漏洞检测上各自又有什么样的优势和适用场景. 本文分享自华为云社区<源代码与二进制文 ...

  2. 日常Java 2021/11/2

    Java提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据.有关对象的类型的信息和存储在对象中数据的类型.将序列化对象写入文件之后,可以从文件中读取出来 ...

  3. day04:Python学习笔记

    day04:Python学习笔记 1.算数运算符 1.算数运算符 print(10 / 3) #结果带小数 print(10 // 3) #结果取整数,不是四舍五入 print(10 % 3) #结果 ...

  4. [php反序列化] CVE-2020-15148(Yii2 反序列化漏洞) 漏洞复现

    漏洞影响范围 Yii2 < 2.0.38 环境搭建 Yii2.0.37 漏洞分析 首先定位到漏洞起始点 为什么是这儿?我们该怎么发现是某个类的某个函数?为什么不是其他函数? 一般是__destr ...

  5. pyqt5的下拉菜单,可以进行输入文字

  6. 随录、EJB和JTA

    说道JTA(Java Transction Api),即事务的一种. 事务:说白了就是一组原子操作,是为了保证数据的安全性. 它,分为三类:JDBC事务,JTA事务,还有容器事务. JDBC是由Con ...

  7. 【Linux】【Services】【SaaS】Spinnaker

    1. 简介 1.1. 说明: Spinnaker 是 Netflix 的开源项目,是一个持续交付平台,它定位于将产品快速且持续的部署到多种云平台上.Spinnaker 通过将发布和各个云平台解耦,来将 ...

  8. Shell脚本实现监视指定进程的运行状态

    在之前的博客中,曾经写了自动化测试程序的实现方法,现在开发者需要知道被测试的进程(在此指运行在LINUX上的主进程的)在异常退出之前的进程的运行状态,例如内存的使用率.CPU的使用率等. 现用shel ...

  9. Synchronized和Lock接口

    关于synchronized字段,不管该关键字是修饰方法还是修饰同步代码块,synchronzed拿到的都是对象. 当synchronized修饰的是方法时,synchronized所拿到的是调用该方 ...

  10. 联盛德 HLK-W806 (八): 4线SPI驱动SSD1306/SSD1315 128x64 OLED液晶屏

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...