简单模拟题。找到循环体,之后循环即可实现,最后需要约去最大公约数。
class Solution {
public:
vector<int> fraction(vector<int>& cont) {
vector<int> ans;
int fenmu = 0, fenzi = 0, len1 = cont.size();
if(len1 == 1)
fenzi = cont[0], fenmu = 1;
else {
for(int i = len1 - 1; i >= 0 ; i--) {
if(i == len1 - 1)
fenzi = 1, fenmu = cont[i];
else {
if(i == 0) {
fenzi = cont[i] * fenmu + fenzi;
fenmu = fenmu;
} else {
fenzi = cont[i] * fenmu + fenzi;
fenmu = fenmu;
int temp = fenzi;
fenzi = fenmu;
fenmu = temp;
}
}
}
}
int gcd1 = __gcd(fenmu, fenzi);
ans.push_back(fenzi / gcd1);
ans.push_back(fenmu / gcd1);
return ans;
}
};
简单模拟题。遍历数组,枚举即可。
class Solution {
public:
bool threeConsecutiveOdds(vector<int>& arr) {
int n = arr.size();
for (int i = 0; i <= n - 3; ++i) {
if ((arr[i] & 1) & (arr[i + 1] & 1) & (arr[i + 2] & 1)) {
return true;
}
}
return false;
}
};
简单模拟题。枚举遍历矩阵即可。
class Solution {
public:
int numSpecial(vector<vector<int>>& mat) {
int R = mat.size(), C = mat[0].size(), ans=0;
for(int i = 0; i < R; i++) {
for(int j = 0; j < C; j++) {
if(mat[i][j]) {
int c = 0;
for(int k = 0; k < R; k++) {
if(k == i)
continue;
if(mat[k][j])
c += 1;
if(c > 0)
break;
}
if(c > 0)
break;
c = 0;
for(int k = 0; k < C; k++){
if(k == j)
continue;
if(mat[i][k])
c += 1;
if(c > 0)
break;
}
if(c>0)
break;
ans += 1;
}
}
}
return ans;
}
};
简单模拟题。排序后遍历求和,去除第一个和最后一个元素即可。
class Solution {
public:
double average(vector<int>& salary) {
double maxValue = *max_element(salary.begin(), salary.end());
double minValue = *min_element(salary.begin(), salary.end());
double sum = accumulate(salary.begin(), salary.end(), - maxValue - minValue);
return sum / int(salary.size() - 2);
}
};
简单模拟题。按照题目意思模拟过程即可。
class Solution {
public:
int numWaterBottles(int numBottles, int numExchange) {
int bottle = numBottles, ans = numBottles;
while (bottle >= numExchange) {
bottle -= numExchange;
ans += 1;
bottle += 1;
}
return ans;
}
};
简单模拟题。根据题目意思模拟实现即可,数组元素查找可利用余数的性质,遍历下标的元素。
class Solution {
public:
vector<int> decrypt(vector<int> &code, int k) {
vector<int> ans;
int n = code.size();
if (k < 0) {
for(int i = 0; i < code.size(); i++) {
int num = 0;
for (int j = 0, index = i; j < -k; j++)
num += code[(--index + n) % n];
ans.push_back(num);
}
} else {
if(k > 0) {
for (int i = 0; i < code.size(); i++) {
int num = 0;
for (int j = 0, index = i; j < k; j++)
num += code[(++index) % n];
ans.push_back(num);
}
} else {
for(int i = 0;i < code.size(); i++)
ans.push_back(0);
}
}
return ans;
}
};