1. 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你能够假如每种输出只会对应一个答案。然而,数组中同一个元素不能应用两遍。
public int[] twoSum(int[] nums, int target) {    Map<Integer, Integer> map = new HashMap<>();    for(int i = 0; i < nums.length; i++) {        int num = target - nums[i];        if(map.containsKey(num)) {            return new int[]{map.get(num), i};        }        map.put(nums[i], i);    }    return new int[]{-1, -1};}

2. 两数相加

给出两个 非空 的链表用来示意两个非负的整数。其中,它们各自的位数是依照 逆序 的形式存储的,并且它们的每个节点只能存储 一位 数字。
如果,咱们将这两个数相加起来,则会返回一个新的链表来示意它们的和。
您能够假如除了数字 0 之外,这两个数都不会以 0 结尾。
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {   ListNode dummy = new ListNode(0);   ListNode p = l1, q = l2, cur = dummy;   int carry = 0;   while(p != null || q != null) {       int x = p != null ? p.val : 0;       int y = q != null ? q.val : 0;       int sum = x + y + carry;       carry = sum/10;       cur.next = new ListNode(sum%10);       cur = cur.next;       if(p != null) {           p = p.next;       }       if(q != null) {           q = q.next;       }   }   if(carry > 0) {       cur.next = new ListNode(carry);   }   return dummy.next;}

3. 无反复字符的最长子串

给定一个字符串,请你找出其中不含有反复字符的 最长子串 的长度。
public int lengthOfLongestSubstring(String s) {}

7. 整数反转

public int reverse(int x) {    int res = 0;    while(x != 0) {        int pop = x % 10;        x = x/10;        if(res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE && pop > 7)) {            return 0;        }        if(res < Integer.MIN_VALUE/10 || (res == Integer.MIN_VALUE && pop < -8)) {            return 0;        }        res = res * 10 + pop;    }    return res;}

8. 字符串转换整数 (atoi)

public int myAtoi(String str) {    if(str == null || str.length() == 0) {        return 0;    }    int idx = 0;    int len = str.length();    while(idx < len && str.charAt(idx) == ' ') {        idx++;    }    if(idx == len) {        return 0;    }    boolean negative = false;    if(str.charAt(idx) == '-') {        negative = true;        idx++;    } else if(str.charAt(idx) == '+') {        idx++;    } else if(!Character.isDigit(str.charAt(idx))) {        return 0;    }    int res = 0;    while(idx < len && Character.isDigit(str.charAt(idx))) {        int digit = str.charAt(idx) - '0';        if(res > (Integer.MAX_VALUE - digit) / 10) {            return negative ? Integer.MIN_VALUE:Integer.MAX_VALUE;        }        res = res * 10 + digit;        idx++;    }    return negative? -res:res;}

9. 回文数

public boolean isPalindrome(int x) {    if(x < 0 || (x != 0 && x%10 ==0)) {        return false;    }    int revertNum = 0;    while(x > revertNum) {        revertNum = revertNum*10 + x%10;        x /=10;    }    return x == revertNum || x == revertNum /10;}