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