本文给出了自己对于Leetcode前3题的代码。
Two Sum Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
Example:
  Given nums = [2, 7, 11, 15], target = 9,   Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
1
2
3
4
5
6
7
8
9
10
11
12
13
public  static  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;
	            result[0 ] = map.get(target - numbers[i]);
	            return  result;
	        }
	        map.put(numbers[i], i);
	    }
	    return  result;
	}
 
Add Two Numbers   You are given two non-empty linked lists representing two non-negative   integers. The digits are stored in reverse order and each of their   nodes contain a single digit. Add the two numbers and return it as a   linked list.
  You may assume the two numbers do not contain any leading zero, except   the number 0 itself.
  Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class  ListNode   {
     int  val;
     ListNode next;
     ListNode(int  x) { val = x; }
}
public  ListNode addTwoNumbers (ListNode l1, ListNode l2)   {
       ListNode l3 = new  ListNode(0 );
       ListNode m = l1;
       ListNode n = l2;
       ListNode result = l3;
       int  sum = 0 ;
       int  carry = 0 ;
       while (m != null  || n != null ){
           if  (m != null ){
               sum += m.val;
               m = m.next;
           }
           if (n != null ){
               sum += n.val;
               n = n.next;
           }
           carry = sum / 10 ;
           if (carry == 1 )
               result.next = new  ListNode(sum % 10 );
           else 
               result.next = new  ListNode(sum);
           sum = carry;
           result = result.next;
       }
       if (sum == 1 )
           result.next = new  ListNode(sum);
       return  l3.next;
}
 
Longest Substring Without Repeating Characters   Given a string, find the length of the longest substring without   repeating characters.
  Examples:
  Given “abcabcbb”, the answer is “abc”, which the length is 3.
  Given “bbbbb”, the answer is “b”, with the length of 1.
  Given “pwwkew”, the answer is “wke”, with the length of 3. Note that   the answer must be a substring, “pwke” is a subsequence and not a   substring.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public  int  lengthOfLongestSubstring (String s)   {
    int  length = 0 ;
    int  curr = 0 ;
    int  start = 0 ;
    int  index= 0 ;
    HashMap<Integer,Integer> map = new  HashMap<>();
    char [] s2ch = s.toCharArray();
    int  size = s2ch.length;
    int  value = 0 ;
    for (int  i = 0 ;i < size;i++){
    	value = s2ch[i];
    	if (!map.containsKey(value)){
    		curr++;
    		map.put(value,i);
    	}else {
    		if (curr > length){
    			length = curr;
    		}
    		start = map.get(value);
    		while (index<= start){
    			map.remove((int ) s2ch[index]);
    			index++;
    		}
    		map.put(value,i);
    		curr = i - start;
    	}
    }
	return  (curr > length) ? curr : length;
}