您的位置:首页 > 财经 > 金融 > 外包加工网上可靠吗_专业做制作网站_百度地图优化_员工培训课程

外包加工网上可靠吗_专业做制作网站_百度地图优化_员工培训课程

2025/3/12 17:56:31 来源:https://blog.csdn.net/qq_45801780/article/details/145926802  浏览:    关键词:外包加工网上可靠吗_专业做制作网站_百度地图优化_员工培训课程
外包加工网上可靠吗_专业做制作网站_百度地图优化_员工培训课程

在这里插入图片描述

解题思路:

  1. 滑动窗口: 使用滑动窗口来遍历 s 中所有长度为 p 的子串。
  2. 统计字符频率: 通过两个长度为 26 的数组分别统计窗口内字符和 p 中字符的出现次数,快速判断是否满足字母异位词条件。

Java代码:

class Solution {public List<Integer> findAnagrams(String s, String p) {int sLen = s.length(), pLen = p.length();if (sLen < pLen) {return new ArrayList<Integer>();}List<Integer> res = new ArrayList<>();int[] sCount = new int[26];int[] pCount = new int[26];for (int i = 0; i < pLen; ++i) {++sCount[s.charAt(i) - 'a'];++pCount[p.charAt(i) - 'a'];}if (Arrays.equals(sCount, pCount)) {res.add(0);}for (int i = 0; i < sLen - pLen; ++i) {--sCount[s.charAt(i) - 'a'];++sCount[s.charAt(i + pLen) - 'a'];if (Arrays.equals(sCount, pCount)) {res.add(i + 1);}}return res;}
}

复杂度分析:

  • 时间复杂度: O(n + m),其中 n 是 s 的长度,m 是 p 的长度。
  • 空间复杂度: O(1),使用两个固定长度为 26 的数组存储字符频率,空间与输入规模无关。

在这里插入图片描述

解题思路:

  1. 初始化哈希表: 用于存储前缀和的出现次数,初始时放入 {0: 1},以处理子数组从数组开头的情况。
  2. 遍历数组: 逐个计算当前前缀和,并检查哈希表中是否存在 当前前缀和 - k,若存在则累加对应的次数到结果。
  3. 更新哈希表: 将当前前缀和存入哈希表,维护其出现次数。

Java代码:

class Solution {public int subarraySum(int[] nums, int k) {Map<Integer, Integer> prefixMap = new HashMap<>();prefixMap.put(0, 1);int prefixSum = 0;int count = 0;for (int num : nums) {prefixSum += num;count += prefixMap.getOrDefault(prefixSum - k, 0);prefixMap.put(prefixSum, prefixMap.getOrDefault(prefixSum, 0) + 1);}return count;}
}

复杂度分析:

  • 时间复杂度: O(n),其中 n 是数组长度。只需一次遍历数组。
  • 空间复杂度: O(n),最坏情况下哈希表存储 O(n) 个不同的前缀和(例如所有元素互为相反数且和为 k)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com