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

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. A Child's History of England.41

    When intelligence of this new affront [hit in the face, c-o-n-frontation!] was carried to the King i ...

  2. Learning Spark中文版--第五章--加载保存数据(1)

      开发工程师和数据科学家都会受益于本章的部分内容.工程师可能希望探索更多的输出格式,看看有没有一些适合他们下游用户的格式.数据科学家可能会更关注他们已经使用的数据格式. Motivation   我 ...

  3. AI常用环境安装

    torch环境 conda create --name py37 python=3.7 conda activate py37 pip install jieba==0.42.1pip install ...

  4. Mybatis通用Mapper介绍和使用

    Mybatis通用Mapper介绍与使用 前言 使用Mybatis的开发者,大多数都会遇到一个问题,就是要写大量的SQL在xml文件中,除了特殊的业务逻辑SQL之外,还有大量结构类似的增删改查SQL. ...

  5. 【HarmonyOS】【Json解析】ZSON 与 HiJson 使用

    HiLog配置 为了方便调试,查看,先设置好Hilog public static final HiLogLabel loglabel = new HiLogLabel(HiLog.LOG_APP,0 ...

  6. KrakenD url匹配通配符 url_pattern wildcard

    KrakenD是一个高性能Api网关,  api转发的推荐做法是每个api一个配置项,也就是一个endpoint,其开发者认为api网关和纯粹的L7路由不一样(文章链接). 因此社区版并没有提供通配符 ...

  7. [BUUCTF]REVERSE——[BJDCTF2020]BJD hamburger competition

    [BJDCTF2020]BJD hamburger competition 附件 步骤: 例行检查,64位程序,无壳儿 由于unity是用C++开发的,这里就不用IDA了,直接用dnspy看源码 在B ...

  8. 在React中使用 react-router-dom 编程式路由导航的正确姿势【含V5.x、V6.x】

    ## react-router-dom 编程式路由导航 (v5) ###### 1.push跳转+携带params参数 ```jsx props.history.push(`/b/child1/${i ...

  9. presto官网阅读记录: Functions and Operators 部分

    官网Functions and Operators部分 版本:0.266 目录 官网Functions and Operators部分 1 Comparison Functions and Opera ...

  10. 【紧急】Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,小白也能看懂

    1 事件背景 经过一周时间的Log4j2 RCE事件的发酵,事情也变也越来越复杂和有趣,就连 Log4j 官方紧急发布了 2.15.0 版本之后没有过多久,又发声明说 2.15.0 版本也没有完全解决 ...