lcp56. memo优化tle

或者改用bfs

class Solution {

    int m, n;

    int dx[4] = {0, 0, 1, -1};

    int dy[4] = {1, -1, 0, 0};

    

public:

    int conveyorBelt(vector<string>& matrix, vector<int>& start, vector<int>& end) 

    {

        int ret = INT_MAX;

        m = matrix.size();

        n = matrix[0].size();

        vector<vector<bool>> vis(m, vector<bool>(n, false));

        vis[start[0]][start[1]] = true; 

        

        function<void(int, int, int)> dfs = [&](int a, int b, int cnt)

        {

            if(cnt>=ret) return;

            if (a == end[0] && b == end[1])

            {

                ret = min(ret, cnt);

                return;

            }

            

            for (int k = 0; k < 4; k++)

            {

                int x = a + dx[k], y = b + dy[k];

                if (x >= 0 && y >= 0 && x < m && y < n && !vis[x][y])

                {

                    int op = cnt;

                    if (check(k) != matrix[a][b]) 

                        op++;

                    vis[x][y] = true;

                    dfs(x, y, op);

                    vis[x][y] = false; 

                }

            }

        };

        

        dfs(start[0], start[1], 0); 

        

        return ret;

    }

    

    char check(int k)

    {

        if (k == 0) return '>';

        if (k == 1) return '<';

        if (k == 2) return 'v';

        return '^'; 

    }

};

 

lc3015.

法1:暴力bfs,数据范围only 100,可以过

 

法2:加入了x,y,可以思考加入的x,y影响了什么呢? 通过数学找规律

class Solution {
public:
vector<int> countOfPairs(int n, int x, int y) {
vector<int> ret(n, 0);
for (int i = 1; i <= n; ++i) {
for (int j = i + 1; j <= n; ++j) {
// 计算三种可能路径的最短距离
int direct = j - i; 
  int viaX = abs(i - x) + 1 + abs(j - y); 
int viaY = abs(i - y) + 1 + abs(j - x); 

int minDist = min({direct, viaX, viaY});
ret[minDist - 1] += 2;
}
}
return ret;
}
};

 

assign

assign  是容器(比如 vector)的一个接口

作用:清空容器原来的内容,然后放入新的元素。

打个比方,就像你有一个盒子, assign(n, false)  就相当于:

  • - 先把盒子里原来的东西全倒掉
  • - 再往盒子里放  n  个  false 

这样能确保容器里的内容是全新的,不会有之前残留的数据,避免出错。

 

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.pswp.cn/web/89187.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89187.shtml
英文地址,请注明出处:http://en.pswp.cn/web/89187.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

统计功效是什么?

统计功效的通俗理解可以把“统计功效”想象成侦探破案的能力——它代表统计检验&#xff08;侦探&#xff09;在犯罪事实确实存在&#xff08;真实效应存在&#xff09;时&#xff0c;成功发现真相&#xff08;检测出效应&#xff09;的概率。核心比喻假设你是一个侦探&#xf…

大语言模型(LLM)训练的教师强制(Teacher Forcing)方法

大语言模型&#xff08;LLM&#xff09;在训练时使用一种名为“教师强制&#xff08;Teacher Forcing&#xff09;”的方法&#xff0c;而不是它们在推理&#xff08;生成文本&#xff09;时使用的“自回归&#xff08;Autoregressive&#xff09;”方法 。阐明关于LLM训练的一…

归一化与激活函数:深度学习的双引擎

归一化和激活函数区别 归一化和激活函数是深度学习中两个不同但又存在关联的技术,前者聚焦于“数据分布的调整”,后者聚焦于“引入非线性与输出转换”。 Softmax 既可以被视为一种归一化操作,也属于激活函数 因为它同时满足两者的核心特征,只是从不同角度定义:从“输出…

C# --- 单例类错误初始化 + 没有释放资源导致线程泄漏

C# --- 单例类错误初始化 没有释放资源导致线程泄漏Background原因分析问题一&#xff1a; 错误初始化&#xff08;使用了箭头函数&#xff09;问题一&#xff1a; 没有Dispose资源Background 背景: service A的其中一个Api会向mq发送消息问题&#xff1a;线上发现这个服务经常…

MySQL基础学习之DML,DQL(二)

这里写目录标题一、DML1、INSERT语句1)、给指定列添加数据2)、给全部列添加数据3)、批量数据添加数据4)、操作2、UPDATE语句3、DELETE语句二、DQL1、单表查询1&#xff09;查询语法2&#xff09;查询全部3&#xff09;查询部分4&#xff09;条件查询5&#xff09;聚合函数6&…

在 Linux 系统中实现 Spring Boot 程序自动启动的最佳实践

在实际部署 Spring Boot 项目的生产环境中&#xff0c;如何确保服务自动启动&#xff08;如开机自动运行、宕机自动恢复&#xff09;是一项基础而关键的运维能力。本文将系统介绍如何在 Linux 中将 Spring Boot 应用注册为 systemd 服务&#xff0c;实现进程守护与自动启动。&a…

如何建立项目团队的自驱力文化?

建立项目团队的自驱力文化&#xff0c;关键在于赋权机制、目标共创、持续反馈、内在激励、价值认同。 其中&#xff0c;“目标共创”尤其重要。项目成员若未参与目标制定&#xff0c;仅被动接受任务&#xff0c;将很难激发责任感和参与热情。反之&#xff0c;通过共创目标&…

【React Native】布局文件-底部TabBar

布局文件-底部tabBar 内容配置 export default function Layout() {return (<Tabs />); }默认会将布局文件是将与它在同一个目录的所有文件&#xff0c;包括下级目录的文件&#xff0c;全都配置成Tab了。&#xff1a; 这样做显然不对&#xff0c;正确的做法是 在app目…

CompareFace使用

CompareFace 使用 CompareFace 有三种服务&#xff0c;分别是人脸识别&#xff08;RECOGNITION&#xff09;、人脸验证&#xff08;VERIFICATION&#xff09;、人脸检测&#xff08;DETECTION&#xff09;。 人脸识别其实就是人脸身份识别(每张照片只有一个人脸)&#xff0c;…

APP测试之Monkey压力测试

&#xff08;一&#xff09;Monkey简介 Monkey意指猴子&#xff0c;顽皮淘气。所以Monkey测试&#xff0c;顾名思义也就像猴子一样在软件上乱敲按键&#xff0c;猴子什么都不懂&#xff0c;就爱捣乱。 Monkey 是 Android SDK 自带的命令行工具&#xff0c;它通过向系统发送伪…

时序大模型为时序数据库带来的变革与机遇

时序数据&#xff08;Time Series Data&#xff09;作为记录系统状态随时间变化的重要数据类型&#xff0c;在物联网、金融交易、工业监控等领域呈爆炸式增长。传统时序数据库专注于高效存储和查询时序数据&#xff0c;而时序大模型&#xff08;Time Series Foundation Models&…

深入核心:理解Spring Boot的三大基石:起步依赖、自动配置与内嵌容器

深入核心&#xff1a;理解Spring Boot的三大基石&#xff1a;起步依赖、自动配置与内嵌容器 摘要&#xff1a;在上一章&#xff0c;我们领略了Spring Boot带来的革命性开发体验。但魔法的背后&#xff0c;必有其科学的支撑。本章将带你深入Spring Boot的内核&#xff0c;系统性…

达梦数据库配置兼容MySQL

前言 作为一名数据库管理员或开发者&#xff0c;当项目需要从MySQL迁移到达梦数据库时&#xff0c;最关心的莫过于兼容性问题。达梦作为国产数据库的佼佼者&#xff0c;提供了良好的MySQL兼容模式&#xff0c;今天我就来分享一下如何配置达梦数据库以实现对MySQL的兼容。 一、为…

js与vue基础学习

vue创建项目 安装node安装node、npm、cnpm node -v npm -v #npm服务器位置处于国外&#xff0c;下载包的速度会比较缓慢。阿里为国内用户提供的cnpm&#xff0c;他是npm的镜像&#xff0c;下载第三方包时&#xff0c;们完全可以使用cnpm来替代npm。 cnpm -v在node中执行JavaScr…

【开源.NET】一个 .NET 开源美观、灵活易用、功能强大的图表库

文章目录一、项目介绍二、适用场景三、功能模块四、功能特点五、效果展示六、开源地址一、项目介绍 LiveCharts2 是一个开源、简单、灵活、交互式且功能强大的 .NET 图表库。LiveCharts2 现在几乎可以在任何地方运行&#xff1a;Maui、Uno Platform、Blazor-wasm、WPF、WinFor…

使用Whistle自定义接口返回内容:Mock流式JSON数据全解析

一.mock接口返回数据流程 定位目标接口 在Whistle的Network面板中找到需要Mock的接口&#xff0c;右键点击请求信息&#xff0c;选择COPY -> URL复制完整URL&#xff0c;确保URL路径精确到具体接口。准备Mock数据 点击对应接口&#xff0c;在右侧面板切换到response标签页&a…

【前端】富文本编辑器插件 wangEditor 5 基本使用(Vue2)

https://www.wangeditor.com/v5 一、安装 首先安装editor yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save安装Vue2组件 yarn add wangeditor/editor-for-vue # 或者 npm install wangeditor/editor-for-vue --save或者Vue3 yarn add wangeditor/…

自适应哈希索引 和 日志缓冲区

目录 1. 自适应哈希索引在内存中的位置 2. 自适应哈希索引的作用 3. 为什么要创建自适应哈希索引 4. 适应哈希索引的Key -Value如何设置&#xff1f; 5. 日志缓冲区在内存中的位置 6. 日志缓冲区的作用 7. 日志不通过LogBuffer直接写入磁盘不行吗&#xff1f; 1. 自适应哈…

中国旅行社协会在京召开“文旅人工智能应用研讨会”,助力文旅创新发展

7月15日&#xff0c;由中国旅行社协会数字经济专业委员会和在线旅行服务商分会联合主办的“人工智能技术在文旅产业中的应用”研讨会在北京举行。中国旅行社协会副会长、秘书长孙桂珍出席并致辞&#xff0c;中国工程院外籍院士、具身智能机器人专家张建伟、北京第二外国语学院旅…

Linux之Zabbix分布式监控篇(一)

一、概念和特点概念Zabbix是一款开源、免费的监控软件 主要用于7*24*365实时监控网络设置&#xff0c;操作系统&#xff0c;应用程序&#xff0c;网络带宽等资源的运行状态&#xff0c;并且一旦发生异常能够第一时间个SA管理员发送报警信息特点Zabbix是c/s结构&#xff0c;有c…