
学习&刷题
文章平均质量分 53
C++编程题解,记录解题过程
LiuZuqiang_3027
҉ 加载中..
展开
-
C++重写String类
C++重写String类头文件:_string.h实现文件:_string.cpp测试文件:demo.cpp基于STL模板库及侯捷的源码剖析。全部代码都已经过测试检验。头文件:_string.h#ifndef _STRING_H_#define _STRING_H_#include <iostream>#include <fstream>using std::cout;using std::cin;原创 2021-07-15 17:14:18 · 653 阅读 · 0 评论 -
C++重写Stack类
C++重写Stack类头文件1:node.h头文件2:Stack.h测试文件:demo.cpp基于STL模板库及侯捷的源码剖析。全部代码都已经过测试检验。头文件1:node.h#ifndef _NODE_H_#define _NODE_H_#include <iostream>using namespace std;//栈元素类template <class T>class node{publ原创 2021-07-16 09:07:42 · 277 阅读 · 0 评论 -
C++重写shared_ptr智能指针类
C++重写shared_ptr智能指针类头文件:kSharedPtr.h测试文件:demo.cpp基于C++11中shared_ptr源码改写。全部代码都已经过测试检验。头文件:kSharedPtr.h#ifndef _KSHAREDPTR_H_#define _KSHAREDPTR_H_#include <iostream>using std::cout;using std::cin;using std::en原创 2021-07-16 09:08:51 · 375 阅读 · 0 评论 -
C++重写SharedArrayPtr——指向数组的智能指针类
C++重写SharedArrayPtr智能指针类头文件:kSharedArrayPtr.h测试文件:demo.cpp基于C++11中shared_ptr源码改写。代码都已经过测试检验。头文件:kSharedArrayPtr.h#ifndef _KSHAREDARRAYPTR_H_#define _KSHAREDARRAYPTR_H_#include <iostream>//共享计数的管理在堆上分配数组的智能指针KS原创 2021-07-19 14:22:58 · 275 阅读 · 0 评论 -
C++解决《最长有效括号》问题(stack,string)
No.32《最长有效括号》;题型:stack,string题目题解思路(栈)题解代码题目题解思路(栈)始终保持栈底元素为当前已经遍历过的元素中“最后一个没有被匹配的右括号的下标”,这样的做法主要是考虑了边界条件的处理,栈里其他元素维护左括号的下标:若遇到左括号,将其下标入栈;若遇到右括号,则将栈顶下标元素弹出,视为匹配了当前的右括号;如果第2步之后栈为空,说明当前的右括号在栈内没有被匹配,将其下标放入栈中;若不为空,说明匹配了一堆“()”,更新ans;题解代码class Solutio原创 2021-05-08 11:28:21 · 223 阅读 · 0 评论 -
C++解决《单词的压缩编码》问题(vector,string,stl库函数)
No.820《单词的压缩编码》;题型:vector,string题目题解思路(反转字符)题解代码题目题解思路(反转字符)由单词尾部判断是否为包含关系很不方便,故第一步将vector<string>& words内的单词全部反转,存入临时数组vector<string> reverse_words中(利用reverse库函数);利用字符串的sort函数,将vector<string> reverse_words中的单词排序,让相近的单词靠在一起(A&g原创 2021-05-07 10:59:54 · 333 阅读 · 1 评论 -
C++解决《有效的括号》问题(栈,string)
No.20《有效的括号》;题型:栈,string题目题解思路(动态规划)题解代码题目题解思路(动态规划)申请一个栈stack<char> stk,遍历字符串s,用stk来存放临时字符;(1)若字符为"("、"["、"{",则将对应的")"、"]"、"}“入栈;(2)若字符为”)"、"]"、"}",则判断其是否与stk.top()相等,若相等则pop(),否则返回false;若遍历完s后栈为空返回true,否则返回false。题解代码class Solution {pub原创 2021-05-07 10:12:02 · 182 阅读 · 0 评论 -
C++解决《无重复字符的最长子串》问题(滑动窗口(unordered_set),string)
No.3《无重复字符的最长子串》;题型:滑动窗口(unordered_set),string题目题解思路(动态规划)题解代码题目题解思路(动态规划)申请一个unordered_set<char> lookup,作为滑动窗口,用来存放临时子串;从第一个字符开始,对题目字符串进行遍历,每轮循环中,对窗口的下一个字符进行判断:(1)若在窗口子串中找到该字符,说明新的窗口子串不符合条件,则将窗口最左端元素移出,将新字符加入窗口中后,继续向下遍历;(2)若窗口子串中没有该字符,将该字符加原创 2021-04-28 14:13:23 · 2050 阅读 · 0 评论 -
C++解决《翻转数列》问题(数学归纳)
题目:翻转数列一.题目1.输入描述:2.输出描述:输入例子1:输出例子1:二.题解1.题解思路:2.题解代码:一.题目1.输入描述:2.输出描述:输出一个整数, 表示前n项和。输入例子1:8 2输出例子1:8二.题解1.题解思路:法一.从1到n进行遍历相加,没隔m个数,反转系数;法二.数学归纳。2.题解代码:法一:#include <iostream>using namespace std;int main(){ long long n,m;原创 2021-04-26 11:21:45 · 634 阅读 · 0 评论 -
C++解决《反转每对括号间的子串》问题(stack、string)
No.1190《反转每对括号间的子串》;题型:stack、string题目题解思路题解代码题目题解思路遍历题给的字符串,若非")",则将字符压入栈;出现")“后,则开始由顶到底遍历栈寻找”(",并将"("上方的字符暂存于tmp中;找到第一个匹配的"(",将其删去,结束遍历,将tmp中的字符压回栈;将栈内元素自底向顶复制到字符串ans中,此即答案。题解代码class Solution {public: string reverseParentheses(strin原创 2021-04-23 15:57:02 · 373 阅读 · 0 评论 -
C++解决《聪明的编辑》问题(string、归纳)
题目:聪明的编辑一.题目1.输入描述:2.输出描述:3.输入例子1:4.输出例子1:二.题解1.题解思路:2.题解代码:我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo原创 2021-04-17 10:59:25 · 82 阅读 · 0 评论 -
C++解决《特征提取》问题(map、pair)
题目:特征提取一.题目1.输入描述:2.输出描述:输入例子1:输出例子1:例子说明1:二.题解1.题解思路:2.题解代码:一.题目1.输入描述:2.输出描述:对每一个测试用例,输出特征运动的长度作为一行输入例子1:输出例子1:3例子说明1:特征<1,1>在连续的帧中连续出现3次,相比其他特征连续出现的次数大,所以输出3二.题解1.题解思路:申请两个map<pair<int,int>,int>格式的容器,分别用来装已录入帧的各特征出现次数(固原创 2021-04-23 13:59:47 · 247 阅读 · 0 评论 -
C++解决《每日温度》问题(栈、哈希表)
No.739《每日温度》;题型:栈、哈希表题目题解思路(动态规划)题解代码题目请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。说明:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在原创 2021-04-20 13:45:48 · 290 阅读 · 0 评论 -
C++解决《跳跃游戏 II》问题(贪心、数组)
No.45《跳跃游戏 II》;题型:贪心、数组题目题解思路(动态规划)题解代码题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:说明:假设你总是可以到达数组的最后一个位置。题解思路(动态规划)维护当前能够到达的最大下标位置,记为边界end;从左到右遍历数组,到达边界时,更新边界并将跳跃次数增加 1;题解代码class Solution {public: int原创 2021-04-17 11:31:19 · 337 阅读 · 0 评论 -
C++解决《最大正方形》问题(动态规划)
No.221《最大正方形》;题型:动态规划题目题解思路(动态规划)题解代码题目在一个由 ‘0’ 和 ‘1’ 组成的二维矩阵内,找到只包含 ‘1’ 的最大正方形,并返回其面积。示例 1:输入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]输出:4示例 2:输入:matrix = [[“0”,“1”],[“1”,“0”]]输出:1示例 3:输入原创 2021-03-25 11:03:47 · 1639 阅读 · 1 评论 -
C++解决《最长回文子串》问题(字符串、动态规划)
No.5《最长回文子串》;题型:字符串、动态规划题目题解思路(动态规划)题解代码题目给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成题解思路原创 2021-03-24 11:11:53 · 1049 阅读 · 0 评论 -
C++解决《岛屿数量》问题(DFS)
No.200《岛屿数量》;类型:DFS1.题目:2.题解思想3.题解代码1.题目:给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [[“1”,“1”,“1”,“1”,“0”],[“1”,“1”,“0”,“1”,“0”],[“1”,“1”,“0”,“0”,“0”],[“0”,“0”,“0”,“0”,“0原创 2021-03-23 14:02:59 · 1394 阅读 · 0 评论