1. Two Sum
public class Solution {
public int[] twoSum(int[] nums, int target) {
int result[] = new int[2];
Map<Integer, Integer> map = new HashMap<>();
for(int i = 0; i < nums.length; i++){
if(map.containsKey(target - nums[i])){
result[1] = i;
result[0] = map.get(target - nums[i]);
return result;
}
map.put(nums[i], i);
}
return result;
}
}
2. Add Two Numbers
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = new ListNode(0);
ListNode temp = result;
int sum = 0;
while(l1 != null || l2 != null){
sum/=10;
if(l1 != null){
sum += l1.val;
l1 = l1.next;
}
if(l2 != null){
sum += l2.val;
l2 = l2.next;
}
temp.next = new ListNode(sum%10);
temp = temp.next;
}
if(sum/10 >= 1){
temp.next = new ListNode(sum/10);
}
return result.next;
}
}
3. Longest Substring Without Repeating Characters
public class Solution {
public int lengthOfLongestSubstring(String s) {
if(0 == s.length()) return 0;
Map<Character, Integer> map = new HashMap<>();
int max = 0;
for(int i = 0, j = 0; i<s.length(); i++){
if(map.containsKey(s.charAt(i))){
j = Math.max(j, map.get(s.charAt(i))+1);
}
map.put(s.charAt(i), i);
max = Math.max(max, i - j + 1);
}
return max;
}
}
4. Median of Two Sorted Arrays
public class Solution {
public double findMedianSortedArrays(int[] A, int[] B) {
int m = A.length, n = B.length;
int l = (m + n + 1) / 2;
int r = (m + n + 2) / 2;
return (getkth(A, 0, B, 0, l) + getkth(A, 0, B, 0, r)) / 2.0;
}
public double getkth(int[] A, int aStart, int[] B, int bStart, int k) {
if (aStart > A.length - 1) return B[bStart + k - 1];
if (bStart > B.length - 1) return A[aStart + k - 1];
if (k == 1) return Math.min(A[aStart], B[bStart]);
int aMid = Integer.MAX_VALUE, bMid = Integer.MAX_VALUE;
if (aStart + k/2 - 1 < A.length) aMid = A[aStart + k/2 - 1];
if (bStart + k/2 - 1 < B.length) bMid = B[bStart + k/2 - 1];
if (aMid < bMid)
return getkth(A, aStart + k/2, B, bStart, k - k/2);
else
return getkth(A, aStart, B, bStart + k/2, k - k/2);
}
}
5. Longest Palindromic Substring
public class Solution {
private int lo, maxLen;
public String longestPalindrome(String s) {
if (s.length() < 2){
return s;
}
for (int i = 0; i < s.length()-1; i++) {
extendPalindrome(s, i, i); //assume odd length, try to extend Palindrome as possible
extendPalindrome(s, i, i+1); //assume even length.
}
return s.substring(lo, lo + maxLen);
}
private void extendPalindrome(String s, int j, int k) {
while (j >= 0 && k < s.length() && s.charAt(j) == s.charAt(k)) {
j--;
k++;
}
if (maxLen < k - j - 1) {
lo = j + 1;
maxLen = k - j - 1;
}
}
}