![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++知识圈
文章平均质量分 63
郝同学
东南大学 九龙湖与四牌楼的匆匆过客
天津大学 津南郊区逐渐成长的算法人
欢迎各位NLPer互相交流学习!
展开
-
【C++】字符串的基本操作和相关算法题
思路一、问题背景二、字符串的插入、删除和追加操作详解【C++】三、相关算法题【C++】一、问题背景 首先来说字符串问题是十分经典的类型,我们经常会遇到输入是字符串的题目,然后利用各种STL标准库或者是一些动态规划的方法来求解问题,再或者是一些字符串遍历的一些技巧来提高效率等等,下边将介绍C++中相关的字符串常用操作函数以及我们可能常会遇到的算法问题。二、字符串的插入、删除和追加操作详解【C++】1. 字符串的插入(Insert函数)1)在字符串s1的第p(从0开始数)个位置前插入字符串s2:s1原创 2022-04-28 15:11:36 · 1881 阅读 · 0 评论 -
【C++】字符串子串的系列问题
一、解题背景: 字符串的子串应该是常见的一类有关字符串的算法题目,这里我将leetcode的相关几道题汇总了一下,写了一些具体的思路和多种的求解方法。二、问题求解:3. 无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。/***********************************************************原创 2022-04-14 22:54:42 · 3629 阅读 · 0 评论 -
【C++】动态规划-求解子序列等系列问题
一、问题背景 动态规划是一个对我而言比较复杂的一个问题,于是我想在这记录下我平时遇到过的动态规划的题目,以及总结其解体的通用思路。二、问题求解看到了有博主总结的dp的解题思路,我在这里分享给大家:确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历的顺序举例尝试推导dp数组以下是leetcode中的相关的例子1143. 最长公共子序列给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,原创 2022-03-22 10:52:38 · 1854 阅读 · 0 评论 -
【C++】前缀和方法系列问题求解
一、结题背景 在刷leetcode的相关算法题的时候,对于求解数组的连续子数列的和的相关问题。常能想到的就是双层遍历,暴力求解,但是这样的效率不高,所以我们这里引入哈希表来降低时间复杂度,只用遍历一次便能求解出答案。二、相关问题1. 两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。原创 2022-03-17 11:50:01 · 1070 阅读 · 0 评论 -
【C++】0314算法阿里笔试题
一、题目二、 自己的dfs的题解#include <bits/stdc++.h>using namespace std;int res3=INT_MAX;int transfet(vector<string> &tmp) { int sum=0; for (auto &t: tmp) { sum += stoi(t); } return sum;}void dfs(string str, vector&l原创 2022-03-14 22:13:31 · 830 阅读 · 0 评论 -
【C++】单调栈解法的相关题目
一、解题背景 在刷题的过程中遇到部分比较难的题目是需要利用单调栈的思想来进行求解题目的,这类问题往往有一个统一的思路,需要在遍历的过程中保存一个单调递增的序列或者是单调递减的序列,一旦不满足单调性的时候,就就需要做一些处理来获取我们想要的结果。二、部分题目leet84. 柱状图中最大的矩形给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。class Solution {public: int la原创 2022-03-11 15:07:15 · 1249 阅读 · 0 评论 -
【C++】二叉树中路径系列问题
二叉树中所有路径,以及满足求和为N的子路径等系列问题求解0X00. 问题1:二叉树根到叶子节点所有路径总数给你一个二叉树的根节点 root ,按任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。class Solution {public: vector<int> tmp; vector<string> res; vector<string> binaryTreePaths(TreeNode* root)原创 2022-03-09 11:35:36 · 718 阅读 · 0 评论 -
【C++】priority_queue的理解及实战解决k路归并问题
一、相比刷leetcode各位已经知道了priority_queue的重要性!!! 在C++中的priority_queue底层是堆(heap)来实现的,priority_queue又称为优先队列。在优先队列中,队首元素一定是当前队列中优先级最高的那一个。 当然,可以在任何时候往优先队列里面加入(push)元素,而优先队列底层的数据结构堆(逻辑实现是完全二叉树,具体的构建方法自行查阅)会随时调整结构,使得每次的队首元素都是优先级最大的。二、用法:0x00 定义为:priority_queue &原创 2022-02-21 15:39:19 · 1223 阅读 · 3 评论 -
【C++】快速幂的递归和迭代实现及LeetCode加速代码
快速幂(Exponentiation by squaring,平方求幂)是一种简单而有效的小算法,它可以以O(logn)的时间复杂度计算乘方。快速幂不仅本身非常常见,而且后续很多算法也都会用到快速幂。一、递归快速幂递归方程如下:上述的迭代式无疑是一种二分的思想,来减少做乘法的次数;将上述的迭代式写成递归的代码如下:double qpow(double x, int n) { if (x==0) return 0; // int32 变量 n ∈ [-2147483648, 2147483原创 2022-02-18 12:12:23 · 959 阅读 · 0 评论 -
【C++】归并排序的理解-剑指offer51:计数数组中的逆序对和148:排序链表
归并排序的理解-解决数组中的逆序对问题0x00 归并排序的基本思想:0x01 利用归并排序来计算数组中逆序对个数:0x00 归并排序的基本思想:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。其过程展示图如下(这里以数组[8, 4, 5, 7, 1, 3, 6, 2]为例子):最后原创 2022-02-17 14:56:55 · 659 阅读 · 0 评论 -
【C++】数字的组合排列情况
数字的排列组合—递归实现(c++)原创 2022-01-22 20:15:48 · 2487 阅读 · 0 评论 -
【C++】字符串和数字互相转换大全
一、使用字符串流对象进行数字转换C++ 有两个类,ostringstream 和 istringstream,可以用来对内存中的值执行字符串/数字转换。必须在程序中包含 sstream 头文件才能使用这些类。以下是这些类的用法://This program illustrates the use of sstream objects#include <sstream>#include <iostream>#include <string>using name转载 2021-09-08 15:57:11 · 5943 阅读 · 0 评论 -
二叉树的层次遍历队列和数组实现C++
下面利用c++实现的二叉树的层次遍历,这也是剑指offer中面试32题 ==> 从上到下打印二叉树,同一层中从左至右打印。 我分别使用队列queue和数组array来实现了这个遍历过程,总的来说两种方法的思路比较类似。思路:都是先将节点放入容器中,然后再依次放入该节点的左右孩子节点,然后打印该节点,之后移动下标或弹出该节点。具体的思路可以从代码中感受,只有自己去梳理并写一遍才是最深刻的哈哈<( ̄︶ ̄)↗[GO!]#include<iostream>#inclu原创 2021-04-30 16:16:15 · 597 阅读 · 1 评论 -
考虑全面的数值的整数次方(C++递归实现)
递归实现数值的整数次方该题目中有几点需要考虑的细节:考虑底数为0时,幂为负数;考虑幂为负数的时候,我们计算时需要先对底数求倒;然后就是正常的正数的次幂运算方法,可以用&位运算和>>右移来提高效率。#include<iostream>using namespace std;/*根据公式进行简化乘方的计算,分为奇偶次幂来计算。 */double PowerWithExponent(double base, int exponent) { if (b原创 2021-04-07 10:48:08 · 206 阅读 · 0 评论 -
【C++】排序算法大总结
以下是我自己总结有关排序算法的重要知识点,有兴趣的小伙伴可以下载图片观看呀!下载链接在此!原创 2021-03-27 16:03:19 · 252 阅读 · 0 评论 -
stringstream的简单用法(实现一连串数相加)
stringstream的简单用法(实现一连串数相加)下边是代码的演示及详细解释:#include<iostream>#include<string>#include<sstream> //stringstream的头文件,创建字符串流using namespace std;int main(){ string line; while (getline(cin, line)) { int sum=0, x; stringstream ss(li原创 2020-09-20 16:32:54 · 572 阅读 · 0 评论