LeetCode算法题题解 (持续更新)

 

1 . 两数之和

/**
     * 1 . 两数之和
     *
     * @param nums   : 整数数组
     * @param target : 目标值
     * @return
     */

    public int[] twoSum(int[] nums, int target) {
        Map map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (map.get(target - nums[i]) != null) {
                return new int[]{map.get(target - nums[i]), i};
            } else {
                map.put(nums[i], i);
            }
        }
        return new int[]{-1, -1};

    }

 

2. 两数相加

/**
     * 2. 两数相加
     * @param l1 : 非空的链表1
     * @param l2 : 非空的链表2
     * @return
     */
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {

        ListNode result = new ListNode(0);
        ListNode l1Copy = l1, l2Copy = l2, resultCopy = result;
        int carry = 0;

        while (l1Copy != null || l2Copy != null) {
            int a = l1Copy == null ? 0 : l1Copy.val;
            int b = l2Copy == null ? 0 : l2Copy.val;

            int add = a + b + carry;
            if (add / 10 == 1) {
                carry = 1;
            } else {
                carry = 0;
            }
            ListNode temp = new ListNode(add % 10);
            resultCopy.next = temp;
            resultCopy = resultCopy.next;
            if (l1Copy != null) {
                l1Copy = l1Copy.next;
            }
            if (l2Copy != null) {
                l2Copy = l2Copy.next;
            }
        }
        if (carry > 0) {
            resultCopy.next = new ListNode(carry);
        }
        return result.next;

    }

 


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

/**
     * 3. 无重复字符的最长子串
     *
     * @param s :待操作字符串
     * @return :返回最长长度
     */
    public int lengthOfLongestSubstring(String s) {

        int start=0;
        int end=0;

        char []chars=s.toCharArray();

        int length=chars.length;
        int maxLength=0;

        Map map = new HashMap<>();

        for(;end

 

你可能感兴趣的:(Java,算法,leetcode)