LeetCode [1 - suma de dos números] LeetCode [2 - suma de dos números]

Suma de dos números

Descripción del título

Dado un número entero de matrices y un objetivo de valor objetivo, encuentre los dos enteros cuya suma es el valor objetivo en la matriz y devuelva su índice de matriz.
Puede suponer que cada entrada solo corresponderá a una respuesta. Sin embargo, no puede reutilizar los mismos elementos en esta matriz.
Inserte la descripción de la imagen aquí

Ideas para resolver problemas

Recorrido directo de doble bucle, sin cerebro

Implementación de código

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int>res;
        for(int i = 0; i<nums.size();++i)
        {
            for(int j = i+1;j<nums.size();++j)
            {
                if(nums[i]+nums[j] == target)
                {
                    res.push_back(i);
                    res.push_back(j);
                }
            }
        }
        return res;
    }
};

Agrega dos números

Descripción del título

Se nos ha dado dos lista no vacía se utiliza para representar dos no negativo entero . Entre ellos, sus respectivos dígitos se almacenan en orden inverso , y cada uno de sus nodos solo puede almacenar un dígito .
Si sumamos estos dos números, se devolverá una nueva lista vinculada para representar su suma.
Puede suponer que, excepto por el número 0, ninguno de estos números comenzará con 0.
Inserte la descripción de la imagen aquí

Ideas para resolver problemas

El resultado de salida es el orden inverso de la lista vinculada, por lo que solo necesita agregar los números en cada bit de las dos listas vinculadas como un nodo de la nueva lista vinculada y colgar la cadena continuamente.

Implementación de código

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        ListNode* newHead = new ListNode(-1); //新链表
        ListNode* Cur = newHead;
        int sum = 0; //每一位上面的和
        bool carry = false; //进位标志
        while(l1!=NULL || l2!=NULL)
        {
            sum = 0;
            if(l1!=NULL)
            {
                sum+=l1->val;
                l1=l1->next;
            }
            if(l2!=NULL)
            {
                sum+=l2->val;
                l2= l2->next;
            }
            if(carry)
            {
                sum+=1;
            }
            Cur -> next = new ListNode(sum%10);
            carry = sum>=10? true:false;
            Cur = Cur->next;
            
        }
        if(carry)
        {
            Cur->next = new ListNode(1);
        }
        //没有头节点,返回头结点的下一个结点
        return newHead->next;
    }
};
Sol
Publicado 253 artículos originales · elogiado 41 · 40,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/liuyuchen282828/article/details/104522213
Recomendado
Clasificación