刷题网站:阶段1第一关:基本数据类型
今天只刷题,因为没时间学习,工作总是会在生活中与你不期而遇,那只能尽快“应付”掉了。
1.打印X
本来想找规律的,结果发现题目就是规律。
不过构造还是要找规律的,初步摸索一个规律,就按照X
的笔画,先构造左上到右下的一列,再构造右上到左下的一列,很明显,一个规律是i=j
,但很可惜另一个规律不是i=-j
,所以再观察,发现i+j=n-1
。
class Solution {
public:
/**
* @param n: An integer.
* @return: A string list.
*/
vector<string> printX(int n) {
// write your code here
vector<string> p;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(i==j || i+j==n-1)
p.push_back("X");
}
}
return p;
}
};
但是测试用例有问题哈,主要是我理解的是一个2维数组,但操作成了,比如n=2
是["X","X","X","X"]
,可要求是["XX","XX"]
,所以我悟了,这就是个空格操作。but,暂时想不出来,明天再说吧。
想不出来。
参考17.C+±string字符串类(详解)
主要考察string
。
string直接支持字符串连接
string直接支持字符串的大小比较
string直接支持子串查找和提取
string直接支持字符串的插入和替换
string同时具备字符串数组的灵活性,可以通过[ ]重载操作符来访问每个字符
参考解题思路
class Solution {
public:
/**
* @param n: An integer.
* @return: A string list.
*/
vector<string> printX(int n) {
// write your code here
vector<string> p;
string e(n,' ');
for(int i=0;i<n;i++)
{
e[i]='X';
e[n-1-i]='X';
p.push_back(e);
e[i]=' ';
e[n-1-i]=' ';
}
return p;
}
};
最后的最后,实在不行也应该暴力使用条件判断,能过几个用例是几个
2.寻找素数
素数条件:
除1和本身外可整除其他数,1不是素数
class Solution {
public:
/**
* @param n: an integer
* @return: return all prime numbers within n.
*/
vector<int> prime(int n) {
// write your code here
vector<int> p;
int num;
if(n==1) return p;
else if(n==2) p.push_back(n);
else
{
p.push_back(2);
for(int i=3;i<=n;i++)//需要判断的范围
{
num=0;//累积因子
for(int j=2;j<i;j++)//素数判断条件
{
if(i%j==0) num++;
}
if(num==0) p.push_back(i);
}
}
return p;
}
};
//稍微规范一点
class Solution {
public:
/**
* @param n: an integer
* @return: return all prime numbers within n.
*/
vector<int> prime(int n) {
// write your code here
vector<int> p;
int c;
for(int i=1;i<=n;i++)
{
c=0;
if(n==1) return p;
else if(n==2) {p.push_back(n);return p;}
else
{
for(int j=2;j<i;j++)
{
if(i%j==0) c++;
}
if(c==0 && i!=1) p.push_back(i);
}
}
return p;
}
};