当前位置: 首页 > news >正文

哈希表专题

力扣560题  

将问题转化为寻找和为k的子数组,而不是直接在数组中寻找和为k的连续元素这样就可以使问题在一次遍历中解决。

对于每个前缀和,都检查是否存在一个早先的前缀和,使得它们的差等于k。如果存在,就找到一个和为k的子数组。

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        int preSum = 0;
        int ans = 0;
        //键:前缀和,值:前缀和出现的次数
        unordered_map<int,int>record;
        //初始化时为空区间,则前缀和为0,出现的次数为1
        record[0] = 1;
        for(const int &num:nums){
            preSum += num;
            if(record.count(preSum-k)){
                ans += record[preSum-k];
            }
            ++record[preSum];
        }
        return ans;
    }
};
 
力扣581题  最短无序连续子数组
 
class Solution {
public:
    int findUnsortedSubarray(vector<int>& nums) {
         vector<int>ordered_nums(nums);
         sort(ordered_nums.begin(),ordered_nums.end());
         int i=0,j = nums.size()-1;
         while(i<nums.size()){              //从前往后作比较
            if(nums[i]==ordered_nums[i]){
                i++;
            }else{
                break;
            }
         }
         if(i==nums.size()){           //若遍历全部, 则原数组有序
            return 0;
         }
         while(j>=0){                     //从后往前比较
            if(nums[j]==ordered_nums[j]){
                j--;
            }else{
                break;
            }
         }
         return j-i+1;
    }
};
 
力扣438题  找到字符串中所有字母异位词
不管顺序,只要在窗口内的字符符合目标字符的个数即为字母异位词,所以用count1和count2来分别计数目标p和窗口内字符的个数。
如果count1=count2,则二者一致,则添加到result里。
class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        vector<int>result;
        if(p.size()>s.size()) return result;
        vector<int>count1(26,0);
        vector<int>count2(26,0);
       
        //初始化p的字符计数
        for(auto c:p) count1[c-'a']++;
       
        //初始化第一个窗口
        for(int i=0;i<p.size();i++) count2[s[i]-'a']++;
        if(count2==count1) result.push_back(0);
       
        //滑动窗口
        for(int i=1;i<=s.size()-p.size();i++){
            count2[s[i-1]-'a']--;              //移除旧左边界
            count2[s[i+p.size()-1]-'a']++;     //添加新右边界
            if(count2==count1) result.push_back(i);
        }
        return result;
    }
};
 
http://www.hskmm.com/?act=detail&tid=22306

相关文章:

  • Meta基础设施演进与AI技术革命
  • 完整教程:Spring AI整合聊天模型DeepSeek
  • 2025 年焚烧炉厂家 TOP 企业品牌推荐排行榜!权威甄选实力与口碑俱佳的江苏焚烧炉 / 无锡焚烧炉推荐这十家公司!
  • 2025 年防腐涂料厂家 TOP 企业品牌推荐排行榜,乙烯基、环氧煤沥青、环氧防腐涂料、防腐涂料地坪 、防腐涂料水池推荐这十家公司!
  • 2025双氧水厂家权威推荐榜:优质供应与专业定制实力之选
  • Win环境下包管理工具
  • MX Round 11 解题报告
  • 用 C# 打造企业资产管理系统雏形——从控制台到完整模块设计 - 详解
  • java开发之微信机器人的二次开发
  • 10.1刷题计划一
  • 笔记本电脑重装系统后找不到5G WIFI无线网或蓝牙模块消失的解决方案
  • 菜鸟坚持记录-开头篇
  • AI+传统工作流:Photoshop/Excel的智能插件开发指南 - 实践
  • Typora 笔记迁移 Obsidian 图片附件库批量移动方法,适用于笔记整理。
  • 2025年确有专长培训权威推荐榜:专业资质与特色诊疗口碑之选
  • 开源 C# 快速构建(五)自定义控件--仪表盘
  • 2025中医师承培训、考试、认证机构权威推荐榜:名师传承与临床实践口碑之选
  • 电子文件分类整理与双向同步 2025年10月1日
  • C++版搜索与图论算法 - 详解
  • 62. 不同路径
  • 达成设计卓越:全面解析 IC 设计中的验证之道
  • Typora 笔记迁移 Obsidian 图片链接转换
  • Java 运行 Word 文档标签并赋值:从基础到实战
  • 词云组件
  • 2025 年超声波清洗机品牌最新权威推荐排行榜:龙门式 / 悬挂式 / 全自动等多类型设备厂家 TOP3 精选,助力企业精准选购
  • 树的统一迭代法
  • 2025 年冷却塔品牌最新推荐排行榜:玻璃钢冷却塔、闭式冷却塔、方型逆流式冷却塔优质厂家 TOP3 精选,赋能企业选购
  • DailyPaper-2025-9-30
  • Powershell 管理 后台/计划 作业(六)
  • 32. 最长有效括号