Algoritmo deliberada de combate la práctica -LeetCode los tres más cercana al número de 05- y

Título: Tres de la serie de los más cercanos y

Enlaces: (https://leetcode-cn.com/problems/3sum-closest/)
Esta pregunta y escribir su propio ayer, "tres y el número de" similar, pero personalmente sienten que es más simple que eso. Debido a que no hay una sentencia y eliminación del mismo elemento especial, no es complicado.
idea personal es la siguiente: para grabar el objetivo con una variable ans de diferencia, y luego continúan utilizando dos punteros y una determinación del valor absoluto de la diferencia entre el número de destino de tres, si el valor absoluto es menor que ans ans puede actualizar. Código es el siguiente:

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        sort(nums.begin(), nums.end());
        int ans = 1000000 ;
        int len = nums.size();
        for(int i = 0; i < len - 2; i++)
        {
            int L = i + 1, R = len - 1;
            while(L < R)
            {
                int sum = nums[i] + nums[L] + nums[R];
                if(sum == target) return target;
                else if(sum < target)
                {
                    if(target - sum < abs(ans)) ans = sum - target;
                    L++;
                }
                else
                {
                    if(sum - target < abs(ans)) ans = sum - target;
                    R--;
                }
            }
        }
        return ans + target;
    }
};

Aplicación de los siguientes:
Aquí Insertar imagen Descripción
digresión
valiente es: cuando usted no ha comenzado ya saben que van a perder, pero aún así desea hacerlo, y pegarlo en el final de todos modos. Rara vez se gana, pero a veces.
- Harper Lee

Publicado 16 artículos originales · ganado elogios 0 · Vistas 284

Supongo que te gusta

Origin blog.csdn.net/DZZ18803835618/article/details/104667603
Recomendado
Clasificación