蘑菇的小屋

leetcode day1 1~5

#1 Two Sum
用HashMap空间换时间, time: O(n), space: O(n)

public class Solution {
    public int[] twoSum(int[] nums, int target) {

        int[] result=new int[2];
        Map<Integer, Integer> targetMap=new HashMap<Integer, Integer>();

        for(int i=0;i<nums.length;i++){

            if(targetMap.containsKey(nums[i])){
                result[0]=targetMap.get(nums[i]);
                result[1]=i;
                break;
            }
        
            targetMap.put(target-nums[i],i);
        }

        return result;
    }
}

#2 Add Two Numbers
简单的链表加法

public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

        ListNode dummy=new ListNode(0);

        ListNode p=dummy,p1=l1,p2=l2;
        int carry=0;

        for(;p1!=null||p2!=null||carry!=0;p1=(p1!=null?p1.next:null),p2=(p2!=null?p2.next:null),p=p.next){
        
            int val=(p1!=null?p1.val:0)+(p2!=null?p2.val:0)+carry;
            carry=val/10;
            ListNode node=new ListNode(val%10);
            p.next=node;
        }

        return dummy.next;
    }
}