cpp
文章平均质量分 80
半路杀出来的小黑同学
"量变产生质变"的忠实信徒
展开
-
耐心排序——专门快速解决最长递增子数组
其实最长递增子序列和一种叫做 patience game 的纸牌游戏有关,甚至有一种排序方法就叫做 patience sorting(耐心排序,复杂度为nlognnlognnlogn)。而这个排序的本质是由二分查找实现的。其规则为:1、依次抽牌、压牌,但是只能把点数小的牌压到点数比它大的牌上。2、如果当前牌点数较大没有可以放置的堆,则新建一个堆,把这张牌放进去。3、如果当前牌有多个堆可供选择,则选择最左边的那一堆放置。按照上述规则执行,可以算出最长递增子序列,牌的堆数就是最长递增子序列的长度。其中原创 2022-08-06 21:23:30 · 399 阅读 · 0 评论 -
【C++】优先队列详细讲解(原理+STL库调用)
详解Cpp中优先队列的原理及其STL库中的建堆、操作堆的步骤原创 2022-08-03 17:30:20 · 2413 阅读 · 0 评论 -
【C++】找最大公约数、找最小公倍数(分数的通分、约分)、素数、合数、公因数
主要介绍了C++如何解决公约数和公倍数的问题,并介绍了遇到分数的问题如何解决。原创 2022-07-27 14:24:03 · 2428 阅读 · 0 评论 -
DFS/BFS 算法遍历二维数组-----岛屿问题解决
岛屿系列算法问题是经典的面试高频题,这里参考labuladong的一文秒杀所有岛屿问题,写出了关于C++的DFS/BFS的框架,供以后复习回顾。原创 2022-07-12 16:46:52 · 1327 阅读 · 2 评论 -
labuladong算法小抄中图算法的学习笔记(c++版)
labuladong算法小抄中是以java为工具编写的,而图论中的典型算法中JAVA模板与C++模板差别较大,因此我整理了大佬小抄中的各个对于图论经典算法的总结,并写出了自己所理解出的C++模板(全部通过了例题验证)。.....................原创 2022-07-12 00:32:04 · 992 阅读 · 0 评论 -
专门处理字符串前缀相关的操作——(一次性的 new)的字典树(前缀树)Trie总结
不同于网上Trie的c++模板中大多数一次次new的方法,为了提高速度,这里采用了一次性new的方法,分模块功能的实现了Trie,并对力扣上Trie的基本题目做了应用场景的说明!原创 2022-07-09 16:25:42 · 307 阅读 · 0 评论 -
labuladong算法小抄中链表算法的学习笔记(c++版)
手把手刷链表算法递归秒杀反转链表--但效率上不如迭代1、反转整个链表2、反转链表前N个节点3、反转链表的一部分---重点理解!如何K个一组反转链表--迭代反转链表如何判断回文链表--链表的前序后序!...原创 2022-07-06 19:32:57 · 518 阅读 · 0 评论 -
详解C++如何取随机数以及处理各种随机问题
本文详细阐述了C++中取随机数的函数,并通过解决各种要求需要的随机数场景应用以来加深对其函数的应用能力与对随机问题的分析能力。原创 2022-06-29 00:32:59 · 6608 阅读 · 0 评论 -
详解C++区间题之线段树(动态开点)框架代码(附加一个有趣的差分有序集合方法)
详解C++的线段树(动态开点)框架代码——别怕区间叠加(附加一个有趣的差分有序集合方法)。不仅仅介绍关于动态开点的线段树的c++模板,还介绍了其是如何秒杀三道困难题(lc中的715、699、732)的!..................原创 2022-06-22 23:15:13 · 1004 阅读 · 0 评论 -
链表分解的时候,勿忘断开原链表中的每个节点的 next 指针(以LeetCode86.分隔链表为例)
作者在刷力扣的时候,遇到了需要断开链表中next指针这个问题。当时想不明白为何会报错,画了好多遍图都感觉没问题,搜也搜不到,最终debug发现了问题所在,希望分享给跟我一样苦于链表next迫害的小白菜鸟。...原创 2022-06-14 21:19:04 · 782 阅读 · 2 评论 -
关于“labuladong的算法小抄”的学习笔记---第0章核心框架汇总的后半部分技巧(c++版)
【**由于算法小抄大部分代码都是java,而作者其实是学c++的,因此,本笔记在记录的同时,对作者的java代码进行了转换,希望也能够帮到大家**】这是第0章的后半部分(因为怕文章太长自己都不好找,正好前半部分讲的框架,后半部分讲的是技巧)...................................................原创 2022-06-08 16:43:50 · 755 阅读 · 0 评论 -
关于“labuladong的算法小抄”的学习笔记---第0章核心框架汇总的前半部分框架(c++版)
由于labuladong算法小抄大部分代码都是java,而作者其实是学c++的,因此,本笔记在记录的同时,对作者的java代码进行了转换,希望也能够帮到大家。因为怕文章太长,不好阅读,因此第0章分为了上半部分框架和下半部分技巧......原创 2022-05-28 15:36:38 · 800 阅读 · 0 评论 -
对C++中有序容器的各类操作(包括迭代器的解引用)总结
目录一、关联容器的概述(有序容器属于关联容器)二、无序容器三、有序容器四、有序容器的最常操作----查找方法五、掉落的方块1、题目描述2、暴力枚举法(迭代dp的味~)3、有序集合法一、关联容器的概述(有序容器属于关联容器)c++中有种关联容器,其支持通过关键字高效的查找和提取元素。而STL中定义类8种关联容器,其中每个容器都符合下列三个特点:1、是一个map或者一个set。map保存关键字和其对应的值。而set只保存关键字。2、要求关键字唯一(普通的map/set)或不要求唯一(带multi的set原创 2022-05-27 12:54:14 · 2818 阅读 · 0 评论 -
力扣之数据结构基础的刷题总结
内容一、数组总结1、vector数组2、构造哈希表---数组里面存LIST二、字符串总结1、int与char的转换2、字符串相加3、字符串相乘-----大数运算4、快速抽出以空格为间隔的字符串--学会抽子字符串5、删除字符串的当前字符6、在字符串加入字符串7、字符串和数字的转换三、链表总结1、对于入门阶段的题目就出现过的“环形链表”2、相交链表3、删除链表的重复元素4、两两交换链表的节点5、重排链表---寻找链表中点 + 链表逆序 + 合并链表6、K个一组翻转链表...原创 2022-05-21 20:27:30 · 936 阅读 · 0 评论 -
力扣之数据结构入门的刷题总结
目录一、数组总结1、vector数组2、哈希表二、字符串三、链表四、二叉树0、树的定义1、二叉树的前序、中序、后序遍历(递归)2、二叉树的层序遍历(BFS广度优先遍历)--用队列3、二叉树的中序遍历(DFS深度优先遍历)--用堆栈4、 二叉树中的递归思想(以最大深度为例)五、算法总结1、最大和的连续子数组(数组)2、两数之和(数组&树)3、一维动态规划(数组)4、快慢指针(链表)5、map如何找到字符在原字符串的位置?(字符串)六、语法总结1、 for循环2、STL里面的find操作3、switch原创 2022-04-16 21:49:20 · 1887 阅读 · 0 评论 -
Windows下从零开始在 VS Code 中调试(debug) LeetCode的C++代码(内含详细的如何使VS Code像ide一样运行cpp教程)
文章目录前言一、下载VS Code二、配置VSCode的C++环境配置GCC单文件编译运行器(使VSC像ide一样运行cpp单文件)配置CMake多文件编译器三、安装leetcode以及debug的插件前言最近在leetcode刷c++的题,但因为才研一,搞python才是主页,因此舍不得直接开力扣的会员,但是有时候逻辑没错,写出的代码就是无法通过真的很恼火。而debug又要会员。因此作者猛学一波b站的vscode(启蒙老师在最下面的引用),专门写文帮助一下不会的小白和以后遗忘的自己。如果能够帮到你,原创 2022-04-15 22:53:04 · 4827 阅读 · 6 评论 -
c++中最大最小值设定(INT_MIN、INT_MAX、LLONG_MAX、LLONG_MIN)
文章目录前言一、四个标识符大小二、分析前言今天作者在刷leetcode的时候遇到一个很有趣的事情。因为在遍历BST的时候,要设置个最小的数,从而实现判断的完整性。但是作者一看数值的范围懵了:-2^31 <= Node.val <= 2^31 - 1。起初我并没在意,直接INT_MIN结果提交报错了,一查看,好家伙:[-2147483648],来了棵这样的树。一、四个标识符大小作者首先将其输出了一遍,结果发现INT_MIN:-2147483648INT_MAX:2147483647原创 2022-04-14 20:13:18 · 9709 阅读 · 2 评论 -
C++由变量定义的数组如何初始化?(以整型、布尔数组为例)
背景:今天作者在用到布尔数组时,想让其初始化的时候里面的值全为true(其实不用那么较真),而由此引发了一系列的问题。(建议还是转换到用vector好很多)因此写文记录一下,希望能帮助到许多入门的小伙伴。如果觉得有帮助就点个赞吧,写了那么多文章一个赞都没有,哭了///问题描述其实一共引发了三个问题:1、定义的数组长度不可为变量(报错:表达式必须含有常量值)2、由变量定义的动态数组如何直接全体初始化?3、能不能使用c++的优势达到想要的结果(int bool数组用vector、char数组用st原创 2022-04-06 14:50:01 · 2914 阅读 · 0 评论 -
vector创建数组(一维、二维)的超详细总结
今天刷leetcode的时候,发现vector都还没用明白,但是STL早晚要解决明白,因此作者专门写下这篇文章,以供自己复习等使用,快速回忆其vector的用法,不再丢人原创 2022-04-04 14:50:28 · 15598 阅读 · 2 评论 -
C++入门的大纲笔记
本文主要是对黑马程序员C++从0到1入门编程的所有课程的知识点整理,用“幕布”app进行的编写,总共用了一周左右。我对上课老师讲述的知识点进行提炼整理,对一些复杂易混的知识点加上自己的解释,整理了一个大纲笔记供自己以后复习使用。...原创 2021-11-13 17:52:33 · 335 阅读 · 0 评论 -
C++中二级指针(指针引用)解释总结
今日在看视频学东西时,大量用到二级指针,于是便查阅资料对指针进行了研究总结。1. 为什么会用到指针(或引用)?在一个函数的执行中,局部变量发生的变换不会作用在函数外(且值传递浪费内存)。因此便用到了指针(或引用)来通过地址传递从而使函数的执行结果对全局都有影响。2. 为什么会用到二级指针(或指针引用)?a、例如一个通讯录系统,一个大的系统里面,有多个对象需要修改,而每个对象里面又有多个值需要修改,因此这里便需要通过多层指针来嵌套。即多维数组中的参数传递(此处的系统下的对象便为二级指针)。b、对指.原创 2021-10-24 15:42:17 · 3581 阅读 · 0 评论 -
C++中”当输入不在区间内则重新输入“的结构(while无限循环的易错点)
今日在做c++练习时,见到了一个垃圾的错误。本意是想输入一个1-3的数字,若不是这些数字,那么重新输入。可以用while简单实现。但常见错误如下 while ((dSelect != 1||2||3) { cin >> dSelect; }这里的错误原因是系统在while的判断实际上为dSelect不等于1 or 2(True) or 3(True)所以出现了一直为True的情况,因此陷入无限循环。因此改进后 while ((dSelect != 1)&am原创 2021-10-23 22:39:34 · 709 阅读 · 0 评论