Annuaire d'articles
Un choix multiple
ex1
ex2
par exemple3
par exemple4
par exemple5
2. Questions de programmation
ex1
[Idées de solutions] :
parcourez la chaîne, utilisez cur pour enregistrer la chaîne numérique continue, si elle rencontre des caractères non numériques, cela signifie qu'une chaîne numérique continue est terminée, puis comparez la chaîne numérique avec la chaîne numérique précédente, si elle est longer , puis mettez à jour la chaîne numérique la plus longue en ret.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin >> s;
string cur;
string ret;
//<= s.size();防止出现abcd12345ed125ss123456789
for(int i = 0; i <=s.size(); ++i)
{
//如果是数字字符就插入cur
if('0' <= s[i] && s[i] <= '9')
{
cur += s[i];
}
else
{
//判断cur的长度是否大于ret的长度
if(cur.size() > ret.size())
{
ret = cur;
}
//清空cur
cur.clear();
}
}
cout << ret << endl;
return 0;
}
ex2
[Idée de résolution de problème 1] :
Idée 1 : Une fois le tableau trié, si le nombre qui remplit les conditions existe, il doit s'agir du nombre au milieu du tableau. Bien que cette méthode soit facile à comprendre, sa complexité temporelle de O(NlogN) n'est pas optimale en raison de la rapidité du tri impliqué.
class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers)
{
sort(numbers.begin(), numbers.end());
int index = numbers.size() / 2;
return numbers[index];
}
};
[Idée de résolution de problème 2] : Mode :
le nombre qui apparaît sur plus de la moitié de la longueur du tableau. Si les deux nombres ne sont pas égaux, éliminez les deux nombres. Dans le pire des cas, éliminez un mode et un non-mode à un temps. , alors s'il y a un mode, le nombre laissé à la fin doit être le mode
class Solution {
public:
int MoreThanHalfNum_Solution(vector<int> numbers)
{
int result = numbers[0];
int times = 1;
for(int i = 1; i < numbers.size(); ++i)
{
if(times != 0)
{
if(result == numbers[i])
{
++times;
}
else
{
--times;
}
}
else
{
result = numbers[i];
times = 1;
}
}
return result;
}
};