# leetcode-notes **Repository Path**: heng_fei/leetcode-notes ## Basic Information - **Project Name**: leetcode-notes - **Description**: leetcode刷题记录 Java - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-01 - **Last Updated**: 2021-03-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # leetcode-notes ### 1. [两数之和](https://leetcode-cn.com/problems/two-sum/) 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 你可以按任意顺序返回答案。 **示例 1**: ```shell 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 ``` **示例 2**: ``` 输入:nums = [3,2,4], target = 6 输出:[1,2] ``` **示例 3**: ``` 输入:nums = [3,3], target = 6 输出:[0,1] ``` **提示**: 2 <= nums.length <= 103 -109 <= nums[i] <= 109 -109 <= target <= 109 **只会存在一个有效答案** ### 2. [两数相加](https://leetcode-cn.com/problems/add-two-numbers/) 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 **示例 1:** ![](imgs/00002.jpg) ``` 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. ``` **示例 2:** ``` 输入:l1 = [0], l2 = [0] 输出:[0] ``` **示例 3:** ``` 输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1] ``` **提示:** - 每个链表中的节点数在范围 `[1, 100]` 内 - `0 <= Node.val <= 9` - 题目数据保证列表表示的数字不含前导零 ### 3. [无重复字符的最长子串](https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/) (尚未研究清楚) 给定一个字符串,请你找出其中不含有重复字符的 **最长子串** 的长度。 **示例 1:** ``` 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 ``` **示例 2:** ``` 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 ``` 示例 3: ``` 输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 ``` **示例 4:** ``` 输入: s = "" 输出: 0 ``` **提示:** - `0 <= s.length <= 5 * 104` - `s` 由英文字母、数字、符号和空格组成 ### 4. [寻找两个正序数组的中位数](https://leetcode-cn.com/problems/median-of-two-sorted-arrays/) 给定两个大小分别为 `m` 和 `n` 的正序(从小到大)数组 `nums1` 和 `nums2`。请你找出并返回这两个正序数组的 **中位数** 。 **示例 1:** ``` 输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1,2,3] ,中位数 2 ``` **示例 2:** ``` 输入:nums1 = [1,2], nums2 = [3,4] 输出:2.50000 解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5 ``` **示例 3:** ``` 输入:nums1 = [0,0], nums2 = [0,0] 输出:0.00000 ``` **示例 4:** ``` 输入:nums1 = [], nums2 = [1] 输出:1.00000 ``` **示例 5:** ``` 输入:nums1 = [2], nums2 = [] 输出:2.00000 ``` **提示:** - nums1.length == m - nums2.length == n - 0 <= m <= 1000 - 0 <= n <= 1000 - 1 <= m + n <= 2000 - -106 <= nums1[i], nums2[i] <= 106 **进阶:**你能设计一个时间复杂度为 `O(log (m+n))` 的算法解决此问题吗?