3回くらい描き直した。
class MeasuringTemperature {
public:
double averageTemperature(vector <int> v) {
double sum = 0;
double cnt = 0;
bool valid[v.size()];
for(int i=0; i<v.size(); ++i){
valid[i] = -273 <= v[i];
}
for(int i=0; i<v.size(); ++i){
bool flg = false;
for(int j=-2; j<=2; ++j){
if(i + j < 0)continue;
if(v.size() <= i + j)continue;
if(j)flg = flg || abs(v[i] - v[i+j]) <= 2;
}
valid[i] = valid[i] && flg;
}
for(int i=0; i<v.size(); ++i){
if( !valid[i] )continue;
++cnt;
sum += v[i];
}
return cnt == 0 ? -300 : sum / cnt;
}
};
500整数値で比較するところを、何故か文字列に変換して+='0'と+='9'して比較してた。
700 < 1000 , "700" > "1000" だろうに。
class InputBoxChecker {
public:
bool check(lli mn, lli mx, lli num){
lli n, m;
n = m = num;
while(n <= mx){
if(mn <= m && n <= mx)return true;
n = n * 10LL;
m = m * 10LL + 9LL;
}
return false;
}
vector <string> checkPrefix(int s, int l, vector <int> num) {
vector <string> r;
for(int i=0; i<num.size(); ++i){
r.push_back( check(s, l, num[i]) ? "VALID" : "INVALID" );
}
return r;
}
};
1000読んでない。
0 件のコメント :
コメントを投稿