刷LeetCode(C++)的小心得(持续更新)

  • &引用的用法,只是一个别名
  • 二叉树层次遍历,使用队列
  • 如果要求类似二维数组形式输出,可以使用循环嵌套,利用每次入栈的元素个数来作为第二个循环的次数。如果只是要求输出一维数组的形式,直接使用一个循环输出即可。
  • if if if 和 if  else if  else if的区别
  • pos = rand%(n-i)   swap(temp[pos+i], temp[i])  随机打乱数组
  • unordered_map<char, int> m 无序哈希
  • list链表的末尾,是最久使用过的,当容量满时,就要将它替换出去,将最新的(key,value)放在链表开头
  • LRU缓存机制 list判断最近未使用 哈希map存储
  • erase以后,itor已经指向下一个元素了,不应该再itor++,否则会跳过下一个元素
  • if中的逻辑判断也有先后顺序
  • 输出字母的ascii值可以使用int强转
  • 判断素数循环到sqrt()就够了
  • continue结束单次循环,break结束整个循环体
  • cin后不能连续使用>> !!
  • 使用new动态分配一维数组:int *data = new int[n];
  • 使用new动态分配二维数组:int **data1 = new int*[m]; for(int i = 0; i < m; i++){data1[i] = new int[s];}
  • if(s.empty()) return "";  当判断字符串为空如何输出时,可以这么写
  • c++使用cout输出固定的位数 ,可以加头文件#include<iomanip> ,使用setprecision(“位数”)函数
  • 哑结点的使用,对于新建的链表将头节点设为哑结点,可以避免判断该链表是否为空的问题
  • ListNode* res = new ListNode(0); 链表的动态分配规则
  • 如果整数的输入或者输出超出了整型的范围,可以借助其他类型(如double或者无符号类型)来存储
  • 对于vector构建出来的二维数组没有进行空间的申请,比如有些返回类型为vector<vector<>>类型的函数,对于这个返回值vector表示的二维数组要先申请大小,否则使用下标访问就会报这类错误。
  • case后面的常量表达式实际上只起语句标号作用,而不起条件判断作用,既“只是开始执行处的入口标号”。
  • 拷贝构造函数发生在对象还没创建,需要创建时;赋值操作符重载仅发生在对象已经执行过构造函数,即已经创建的情况下
  • string类型通过下表取出来的字符时char类型
  • char类型转int可以通过int强转
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值