LeetCode(Java版)因为用上了MD所有删掉了以前的帖子

第一题:

//思路1.就不说了 时间复杂度 N^2
//思路2.空间换时间 改题目没有限制空间 则 最优选   时间复杂度 N
class Solution {
    public int[] twoSum(int[] nums, int target) {
     //用于存放 对比值
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        int[] result = new int[2];
        //遍历数组
        for (int i = 0; i < nums.length; i++) {
       //若本次遍历的值在 hashMap中存在一个 与之和与 target 相等的数则直接 return 
            if (map.containsKey(target - nums[i])) {
                result[0] = map.get(target - nums[i]);
                result[1] = i;  // 此时 i 对应的元素还没有放进去。
                return result;
            }
       //若不存在 则 直接存入 等待下一次的比对   
            map.put(nums[i], i);
        }
        return result;
    }
}

第二题:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    //递归思路
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        return addTwoNumbers(l1, l2, null);
    }
    public ListNode addTwoNumbers(ListNode l1, ListNode l2, ListNode prev) {
        ListNode next1 = null;
        ListNode next2 = null;
        int val1 = 0;
        int val2 = 0;
        if (l1 != null) {
            val1 = l1.val;
            next1 = l1.next;
        }
        if (l2 != null) {
            val2 = l2.val;
            next2 = l2.next;
        }
        ListNode newNode = new ListNode(val1 + val2);
        if (prev != null) {
            if (prev.val >= 10) {
                prev.val %= 10;
                newNode.val += 1;
            }
        }
        if (next1 != null || next2 != null) {
            newNode.next = addTwoNumbers(next1, next2, newNode);
        } else if (newNode.val >= 10) {
            newNode.next = addTwoNumbers(next1, next2, newNode);
        }
        return newNode;
    }
}
原文地址:https://www.cnblogs.com/shundong106/p/11188984.html