C++基础知识
第一个C++程序
#include<iostream>
using namespace std;
int main()
{
cout << "hello world" << endl;
system("pause");
return 0;
}
浮点数的声明与使用,以及输出变量值和计算内存空间大小。
#include <iostream>
using namespace std;
int main()
{
float f1 = 3.14f;//加上‘f’后缀表示是float类型
cout << f1 << endl;
double d1 = 3.14;//对于浮点数变量的声明,如果是double类型,不需要在数字后面加d
cout << d1 << endl;
//统计float和double所占的内存空间
cout << "float所占的内存空间:" << sizeof(float) << endl;//sizeof关键字统计数据类型所占内存大小
cout << "double所占的内存空间:" << sizeof(double) << endl;
//科学计数法
float f2 = 3e2;
cout << "f2=" << f2 << endl;
float f3 = 3e-2;
cout << "f3=" << f3 << endl;
#include <iostream>
using namespace std;
int main()
{
//字符型变量创建方式
char ch = 'a';
cout << ch << endl;
//字符型变量所占内存空间大小
cout << "char字符型所占内存:" << sizeof(ch) << endl;
//字符型变量对应的ASCII编码
cout << (int)ch << endl;
system("pause");
return 0;
}
//f2 = 300
cout << "f2=" << f2 << endl;
//300
cout << f2 << endl;
字符串型
#include <iostream>
#include <string>
using namespace std;
int main()
{
string ss = "hello C++";
cout << ss << endl;
system("pause");
return 0;
}
关于字符型变量
#include <iostream>
using namespace std;
int main()
{
//字符型变量创建方式
char ch = 'a';
cout << ch << endl;
//字符型变量所占内存空间大小
cout << "char字符型所占内存:" << sizeof(ch) << endl;
//字符型变量对应的ASCII编码
cout << (int)ch << endl;
system("pause");
return 0;
}
三个循环
--for循环:知道循环多少次
for(int i=0;i<10;i++)
{
cout << i << endl;
}
--while循环:循环到满足一个条件(先判断一次,再循环)
#include <iostream>
using namespace std;
int main()
{
int num = 0;
while (num<10)
{
cout << num << endl;
num ++;
}
return 0;
}
--do while循环:至少运行一次,循环到满足条件(直接运行,后判断)
#include <iostream>
using namespace std;
int main()
{
int num = 0;
do
{
cout << num << endl;
num ++;
}while (num < 10);
return 0;
}
嵌套循环
布尔类型
#include <iostream>
using namespace std;
int main()
{
//创建bool类型
bool flag = true;
bool flag1 = false;
cout << flag << endl;
cout << flag1 << endl;
//查看内存空间
cout << "bool类型所占的内存空间" << sizeof(flag) << endl;
system("pause");
return 0;
}
数据的输入
#include <iostream>
using namespace std;
int main()
{
int a;
cout << "请输入a的值:" << endl;
cin >> a;
cout << "你输入的值是:" << a << endl;
return 0;
}
运算符
== “比较”
= “赋值”
if语句
#include <iostream>
using namespace std;
int main()
{
cout << "请输入一个分数:" << endl;
int score;
cin >> score;
if(score > 600)
cout <<"你考上一本" << endl;
else if(score>500)
cout <<"你考上二本" << endl;
else
cout <<"你二战" << endl;
return 0;
}
switch语句
/**
switch(value)
{
case 结果1: 执行语句; break;
case 结果2: 执行语句; break;
....
default:执行语句,break;
}
**/
#include <iostream>
using namespace std;
int main()
{
cout << "请给电影打分" << endl;
int score = 0;
cin >> score;
switch(score)
{
case 3:
cout << "你打的电影评分是": << score << endl;
break;
case 6:
cout << "你打的电影评分是": << score << endl;
break;
case 9:
cout << "你打的电影评分是": << score << endl;
break;
case 4:
cout << "你打的电影评分是": << score << endl;
break;
default:
cout << "你打的是其他分数": << score << endl;
break;
}
return 0;
}
第1题 两数之和
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
for (int i=0;i<nums.size();i++){
for(int j=i+1;j<nums.size();j++){
int sum = nums[i]+ nums[j];
if(sum == target){
return {i,j};
}
}
}
return {};
}
};
第9题 回文数
class Solution {
public:
bool isPalindrome(int x) {
string str=to_string(x);
int len = str.length();
if(len <=1)
return true;
for(int i=0;i<=len/2;i++){
if(str[i]!=str[len-i-1])
return false;
}
return true;
}
};
第13题 罗马数字转整数
class Solution {
public:
int romanToInt(string s) {
map<char,int> m;
m['I'] = 1;
m['V'] = 5;
m['X'] = 10;
m['L'] = 50;
m['C'] = 100;
m['D'] = 500;
m['M'] = 1000;
int ans = 0;
for(int i=0;i<s.length();i++){
if(m[s[i]]<m[s[i+1]]){
ans -= m[s[i]];
}
else{
ans += m[s[i]];
}
}
return ans;
}
};
map语法
#include <iostream>
#include <map>
int main()
{
map <char,int> m;
m['a'] = 1;
m['b'] = 2;
}
第14题 最长公共前缀
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty())
{
return "";
}
string res = strs[0];
for(int i=1;i<strs.size();i++)
{
for(int j=0;j<res.length();j++)
{
if(res[j]==strs[i][j])
continue;
else
{
res.erase(j);
break;
}
}
}
return res;
}
};
第26题 删除有序数组中的重复项
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size() == 0){
return 0;
}
int i = 0;
for(int j = 1;j<nums.size();j++){
if(nums[i] != nums[j]){
i++;
nums[i] = nums[j];
}
}
return i + 1;
}
};
双指针算法:慢指针用于记录不重复元素的位置,快指针用于遍历整个数组