博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode做题中的一些小总结,很分散,待整理
阅读量:5140 次
发布时间:2019-06-13

本文共 2176 字,大约阅读时间需要 7 分钟。

1.需要#include <ctype.h>

才能用toupper,tolower,即大小写转换

char c = str[i] >= 'a' ? toupper(str[i]) : tolower(str[i]);

 

 

2.vector<int>(n,i);:初始化大小为n,初值为i的vector

string 转char数组:

char *a = new char;

string str = "ghjk";

strcpy_s(a, n+1,str.c_str());//n可以为str.size();将str copy 到a,最后一个字符为'\0'

 

 

 

3.substr :返回一个从指定位置开始的指定长度的子字符串

substring :返回位于 String 对象中指定位置的子字符串。

stringvar.substr(start , [length ])

strVariable.substring(startend)

 

 

4.min找不到标识符:

加#include <algorithm>头文件

 

5.

struct TreeNode {

int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};

 

TreeNode *node = new TreeNode();//会提示没有类的构造函数

改为:TreeNode *node = new TreeNode(5);即可

 

6.pair的使用

pair<int,int> 详细百度

初始化:①pair<int,int>(2,2);

②pair<int,int> pa=make_pair(2,2);

③pair<int,int> pa;

pa.first=2;

pa.second=2;

 

 

7.关于vector的push_back与vec[i]= 的方式的区别:详见leetcode475题

具体表现在,如果已经初始化了vec:

vector vec(3,0);//表示vec大小为3,默认值为0

再执行vec.push_back(i)操作时会对vec进行扩容,vec大小变为4,5,...,而不是从0开始往vec里加的

也就是vec会变成{0,0,0,i}的样子

 

8.不用加号计算两数之和

int getSum(int a, int b) {

return b == 0 ? a : getSum(a^b, (a&b) << 1); //be careful about the terminating condition;
}

leetcode 371.just feel interesting

 

9.map查找

map<string,int>::iterator key = cmap.find("Anna");  

if(key!=cmap.end())  

  {  

       cout<<key->second<<endl;  

 } 

其次,mao.count()  可用于查找某个元素出现的次数

 

10.将一个vector对象的一部分拷贝到另一个vector里面去

两种算法:①std::copy (比较好)② 传入迭代器的方式

eg:①std::copy(v1.begin()+n,v1.begin()+n+m,v2.begin()+p);

注意:copy(it1,it2,it3)中的it1是要复制的首位置,it2是要复制的末位置的下一个位置,it3是要复制的首位置

故,vector<int> vec = { 3, 2, 1, 6, 0, 5 };

copy(nums.begin(), nums.begin() + 3, vec1.begin());

会复制0,1,2三个位置的元素,vec1的内容为{3,2,1}

②vector<double>::iterator i1=v1.begin()+m, i2=v1.begin()+n; //m<n,且n<v1.size()

vector<double> v2(i1, i2);

 

11.二维数组初始化;

vector<vector<int>> vec(row, vector<int>(col,defaultno));//row 为数组行数,col为列数,defaultno为默认值

eg:vector<vector<int>> vec(5, vector<int>(4,0));

 

12.sort函数的使用

首先,#include <algorithm>

其次,sort(start,end,排序方法)(start和end是迭代器)

其中的排序方法:[&](int a,int b){return a>b;}

或[&](char a, char b){ return S.find(a) < S.find(b);都是可以的,[&]是特殊符号,不可替换为其他

sort(T.begin(), T.end(), [&](char a, char b){ return S.find(a) < S.find(b); });的形式

 

转载于:https://www.cnblogs.com/leah-lcy/p/8479602.html

你可能感兴趣的文章
Javascript 香港身份证号校验
查看>>
父类引用指向子类对象 调用函数常见问题
查看>>
随机数
查看>>
Oracle中pls_logger记录日志信息
查看>>
决svn的working copy locked并且cleanup恢复不能的情况
查看>>
数据库备份和恢复新神器SQL Angel for SQL Server问世
查看>>
多态的优缺点
查看>>
235课后第三题
查看>>
Java native关键字
查看>>
设计新人到设计新人=菜鸟到菜鸟?NO!
查看>>
【微服务那些事】Microservices场景下的持续部署
查看>>
HDU 5592 ZYB's Premutation
查看>>
逻辑思维训练之假设法
查看>>
解决Nginx: [error] open() "/usr/local/Nginx/logs/Nginx.pid" failed(2:No such file or directory)...
查看>>
jfinal解决post get请求乱码问题
查看>>
一个屌丝程序猿的人生(六)
查看>>
(xampp)lampp 下配置https(ssl)自签双向认证以后 apache无法启动解决方案
查看>>
ADO.NET实体框架Entity Framework模型-基于XML解析
查看>>
struts2中的action交由spring管理
查看>>
优化php性能的一点总结
查看>>