/**
* 暴力做法 。遍历每个元素 xx,并查找是否存在一个值与 target - xtarget?x 相等的目标元素。
*/
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length - 1; i++) {
for (int j = i + 1; j < nums.length - 1; j++) {
if (nums[i] + nums[j] == target) {
return new int[]{i, j};
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
/**
* 暴力做法 。遍历每个元素 xx,并查找是否存在一个值与 target - xtarget?x 相等的目标元素。
*/
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length - 1; i++) {
for (int j = i + 1; j < nums.length - 1; j++) {
if (nums[i] + nums[j] == target) {
return new int[]{i, j};
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
public int[] twoSum01(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
int temp = target - nums[i];
if (map.containsKey(temp)) {
return new int[]{i, map.get(temp)};
}
map.put(nums[i],i );
}
throw new IllegalArgumentException("No two sum solution");
}
public int[] twoSum01(int[] nums, int target) {
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; i++) {
int temp = target - nums[i];
if (map.containsKey(temp)) {
return new int[]{i, map.get(temp)};
}
map.put(nums[i],i );
}
throw new IllegalArgumentException("No two sum solution");
}
测试用例 | 说明 |
l1 = [0,1 ] , l2 = [0,1,2] | 当一个列表比另一个列表长时 |
l1 = [ ] , l2 = [0,1,2] | 当一个列表为空时,即出现空列表 |
l1 = [0,0,1 ] , l2 = [0,0,9] | 求和运算最后可能出现额外的进位,这一点很容易被遗忘 |
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode p = l1, q = l2, curr = dummyHead;
int carry = 0;
while (p != null || q != null) {
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = carry + x + y;
carry = sum / 10;
curr.next = new ListNode(sum % 10);
curr = curr.next;
if (p != null) p = p.next;
if (q != null) q = q.next;
}
if (carry > 0) {
curr.next = new ListNode(carry);
}
return dummyHead.next;
}
x
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode p = l1, q = l2, curr = dummyHead;
int carry = 0;
while (p != null || q != null) {
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = carry + x + y;
carry = sum / 10;
curr.next = new ListNode(sum % 10);
curr = curr.next;
if (p != null) p = p.next;
if (q != null) q = q.next;
}
if (carry > 0) {
curr.next = new ListNode(carry);
}
return dummyHead.next;
}
原文:https://www.cnblogs.com/changsheng1120/p/11857528.html