LeetCode&&牛客相关总结

  1. vector<int>num ; 往num中添加变量,num.push_back(i); vector中变量个数vector.size()
  2. unordered_map<int,int>hash ,类似map,
  3. 存储的是key_value形式,查找不成功情况hash.find(xxx) = hash.end(); 添加变量hash[key] = value;
  4. 字符串str长度,str.length(),char *长度,strlen(str);
  5. unordered_map遍历;
  6. typedef unordered_map<int, int>mymap;
  7. mymap hash;
  8. for(mymap::iterator i=hash.begin();i!=hash.end();i++)
        {
            cout<<i->first<<" "<<i->second<<endl;
        }
  1. 栈的用法,#include<stack>   stack<int>stk , empty()判断是否为空,size()元素个数,pop()弹出栈顶元素不返回其值,top()返回栈顶元素,push()在栈顶压入新元素
  2. 队列, #include <queue> queue<int> q, empty(),size(),用法同上, pop()删除队首的元素,push()在队尾压入新元素,front()返回队首的元素 ,back()返回队尾的元素
  3. map和unordered_map同异。都是key-value形式,可以通过key快速索引value,不同的是unordered_map不会根据key的大小进行排序,其内部元素是无序的,而map中的元素是按照二叉树索引存储的,进行中序遍历会得到有序遍历
  4. map<int,int>,第二个值默认为0
  5. round函数实现, return (val> 0.0) ? floor(val+ 0.5) : ceil(val- 0.5);floor(向下取整数部分),ceil向上取整,round(11.5) 12;round(-11.5) -12
  6. pthread(POSIX thread)实现多线程,
  7. c++编译时-O1,提供基础级别的优化,-O2提供更加高级的代码优化,-O3提供最高级的代码优化
  8. 结构体:struct List{ int val; struct List*next;List(int x):val(x),next(NULL)  };新建时候直接new就可以了
  9. int转string,int a=5;   stringstream ss; ss<<a; string str = ss.str();
  10. 牛客替换空格,char * str; char *pstr1 = str +10;是将str的'\0'后移十位,此时*str的长度变长
  11. 短路求值:  求1+2+3+n; 
  • int sum(int n)
  • {
  •      int s=n;
  •      s&&(s=s+sum(n-1))
  •       return s;
  • }

  1. 位运算实现加减:num1&num2可以知道哪些位是要进1的,然后左移一位,和num1^num2作和
  • int  Add(int num1, num2)
  • {
  •    int (num2==0)
  •        return num1;
  •    int num=num1^num2;
  •    int carry = (num1&num2)<<1;
  •    return Add(num, carry);
  • }
  1. vector操作方法总
    • push_back(num),在尾部添加元素num
    • insert(it,num),在迭代器it添加元素
    • erase(it),删除迭代器指定的元素
    • clear(),清空vector中所有的元素
    • pop_back(),删除末尾的元素
    • size(),计算大小
  2. 结构体初试函数写法:
    • struct TreeNode{
      • int val;
      • struct TreeNode *left;
      • struct TreeNode *right;
      • TreeNode(int x) :
      •           val(x), left(NULL), right(NULL){
        • }
    • }
  3. 判断二叉树是否是平衡二叉树
    • 求每个节点的左右深度之差,若超过1,则false,若小于等于1,则执行第二步
    • 判断左右子树是否都是平衡二叉树,若都是则true,否则是false
  4. string转char*
    • string str = "abcdefg";
    • char * buffer = new char[str.size()+1];
    • strcpy(buffer, str.c_str());
  5. char* 转数字
    • char * ch="12345";
    • int num=0;
    • while(*ch!='\0')
    • {
      • num = num*10+(*ch-'0');
    • }




























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值