mybloger

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

leetCode100 第3,4题

3、无重复最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。
示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
 

提示:

0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成
class Solution {
    // 滑动区间算法,看似两个循环,实则第二个一个循环最多只会移动n次,所以时间复杂度只有O(N)
    // 直接使用模拟队列实现,把list集合当成一个双端队列,可以左边出,右边进,始终维护一个不重复最长串,最后求出最大值
    public int lengthOfLongestSubstring(String s) {
        List<Character> list = new ArrayList();
        int max = 0;
        for (int i = 0; i < s.length(); i++) {
            //如果集合中已包含了该字符,则从集合中删除该字符及之前的全部字符
            while (list.contains(s.charAt(i))) {
                list.remove(0);
            }
            list.add(s.charAt(i));
            //每次添加字符串,就重新判断最大长度
            max = Math.max(max, list.size());
        }
        return max;
    }
}

4. 寻找两个正序数组的中位数

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。

算法的时间复杂度应该为 O(log (m+n)) 。

 

示例 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
class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
         int len1 = nums1.length;
        int len2 = nums2.length;

        // 创建一个可变的列表用于存放合并后的数组
        ArrayList<Integer> ans = new ArrayList<>();

        // 将 nums1 和 nums2 中的元素逐一添加到 ans 列表
        for (int num : nums1) {
            ans.add(num);
        }
        for (int num : nums2) {
            ans.add(num);
        }

        // 对合并后的列表进行排序
        Collections.sort(ans);

        int totalLength = len1 + len2;

        // 判断总长度是否为偶数
        if (totalLength % 2 == 0) {
            // 如果为偶数,返回中间两个数的平均值
            return (ans.get(totalLength / 2) + ans.get(totalLength / 2 - 1)) / 2.0;
        } else {
            // 如果为奇数,返回中间的数
            return ans.get(totalLength / 2);
        }
    }
}
posted on 2025-06-02 10:54  万能包哥  阅读(11)  评论(0)    收藏  举报