- Two Sum
https://leetcode.com/problems/two-sum/
遍历就能过O(n^2)
据说下面代码是O(n),但是containsKey这个难道是O(1)?:
public int[] twoSum(int[] numbers, int target) {
int[] result = new int[2];
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < numbers.length; i++) {
if (map.containsKey(target - numbers[i])) {
result[1] = i + 1;
result[0] = map.get(target - numbers[i]);
return result;
}
map.put(numbers[i], i + 1);
}
return result;
}
2.Add Two Numbers
https://leetcode.com/problems/add-two-numbers/
链表题,我的做法和21 Merge Two Sorted Lists差不多,见代码整理(一)
简化版:
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int d = 0;
ListNode p = null;
ListNode q = null;
while(l1 != null || l2 != null || d != 0)
{
int s1 = l1 == null ? 0 : l1.val;
int s2 = l2 == null ? 0 : l2.val;
int s = s1 + s2 + d;
ListNode r = new ListNode(s % 10);
if(p == null)
{
p = r;
}else
{
q.next = r;
}
q = r;
d = s / 10;
if(l1 != null)
l1 = l1.next;
if(l2 != null)
l2 = l2.next;
}
return p;
}
}
本文详细介绍了如何使用映射方法解决LeetCode中的TwoSum问题,并提供了优化后的AddTwoNumbers链表题解,深入探讨了算法优化和数据结构应用。
&spm=1001.2101.3001.5002&articleId=50437172&d=1&t=3&u=dd9cfef41e35428fb1b11f88ab5d7644)
4154

被折叠的 条评论
为什么被折叠?



