【算法训练笔记】栈的OJ题

【LeetCode & 剑指offer 刷题笔记】汇总(已完成) 前言   不知不觉就结束了自己的秋招之路,虽感觉有些艰辛但是收获很多。找工作那段时间做了很多学习笔记,这是数据结构与算法相关的一部分笔记,这一块除了复习相关教科书,还有就是刷leetcode和《剑指offer》了。这段时间稍微空闲些,打算把自己之前在印象笔记上做的笔记迁移到优快云上(优快云解析html源码的功能还没加上去,已经反馈了这个问题,我要再等等这个功能,免得要过多的二次编辑),供大家学... 阅读详情

       🔥🔥 欢迎来到小林的博客!!
      🛰️博客主页:✈️林 子
      🛰️博客专栏:✈️ 小林的算法训练笔记
      🛰️社区 :✈️ 进步学堂
      🛰️欢迎关注:👍点赞🙌收藏✍️留言

1047. 删除字符串中的所有相邻重复项

题目链接:1047. 删除字符串中的所有相邻重复项

题目描述:

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

示例:

输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

提示:

  1. 1 <= S.length <= 20000
  2. S 仅由小写英文字母组成。

解题思路:

我们只需要把字符入栈,每次入栈前和栈顶元素进行比较,如果字符相同则把栈顶POP掉,并且此次元素也不Push,这样即完成一次删除操作。反之则把元素push入栈。 因为返回值是一个字符串,所以我们可以拿字符串来模拟栈,尾删对应的是出栈,尾插对应的是入栈。

动图详解:

在这里插入图片描述

代码:

class Solution {
public:
    string removeDuplicates(string s) {
        string st;//用字符串模拟栈
        for(auto& ch : s)
        {
            if(st.size() > 0 && st.back() == ch)
            {
                st.pop_back();
            }else
            {
                st.push_back(ch);
            }
        }
        return st;
    }
};

运行结果:

在这里插入图片描述

844. 比较含退格的字符串

题目链接:844. 比较含退格的字符串

题目描述:

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。

**注意:**如果对空文本输入退格字符,文本继续为空。

示例 1:

输入:s = "ab#c", t = "ad#c"
输出:true
解释:s 和 t 都会变成 "ac"。

示例 2:

输入:s = "ab##", t = "c#d#"
输出:true
解释:s 和 t 都会变成 ""。

示例 3:

输入:s = "a#c", t = "b"
输出:false
解释:s 会变成 "c",但 t 仍然是 "b"。

提示:

  • 1 <= s.length, t.length <= 200
  • s 和 t 只含有小写字母以及字符 '#'

解题思路:

和上一题是一样的,只不过这次我们是遇到#则删除前一个。而上一题是当前字符和栈顶字符相等则删除栈顶字符,这个则是遇到#删除栈顶字符。然后两个字符串都做一次上面那道题的操作,然后比较一小是否相等即可,不过这里也有一个小细节,那就是#号可以出现在第一个字符,这里需要特殊判断一下。因为步骤和上面几乎一模一样,所以动图就不画了,搞懂了上一题这一题自然也能秒懂。

代码:

class Solution {
public:
    bool backspaceCompare(string s, string t) {
        string st1; //存储s
        string st2; //存储t
        for(auto& ch : s)
        {
            if(st1.size() > 0 && ch == '#') st1.pop_back();
            else if(ch != '#') st1.push_back(ch);
        }
        //和上面操作一模一样
        for(auto& ch : t)
        {
            if(st2.size() > 0 && ch == '#') st2.pop_back();
            else if(ch != '#')st2.push_back(ch); //#符号不能入栈
        }
        return st1 == st2; //相等返回true
    }
};

运行结果:

在这里插入图片描述

227. 基本计算器 II

题目链接:227. 基本计算器 II

题目描述:

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。

整数除法仅保留整数部分。

你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。

**注意:**不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。

示例 1:

输入:s = "3+2*2"
输出:7

示例 2:

输入:s = " 3/2 "
输出:1

示例 3:

输入:s = " 3+5 / 2 "
输出:5

提示:

  • 1 <= s.length <= 3 * 105
  • s 由整数和算符 ('+', '-', '*', '/') 组成,中间由一些空格隔开
  • s 表示一个 有效表达式
  • 表达式中的所有整数都是非负整数,且在范围 [0, 231 - 1] 内
  • 题目数据保证答案是一个 32-bit 整数

解题思路

因为这运算只有 +,-,*,/四则运算。所以我们只需要用一个栈来存储数据,再用一个char op变量来存储符号。当走到数字的时候遇到 X 或者 / 号。那么就从栈中pop出2个数据。进行运算后再重新放回队列,如果记录的是-号。那么我们往队列push的值需要 乘上一个-1。到最后再把栈里的值全部相加起来即可。这里需要注意一个小细节,就是我们的op需要初始化成’+'号。因为只有op为’+‘ ,我们才会把数据push进栈中。

比如下面有一个例子,3+2*2-5 ,我们来动图模拟一下。

在这里插入图片描述

还有一点要注意的是,leetcode给的数据中是有可能会包含空格,所以遇到空格我们要跳过。

在这里插入图片描述

代码:

class Solution {
public:
    int calculate(string s) {
        char op = '+';
        stack<int> st;
        int n = s.size(), i = 0;
        while(i < n)
        {
            if(s[i] == ' ') i++;  //跳过空格
            else if(s[i] >= '0' && s[i] <= '9')
            {
                //遇到数据了,数据可能是多位数,所以我们要全部截取
                int val = 0; 
                while(s[i] >= '0' && s[i] <= '9') val = val * 10 + (s[i++] - 48); 

                //如果op是+号,我们要入栈,如果是-号,我们需要 * -1 再入栈,如果是 * 和 / 先出栈,再val和出栈的数进行运算
                if(op == '+')
                    st.push(val);
                else if(op == '-')
                    st.push(val* -1);
                else 
                {
                    //是 * 和 / ,我们把栈顶元素拿出来运算,运算完再push到栈中
                    int top = st.top();
                    st.pop();
                    switch(op)
                    {
                        case '*' : st.push(top * val);  break;
                        case '/' : st.push(top/val); break;
                    }
                }
            }else 
            {
                //遇到符号了,直接替换符号
                op = s[i++]; 
            }
        }

        //把栈中的元素全部取出来相加
        int sum = 0 ;
        while(!st.empty())
        {
            sum += st.top();
            st.pop();
        }
        return sum;
    }
};

运行结果:

在这里插入图片描述

394. 字符串解码

题目链接:字符串解码

题目描述:

给定一个经过编码的字符串,返回它解码后的字符串。

编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。

你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。

此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。

示例 1:

输入:s = "3[a]2[bc]"
输出:"aaabcbc"

示例 2:

输入:s = "3[a2[c]]"
输出:"accaccacc"

示例 3:

输入:s = "2[abc]3[cd]ef"
输出:"abcabccdcdcdef"

示例 4:

输入:s = "abc3[cd]xyz"
输出:"abccdcdcdxyz"

提示:

  • 1 <= s.length <= 30
  • s 由小写英文字母、数字和方括号 '[]' 组成
  • s 保证是一个 有效 的输入。
  • s 中所有整数的取值范围为 [1, 300]

解题思路:

这一题我们依旧要用栈来解决,我们需要用2个栈,一个栈用来存放数字,一个栈用来存放字符串。当遇到数字时,提取数字并入数字栈。当遇到[号时,提取字符串并入字符栈。当遇到]时,也就是解码。我们需要从字符栈种拿字符,从数字栈种拿数字。随机拼接成一个新字符串,把新字符串接入到上一个栈顶的后面。我们分四种情况讨论。

情况1:遇到数字

遇到数字,那么数字可能也是多个字符串组成,所以我们需要把数字提取出来,放入 nums栈中。

情况2:遇到 [

遇到[说明要开始提取字符了,那么从当前下标的下一个位置开始提取字符串。提取完字符串后入到 strs栈中。

情况3:遇到 ]

遇到 [ 说明我们要开始解密了,我们分别提取strs栈和nums栈中的栈顶。获得一个数字k和一个字符串str。我们循环k次,每次循环都加上一个str。最后需要把strs接到栈顶的尾部,因为我们不确定前面是否还有字符。

情况4:遇到字符

遇到字符说明数字只有1,所以我们只需要把字符提取出来,接入到strs栈顶的尾部即可。

需要注意一些小细节,那就是当strs栈为空的时候,我们是无法把字符串接入到栈顶的。所以我们一开始需要push一个空串进strs栈。这样后面的字符串往空串后面拼接,还是原来的样子。

动图演示:

在这里插入图片描述

动图中没有显示空串,其实最底下是有个空串的。否则后面的cacacacacaca接入到栈顶元素尾部是会报错的。

代码:

class Solution {
public:
    string decodeString(string s) {
        stack<int> nums;
        stack<string> strs; 
        strs.push(""); //先让空串入栈
        int i = 0 , n = s.size();
        while(i < n)
        {
            //第一种情况,如果遇到数字
            if(s[i] >= '0' && s[i] <= '9')
            {
                int val = 0;
                //拼接所有数字
                while(s[i] >= '0' && s[i] <= '9') val = val * 10 + (s[i++] - 48); 
                //拼接完数字入栈
                nums.push(val);
            }
            else if(s[i] == '[') //第二章情况,遇到 [ 
            {
                //从i的下一个位置开始提取字符
                string val; 
                i++; 
                while(s[i] >= 'a' && s[i] <= 'z')val += s[i++]; 
                //提取的字符入栈
                strs.push(val);
            }else if(s[i] == ']') // 第三种情况,遇到 ]
            {
                //分别从nums和strs中提取栈顶元素
                int k = nums.top();
                nums.pop();
                string tmp = strs.top();
                strs.pop();

                //将 k 次 tmp字符串接入到strs栈顶的尾部
                while(k--)
                {
                    strs.top() += tmp;
                }
                i++; //跳到下一个位置
            }else{
                //第四种情况,遇到字符
                //直接提取字符,接入到栈顶尾部
                string val; 
                while(i < n && s[i] >= 'a' && s[i] <= 'z')val += s[i++]; 
                //接入到栈顶尾部
                strs.top() += val;
            }
        }
        return strs.top(); //返回栈顶元素
    }
};

运行结果:

在这里插入图片描述

946. 验证栈序列

题目链接: 946. 验证栈序列

题目描述:

给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。

示例 1:

输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
输出:true
解释:我们可以按以下顺序执行:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1

示例 2:

输入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
输出:false
解释:1 不能在 2 之前弹出。

提示:

  • 1 <= pushed.length <= 1000
  • 0 <= pushed[i] <= 1000
  • pushed 的所有元素 互不相同
  • popped.length == pushed.length
  • popped 是 pushed 的一个排列

解题思路:

我们可以用一个指针指向popped数组,然后疯狂让pushed数组的值入栈。然后监测栈顶元素是否等于当前指向的popped元素。如果等于则说明出栈,一直出栈到栈顶元素不等于popped为止。最后如果栈的元素不为空,说明出栈顺序是错误的。反之则是正确的。

动图演示:

在这里插入图片描述

如果循环结束,栈为空,则说明poped的出栈顺序是正确的。反之则说明是错误的。

代码:

class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
        stack<int> st; 
        for(int i = 0 , j = 0 ; i < pushed.size() ; i++)
        {
            st.push(pushed[i]);
            while(!st.empty() && st.top() == popped[j])
            {
                st.pop();
                j++;
            }
        }
        return st.empty();
    }
};

运行结果:

在这里插入图片描述

各大刷题OJ 简介: 这几个OJ平台自己都有在上面刷过题,觉得还不错,也顺便记录自己的刷题经历和网址上的登录信息。下面按个人看法分等级。 以竞赛为主导的OJ: PTAOJ(推荐指数****):PTA是浙大推出的一个教学平台。里面可以安排考试和程序设计练习,它的题主要为顶级,甲级,乙级三种层次。 乙级题是中文版的,考的大都是很基本的数据结构和逻辑思维题。甲级题是英文版的,题目主要也是基本的数据结构和算法,... 阅读详情

相关推荐

什么是OJ

OJ是Online Judge系统的简称,用来在线检测程序源代码的正确性。

simon的天空 3万+

一月二十四日总结(验证栈序列)

今天本来是想着去刷bfs和dfs的题,但是我碰到一道和栈有关的题。我开始不知道什么是栈,也不知道该怎么去写。后面,便自己去搜索,去认识了有关栈的基础知识。

cgl18973281319的博客 638

[C/C++]OJ练习题:括号匹配[栈训练]

老题了,基本上就是用来做"栈"的训练。入门题。 蛮写一下,每次有人问就要现场写一遍也是挺麻烦的。

身披白袍的博客 1696

各大OJ刷题平台汇总

本文介绍了国内外知名的在线编程刷题平台,包括力扣(LeetCode)、洛谷、C语言网、Codeforces、牛客、杭电OJ和ICPC等。这些平台各有特点:力扣支持多语言且有付费服务;洛谷适合新手且有比赛奖励;C语言网适合入门;Codeforces适合高手但访问较慢;牛客与大公司合作提供面试资源;杭电OJ题库丰富但全英文;ICPC则是全球性大学生竞赛。文章建议新手从力扣和洛谷入手,逐步提升算法能力,同时强调刷题需结合经验总结,掌握核心算法才是关键。

沧海一粟 13万+

FUEL算法解读(一)——框架解读,思维导图可以很清晰看懂算法启动框架,已更新完,图太大放不上来链接在文末

一图看懂FUEL算法节点框架!!!

weixin_43793717的博客 2785

掌握RDMA核心:从同步构建到异步事件的连接艺术

本文深入解析RDMA编程中的双模式设计,揭示同步配置与异步事件机制的协作关系。第一部分阐述同步函数rdma_bind_addr和rdma_listen的本地化角色,强调它们仅完成本地端点配置。第二部分剖析异步事件模型,重点分析连接请求和建立事件的处理流程。通过完整生命周期序列图展示两种模式的交互过程,并提供错误处理、资源管理和性能调优的实用建议。文章指出,理解同步本地配置与异步网络响应这一责任划分,是掌握RDMA编程的关键所在。

数字人生 283

华为OD机试 2025C卷目录,五种语言解答,在线OJ刷题练习(已更900道)

华为OD机试 2025C卷目录,五种语言解答,在线OJ刷题练习(已更900道) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试

KJ.JK 3571

ADT MCP Server 把 ABAP 开发带进 Agent 模式

今天讨论 ADT MCP Server,不能只把它看成 Visual Studio Code 里多出来的一个开关。它真正有意思的地方,在于它把 ABAP 后端开发里那些原本需要手工点击、手工创建、手工激活、手工查服务元数据的动作,包装成一组可以被 GitHub Copilot 这类 coding agent 调用的工具。SAP 在 RAP130 练习里把它描述为运行在 ADT for Visual Studio Code 扩展内部的本地 HTTP Server,它实现的是 Model Context Pro

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

栈和队列常见oj训练

用队列实现栈操作,首先我们要了解两个数据结构的特性:栈:先进后出(FILO)队列:先进先出(FIFO)一个栈的pop和top操作,对于一个队列来说,就是对队列队尾节点的pop和top操作,但是队列不能对对为节点操作,因此我们要再增加一个队列,该队列容纳第一个队列的队尾节点的之前的节点,上述就是,队列实现栈的总体逻辑。

2401_88604201的博客 496

手把手教你学simulink实例--基于Simulink的航空航天器飞行轨迹规划与仿真详细介绍

航空航天器飞行轨迹规划是实现高效、安全和精确飞行的关键技术。通过Simulink进行航空航天器飞行轨迹规划与仿真,可以验证控制算法的有效性、优化飞行路径,并降低开发成本。以下是如何在MATLAB和Simulink中设计并仿真一个航空航天器飞行轨迹规划系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的航空航天器飞行轨迹规划与仿真系统。该系统能够根据实时环境变化动态调整飞行轨迹,从而提高飞行效率、降低燃料消耗并提升安全性。

MHD0815的博客 390

Python 爬虫实战:爬取 BOSS 直聘职位,实现岗位要求关键词提取

摘要:本文基于BOSS直聘数据分析师岗位信息,采用Python爬虫技术获取职位数据,通过文本分析和可视化方法研究岗位技能需求特征。研究首先设计爬虫程序获取职位基本信息和岗位要求文本,经数据清洗后运用jieba分词和词频统计提取关键词。结果显示SQL、Python为最核心技能,不同级别岗位需求差异明显:初级重基础数据处理,高级需建模和管理能力;行业间亦存在差异,互联网关注用户增长,金融侧重风控。研究为求职者技能提升提供了数据支持,同时展示了从非结构化文本中挖掘有价值信息的完整流程。

2503_91057718的博客 1766

华为OD机试 2025C卷目录,五种语言解答,在线OJ刷题练习(已更890道)

华为OD机试 2025C卷目录,五种语言解答,在线OJ刷题练习(已更890道) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试

KJ.JK 3006

Cesium雷达追踪追踪(圆锥体效果)

【代码】Cesium雷达追踪追踪(圆锥体效果)

God's asylum的博客 2931

万字精讲——数据结构栈与队列必会OJ练习

W...Y的主页 💕代码库分享 😊在之前的博客中,我们学习了栈与队列的基本内容,并且实现了栈与队列。今天我们进行刷题训练,走进栈与队列的世界中去感受一番!!!目录括号匹配问题 使用队列实现栈用栈实现队列设计循环队列以上是本次OJ题目分享全部内容,感谢大家观看,一键三连是对博主最大的支持!!!谢谢❤️

why 498

飞牛fnNAS虚拟机开启OVS导致失联的解决

摘要:用户在使用飞牛NAS时发现开启OVS网络功能后导致NAS失联。通过多种尝试(包括开关OVS、更换系统版本、手工配置、更换网卡、处理器检查等)后发现,OVS启用状态下DHCP无法获取IP地址,手动设置IP可暂时恢复网络。但重启后问题依旧,初步判断为OVS功能存在bug。目前临时解决方案是在需要时手动开关OVS,或考虑其他虚拟化方案。用户计划后续探索替代方案,并等待官方修复该问题。

dgnankai的专栏 4336

ESP32-S3驱动OV3660摄像头原理图设计,已量产

本文重点拆四条主线:多来源输入电源如何收敛到 3V3,摄像头三路供电如何拆分,ESP32-S3 如何接住 DVP 数据流与外部存储,以及音频/补光/传感外围怎样挂到主控边上。至于最终图像帧率、算法策略和软件时序,当前原理图未体现。

不脱发的程序猿 983

OJ系统训练计划:提升算法与编程能力

在线判题系统(OJ)是提升算法思维和编程能力的重要工具,通过系统化的训练计划可以有效提高解题效率和正确率。算法训练通常分为基础巩固、中级提升和综合应用三个阶段,每个阶段需要选择不同难度的题目进行针对性练习。高效的刷题技巧包括理解题意、评估解法复杂度以及注意边界条件等。常见的性能问题如时间超出限制和内存超出限制,可以通过优化算法、减少不必要循环和使用高效数据结构来解决。推荐使用主流OJ平台如LeetCode、Codeforces等,配合VS Code等工具提升训练效率。坚持每日记录和复盘是提高训练效果的关键,

weixin_34234829的博客 454

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

力扣刷题之准备工作

在刷算法题的过程中进行总结是非常重要的,它可以帮助你梳理思路、加深理解、记录学习成果,并提升解题能力。每天回顾:在每天结束时,对当天解决的题目进行回顾。检查解决方案的正确性,并思考是否有更优化的方法。记录下遇到的难点和解决方法,以及学到的新知识点和技巧。整理这些笔记并归档到适当的分类中,以便今后参考。每周汇总:在每周末或开始新一周时进行总结。复习过去一周解决的题目,分析解题过程中使用的算法和数据结构。总结你学到的关键知识点、解题技巧和模式,并将其整理到博客中。

weixin_47040031的博客 9755

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数据结构刷题训练:用栈实现队列(力扣OJ)

栈和队列是数据结构中的两个重要概念,它们在算法和程序设计中都有着广泛的应用。本文将带你深入了解如何使用栈来模拟实现队列,让你在解决问题时更加灵活和创新,便于大家更深入的理解栈和队列。由于我们再模拟队列时需要用到两个栈,但调用函数时传两个栈又太麻烦,这里我们就使用结构体来定义两个栈(MyQueue),这样传参时就可以直接传结构体(MyQueue)指针就可以了。} MyQueue;使用栈模拟实现队列,让我们在实践中深入思考了数据结构的本质和应用,为我们的编程思维和算法设计能力提供了挑战和提升。t=N6B9。

2202_75605090的博客 2744

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

华为OD机试 2025C卷目录,五种语言解答,在线OJ刷题练习(已更825道)

华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试2024年最新题库,一文带你读懂华为OD,华为机试e卷

KJ.JK 3217

从零到英雄:如何通过OJ平台构建你的C++算法能力图谱

本文详细介绍了如何通过OJ平台(如洛谷、力扣、OpenJudge)系统提升C++算法能力。从平台选择到训练计划制定,再到高效刷题方法论,帮助编程学习者构建完整的算法能力图谱,实现从零基础到高阶的跨越。

weixin_29009971的博客 408

别再到处找题了!用Hydro OJ在Ubuntu 22.04上快速搭建个人刷题站(附题库导入教程)

本文详细介绍了如何在Ubuntu 22.04系统上使用Hydro OJ快速搭建个人刷题站,包括环境配置、核心部署、题库导入及高级功能拓展。通过私有化部署OJ系统,用户可以定制专属训练计划、保留完整提交历史,并自由添加特殊题型,提升算法练习效率。附有题库导入教程,帮助用户快速构建个人算法训练场。

weixin_30684743的博客 473

数据结构算法竞赛训练网站OJ(Online Judge)

可以付费学习算法,看着还行,发现这个网站的时候我已经用不到了,社区功能完善。个人使用最多的,题目较全,每题都有题解博客,社区比较完善。两个重量级OJ,懂得都懂,适合acm选手。都是个人使用过的算法训练OJ,存个档==学习数据结构和练习天梯赛的时候使用的。基本上每周末都有高校比赛,适合练习。题目比较基础,有一些蓝桥杯的题。适合acm硬核玩家。题目适合找工作面试。

海马有力量的博客 1174

OJ的介绍以及使用方法

OJ系统简介 Online Judge系统(简称OJ)是一个在线的判题系统。用户可以在线提交程序多种程序(如C、C++) 源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使 用限制和安全限制等。用户程序执行的结果将被Online Judge系统捕捉并保存,然后再转交给一个裁判 程序。该裁判程序或者比较用户程序的输出数据和标准输出样例的差别,或者检验用户程序的输出数据 是

江小举的博客 1万+

东华OJ平台算法题解析与高效刷题指南

在线评测系统(OJ)是计算机专业学生提升编程能力的重要工具,通过自动评测机制检验代码正确性和效率。以动态规划为代表的经典算法,通过状态定义和转移方程解决最优化问题,在竞赛和工程中都有广泛应用。东华OJ平台提供从基础语法到高级算法的系统训练题库,如25~27题考察数组操作和基础算法,U12专题则聚焦动态规划等核心知识点。掌握题目分类训练法和调试技巧,配合性能优化和错题复盘,能显著提升解题效率。这些方法不仅适用于编程竞赛准备,也是培养工程实践能力的重要途径。

weixin_30681615的博客 365

蓝桥杯OJ 算法训练 文章翻转 多种语言解法 C/C++/Python/Java

蓝桥杯OJ 算法训练 文章翻转 多种语言解法 C/C++/Python/Java 问题描述   输入一段英文,不含标点,将这一段英文以单词为单位倒序输出 输入格式   一段英文(段内不含换行),以换行符结尾。 输出格式   一段英文(段内不含换行),以换行符结尾。

一起加油 6419
上一篇: 滑动窗口的最大值&&最小值
下一篇: 动静态库生成&&使用
林   子
博客等级 码龄4年 2671粉丝 64原创
评论 32
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林 子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值