[Uma pergunta por dia] 35. Pesquise a posição de inserção

Título: https://leetcode-cn.com/problems/search-insert-position/

Solução 1, Violento
O (n) O (1)
Preste atenção a duas condições a) Quando não há elementos na matriz b) O último elemento não é maior que o alvo

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        size_t i = 0;
        while (i < nums.size()) {
            if (nums[i] >= target) {
                return i;
            }
            i++;
        }
        return i == nums.size() ? i : -1;
    }
};

Solução 2, pesquisa binária
O (logn) O (1)
Observe que a condição de finalização do loop, o valor de mid e l + r podem cruzar o limite!

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        size_t l = 0, r = nums.size();
        while (l < r) {
            // size_t mid = (l + r) / 2;
            size_t mid = l + (r - l) / 2;
            if (nums[mid] == target) {
                return mid;
            }
            if (nums[mid] < target) {
                l = mid + 1;
            }
            if (nums[mid] > target) {
                r = mid;
            }
        }
        return l;
    }
};

EOF

98 artigos originais foram publicados · 91 elogios · mais de 40.000 visualizações

Acho que você gosta

Origin blog.csdn.net/Hanoi_ahoj/article/details/105376954
Recomendado
Clasificación