个人简单的求解,尚未考虑时间复杂度的优化,有高效算法共享。
01:
//LeetCode 第一题 两数之和
public static int[] twoSum(int[] nums, int target) {
int arr[] = new int[2];
for (int i = 0; i < nums.length; i++) {
for (int j = i+1; j < nums.length; j++) {
int sum = nums[i] + nums[j];
if (sum == target) {
System.out.println("数字1为:" + nums[i] + " 数字2为:" + nums[j]);
arr[0] = i;
arr[1] = j;
}
}
}
return arr;
}
02:
//LeetCode 第二题 两数之和
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummy = new ListNode(-1);
ListNode cur = dummy;
int carry = 0;
while ((l1 != null) || (l2 != null)) {
// 要注意两个链表的长度不同的情况,当链表为null时,设置为零
int d1 = (l1 == null ? 0 : l1.val);
int d2 = (l2 == null ? 0 : l2.val);
int sum = d1 + d2 + carry;
// carry=sum/10;
carry = sum >= 10 ? 1 : 0;
cur.next = new ListNode(sum % 10);
cur = cur.next;
// null无法链接next
if (l1 != null)
l1 = l1.next;
if (l2 != null)
l2 = l2.next;
}
if (carry > 0)
cur.next = new ListNode(carry);
return dummy.next;
}
private class ListNode {
public ListNode next;
int val;
public ListNode(int i) {
val = i;
}
}