diff --git "a/array/4_\345\257\273\346\211\276\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260/4_hard_\345\257\273\346\211\276\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260.cpp" "b/array/4_\345\257\273\346\211\276\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260/4_hard_\345\257\273\346\211\276\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260.cpp" new file mode 100644 index 0000000..59dbf3b --- /dev/null +++ "b/array/4_\345\257\273\346\211\276\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260/4_hard_\345\257\273\346\211\276\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260.cpp" @@ -0,0 +1,50 @@ +/* + * @lc app=leetcode.cn id=4 lang=cpp + * + * [4] 寻找两个有序数组的中位数 + * + * https://leetcode-cn.com/problems/median-of-two-sorted-arrays/description/ + * + * algorithms + * Hard (37.27%) + * Likes: 2822 + * Dislikes: 0 + * Total Accepted: 215.9K + * Total Submissions: 563.6K + * Testcase Example: '[1,3]\n[2]' + * + * 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。 + * + * 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 + * + * 你可以假设 nums1 和 nums2 不会同时为空。 + * + * + * + * 示例 1: + * + * nums1 = [1, 3] + * nums2 = [2] + * + * 则中位数是 2.0 + * + * + * 示例 2: + * + * nums1 = [1, 2] + * nums2 = [3, 4] + * + * 则中位数是 (2 + 3)/2 = 2.5 + * + * + */ + +// @lc code=start +class Solution { +public: + double findMedianSortedArrays(vector& nums1, vector& nums2) { + + } +}; +// @lc code=end + diff --git "a/two-pointers/3_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262/3_medium_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.cpp" "b/two-pointers/3_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262/3_medium_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.cpp" new file mode 100644 index 0000000..240590d --- /dev/null +++ "b/two-pointers/3_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262/3_medium_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.cpp" @@ -0,0 +1,59 @@ +/* + * @lc app=leetcode.cn id=3 lang=cpp + * + * [3] 无重复字符的最长子串 + * + * https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/description/ + * + * algorithms + * Medium (33.71%) + * Likes: 3881 + * Dislikes: 0 + * Total Accepted: 542.1K + * Total Submissions: 1.6M + * Testcase Example: '"abcabcbb"' + * + * 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 + * + * 示例 1: + * + * 输入: "abcabcbb" + * 输出: 3 + * 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 + * + * + * 示例 2: + * + * 输入: "bbbbb" + * 输出: 1 + * 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 + * + * + * 示例 3: + * + * 输入: "pwwkew" + * 输出: 3 + * 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 + * 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 + * + * + */ + +// @lc code=start +class Solution { +public: + int lengthOfLongestSubstring(string s) { + unordered_map heap; + int res = 0; + for (int i = 0, j = 0; i < s.size(); i++){ + heap[s[i]]++; // 将新元素加入到哈希表中 + while(heap[s[i]] > 1) // 如果有重复,必然是s[i] 重复,因为只有s[i]是新加入的 + // 当s[i]的数量大于1时,将s[j]删除,并将j往后移动一位,一直删到s[i]=1 + heap[s[j++]]--; + res = max(res, i-j+1); + } + return res; + } +}; +// @lc code=end + diff --git "a/two-pointers/3_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262/3_medium_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.py" "b/two-pointers/3_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262/3_medium_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.py" new file mode 100644 index 0000000..562fb17 --- /dev/null +++ "b/two-pointers/3_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262/3_medium_\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.py" @@ -0,0 +1,47 @@ +# +# @lc app=leetcode.cn id=3 lang=python3 +# +# [3] 无重复字符的最长子串 +# +# https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/description/ +# +# algorithms +# Medium (33.71%) +# Likes: 3881 +# Dislikes: 0 +# Total Accepted: 542.1K +# Total Submissions: 1.6M +# Testcase Example: '"abcabcbb"' +# +# 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 +# +# 示例 1: +# +# 输入: "abcabcbb" +# 输出: 3 +# 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 +# +# +# 示例 2: +# +# 输入: "bbbbb" +# 输出: 1 +# 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 +# +# +# 示例 3: +# +# 输入: "pwwkew" +# 输出: 3 +# 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 +# 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 +# +# +# + +# @lc code=start +class Solution: + def lengthOfLongestSubstring(self, s: str) -> int: + +# @lc code=end +