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

7.17 滑动窗口

 

lc523.同余定理

两个注意点

  • 同余定理:余数相同的两个数,做差可被整除。--前缀和
  • hash存mod,不可以用set,因为要保证len大于等于2,所以要存idx映射

!!还有对于全选和全不选的两个边界,下标初始化处理

同余定理就是说:两个整数 a 和 b,如果除以同一个正整数 m 后余数相同,就称 a 和 b 对 m 同余,简单记成  a ≡ b (mod m)  ,大白话就是“除以 m 剩得一样” 。

比如 17 和 5 除以 6 都余 5,就说 17 和 5 对 6 同余 。则(17-5)%6=0,余数相同的两个数,做差可被整除。

class Solution {
public:
bool checkSubarraySum(vector<int>& nums, int k) 
{
int n=nums.size();
vector<int> f(n+1,0);

for(int i=0;i<n;i++)
{
f[i+1]=f[i]+nums[i];
}
unordered_map<int,int> hash;
hash[0]=0;

for(int i=0;i<=n;i++)
{
int mod=f[i]%k;

if(hash.count(mod))
{
if(i-hash[mod]>=2)
return true;
}
else
hash[mod]=i;
}
return false;

}
};

 

lc1423.

滑动窗口➕正难则反(用滑动窗口,就要转化为连续部分才能滑~)

 

取两边最大->转化为中间最小

喜提tle....

class Solution {
vector<int> card;
int n=0,k=0,ret=0;
public:
int maxScore(vector<int>& cardPoints, int k) 
{
card=cardPoints;
this->k=k;
n=cardPoints.size();
dfs(0,n-1,0,0);

return ret;
}

void dfs(int b,int e,int sum,int cnt)
{
if(cnt==k) 

ret=max(ret,sum);
return;
}

dfs(b,e-1,sum+card[e],cnt+1);
dfs(b+1,e,sum+card[b],cnt+1);
}
};

滑动窗口,正难则反

class Solution {

public:

    int maxScore(vector<int>& cardPoints, int k) {

        int ret=INT_MAX,sum=0;

        int l=0,r=0;

        int n=cardPoints.size();

        int w=n-k;

        int tt=0;

        

        for(auto& c:cardPoints)

            tt+=c;

        

        while(r<n)

        {

            sum+=cardPoints[r];

            r++;

            

            if(r-l==w)

            {

                ret=min(ret,sum);

                sum-=cardPoints[l];

                l++;

            }

        }

        int ans=tt-ret;

        if(ret==INT_MAX) ans=tt;

        return ans;

    }

};

 

http://www.dtcms.com/a/282951.html

相关文章:

  • TCP粘包和拆包问题详解:原理与Netty解决方案
  • 命令解释器-shell
  • rtthread - V5.1.0版本 HOOK 钩子函数总结
  • VUEX 基础语法
  • BBDM: Image-to-image Translation with Brownian Bridge Diffusion Models 译读笔记
  • 汽车电子功能安全标准ISO26262解析(二)——需求部分
  • 使用JS编写一个购物车界面
  • 51c大模型~合集155
  • 求不重叠区间总和最大值
  • 【Linux】基本指令学习1
  • 【从树的视角理解递归】【递归 = 遍历 || 分解】
  • 薄板样条(TPS, Thin Plate Spline)数学原理推导
  • 从0到1开发网页版五子棋:我的Java实战之旅
  • 【ROS/DDS】FastDDS:C++编写一个发布者和订阅者应用程序(三)
  • OpenCV稠密光流估计的一个类cv::optflow::DenseRLOFOpticalFlow
  • hashMap原理(一)
  • FAISS深度学习指南:构建高效向量检索系统的完整方法论
  • SSH连接复用技术在海外云服务器环境下的稳定性验证与优化方案
  • [时序数据库-iotdb]时序数据库iotdb的安装部署
  • 【C++】迭代器
  • 第五章 管道工程 5.4 管道安全质量控制
  • 【前端】HTML语义标签的作用与实践
  • 想删除表中重复数据,只留下一条,sql怎么写
  • 1688商品API全链路开发实践
  • Reddit Karma是什么?Post Karma和Comment Karma的提升指南
  • 搭建基于Gitee文档笔记自动发布
  • 达梦数据库配置兼容MySQL
  • Vue + Element UI 实现单选框
  • [特殊字符] 第1篇:什么是SQL?数据库是啥?我能吃吗?
  • LeafletJS 进阶:GeoJSON 与动态数据可视化