【Pratique quotidienne】jour(3)


Un choix multiple

ex1

insérez la description de l'image ici

ex2

insérez la description de l'image ici

par exemple3

insérez la description de l'image ici

par exemple4

insérez la description de l'image ici

par exemple5

insérez la description de l'image ici
insérez la description de l'image ici

2. Questions de programmation

ex1

insérez la description de l'image ici
[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.
insérez la description de l'image ici

#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

insérez la description de l'image ici
[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
insérez la description de l'image ici

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;
    }
};

Je suppose que tu aimes

Origine blog.csdn.net/qq_52809807/article/details/123759751
conseillé
Classement