您的位置:首页 > 其它

LeetCode&&牛客相关总结

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

位运算实现加减: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);
}
vector操作方法总
push_back(num),在尾部添加元素num
insert(it,num),在迭代器it添加元素
erase(it),删除迭代器指定的元素
clear(),清空vector中所有的元素
pop_back(),删除末尾的元素
size(),计算大小

结构体初试函数写法:
struct TreeNode{
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
          val(x), left(NULL), right(NULL){
}

}

判断二叉树是否是平衡二叉树
求每个节点的左右深度之差,若超过1,则false,若小于等于1,则执行第二步
判断左右子树是否都是平衡二叉树,若都是则true,否则是false

string转char*
string str = "abcdefg";
char * buffer = new char[str.size()+1];
strcpy(buffer, str.c_str());

char* 转数字
char * ch="12345";
int num=0;
while(*ch!='\0')
{
num = num*10+(*ch-'0');

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  刷题 牛客 LeetCode