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

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. c#跳转

    Response.Redirect(EditUrl("MEUID", lblMEUID.Text, "Page2", "PageOneMK" ...

  2. MapReduce06 MapReduce工作机制

    目录 5 MapReduce工作机制(重点) 5.1 MapTask工作机制 5.2 ReduceTask工作机制 5.3 ReduceTask并行度决定机制 手动设置ReduceTask数量 测试R ...

  3. day14 linux三剑客之sed命令

    day14 linux三剑客之sed命令 sed命令 Sed 主要用来自动编辑一个或多个文件.简化对文件的反复操作.编写转换程序等. sed(流式编辑器) : sed主要用来修改文件. 1.sed命令 ...

  4. 商业爬虫学习笔记day1

    day1 一. HTTP 1.介绍: https://www.cnblogs.com/vamei/archive/2013/05/11/3069788.html http://blog.csdn.ne ...

  5. C++ 害死人不偿命的(3n+1)猜想

    第一次刷PAT ,注意事项:就像普通编译器一样要导入头文件 还有 using namespace std:要不然会报错(鬼知道我经历了什么 微笑.jpg) 1 #include <iostrea ...

  6. oracle 拆分字符串

    WITH t AS (SELECT '1-2-3-4' a FROM dual)SELECT Regexp_Substr(a, '[^-]+', 1, LEVEL) i FROM tCONNECT B ...

  7. ViewStub应用

    在开发应用程序的时候,会遇到这样的情况,在运行时动态的根据条件来决定显示哪个View或哪个布局,可以把可能用到的View都写在上面,先把他们的可见性设置为View.GONE,然后在代码中动态的更改它的 ...

  8. t01_docker安装TiDB

    Docker环境安装TiDB,在官方说明的基础上补充了几个细节,安装记录如下 个人环境-vbox上安装centos7.4系统 CPU:12核24线程,分配给虚拟机12线程 MEM: 48G,分配给虚拟 ...

  9. TV盒子 android 4.4安装kodi 和 安装jellyfin插件连接到 jellyfin服务器

    很多IPTV盒子系统都是android 4.4的,无法安装新版kodi, 最高只能安装到改版的kodi, 版本是17.1,jellyfin插件也只能安装到0.5.8 首先下载kodi和jellyfin ...

  10. Apache APISIX 的安装和配置请求转发url匹配

    安装apisix套件 创建一个apisix文件夹,在apisix文件夹下再创建一个etcd_data文件夹,用来持久化etcd的数据 在apisix文件夹下 新建3个文件 config.yaml,  ...