力扣2. 两数相加 C++代码
时间: 2024-01-24 13:16:59 浏览: 338
下面是 C++ 的代码实现,使用链表来存储数字,从低位到高位依次相加,注意进位和边界情况的处理:
```c++
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* dummy = new ListNode(0);
ListNode* curr = dummy;
int carry = 0;
while (l1 || l2 || carry) {
int sum = carry + (l1 ? l1->val : 0) + (l2 ? l2->val : 0);
carry = sum / 10;
curr->next = new ListNode(sum % 10);
curr = curr->next;
l1 = l1 ? l1->next : l1;
l2 = l2 ? l2->next : l2;
}
return dummy->next;
}
};
```
相关问题
C++分治力扣162.寻找峰值
在LeetCode的162题中,题目名为"寻找峰值元素"(Find Peak Element)。这是一个二分查找问题,目标是在给定的数组`nums`中找到第一个峰值元素,即数组中的最大值(或者是最小值,取决于数组的特性),这个峰值元素满足左面的所有元素都小于它,右面的所有元素也都小于它。
C++中解决这个问题的基本思路是:
1. 首先,检查数组长度是否大于1,因为单个元素也可以视为峰值。
2. 然后,定义两个指针,`left`指向数组起始位置,`right`指向数组结束位置。
3. 通过循环,每次取中间元素`mid`,并比较左右两侧的元素。如果`nums[mid]`大于它的左侧元素(即`nums[mid] > nums[left]`),那么峰值可能在右半部分,所以将`left = mid + 1`;反之,如果小于右侧元素,则峰值可能在左半部分,更新`right = mid - 1`。
4. 当`left`和`right`相遇(或者相等),表示找到了峰值,返回`mid`作为结果。
5. 如果数组只有一个元素,或者`left >= right`,说明整个数组都是峰值(对于最小峰值而言),返回数组的第一个或最后一个元素。
下面是简单的C++代码实现:
```cpp
int findPeakElement(vector<int>& nums) {
if (nums.empty()) return 0;
int left = 0, right = nums.size() - 1;
while (left < right) {
int mid = left + (right - left) / 2;
if (nums[mid] > nums[mid + 1]) {
right = mid;
} else {
left = mid + 1;
}
}
return left;
}
```
力扣两数相加 java
### LeetCode 两数之和问题的 Java 实现
对于给定数组 `numbers` 和目标值 `target`,寻找两个不同的索引使得它们对应的数值相加等于目标值。下面展示了一个有效的解决方案:
```java
import java.util.HashMap;
public class Solution {
public int[] twoSum(int[] numbers, int target) {
int[] result = new int[2];
if (numbers == null || numbers.length < 2) return result;
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < numbers.length; i++) {
if (!map.containsKey(target - numbers[i])) {
map.put(numbers[i], i);
} else {
result[0] = map.get(target - numbers[i]) + 1;
result[1] = i + 1;
break;
}
}
return result;
}
}
```
此算法通过哈希表来存储已经遍历过的数字及其对应的位置,从而可以在常量时间内完成查找操作。当遇到当前元素与之前某个元素组合可以达到目标值时,则找到了解并返回这两个位置[^1]。
为了验证该方法的有效性,考虑输入数据 `{2, 7, 11, 15}` 及其目标值 `9` 的情况。按照上述逻辑执行程序后会得到输出结果为 `index1=1, index2=2`,这正是预期的结果[^3]。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)