自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一包辣条包邮!的博客

互相交流,共同进步,谢谢

  • 博客(49)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 算法刷题计划(二十)填充每个节点的下一个右侧节点指针 II、另一棵树的子树、二进制矩阵中的最短路径、被围绕的区域、所有可能的路径

LeetCode打卡一、填充每个节点的下一个右侧节点指针 II二、另一棵树的子树三、二进制矩阵中的最短路径四、被围绕的区域五、所有可能的路径一、填充每个节点的下一个右侧节点指针 II题目:题解:方法一(广度优先搜索bfs):Node*connect(Node*root){ if(!root) return root; queue<Node*>que; que.push(root); while(!q

2021-12-07 15:51:09 271

原创 算法刷题计划(十九)乘积小于K的子数组、长度最小的子数组、岛屿数量、省份数量

leetCode打卡一、乘积小于K的子数组二、长度最小的子数组三、岛屿数量四、省份数量一、乘积小于K的子数组题目:题解(滑动窗口):class Solution {public: int numSubarrayProductLessThanK(vector<int>& nums, int k) { if(nums.empty()||k==0||k==1) return 0; int left=0,right=0,base=

2021-12-06 18:53:59 302

原创 算法刷题计划(十八)比较含退格的字符串、区间列表的交集、找到字符串中所有字母异位词

LeetCode打卡一、比较含退格的字符串二、区间列表的交集三、找到字符串中所有字母异位词一、比较含退格的字符串题目:题解:class Solution {public: bool backspaceCompare(string s, string t) { return rebuildStr(s)==rebuildStr(t); } string rebuildStr(string str){ string s; fo

2021-12-03 16:42:26 1078

原创 算法刷题计划(十七)删除排序链表中的重复元素 II、寻找峰值、寻找旋转排序数组中的最小值、搜索二维矩阵

LeetCode打卡一、删除排序链表中的重复元素 II二、寻找峰值三、寻找旋转排序数组中的最小值四、搜索二维矩阵一、删除排序链表中的重复元素 II题目:题解:方法一(遍历):class Solution {public: ListNode* deleteDuplicates(ListNode* head) { if (!head) { return head; } ListNode* dummy = new

2021-12-01 19:49:58 193

原创 算法刷题计划(十六)合并区间、插入区间、最后一个单词的长度、螺旋矩阵 II

LeetCode 打卡一、合并区间二、插入区间三、最后一个单词的长度四、螺旋矩阵 II一、合并区间题目题解:class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { int n=intervals.size(); vector<vector<int>>res;

2021-11-30 16:15:41 265

原创 c++类型转换、异常处理与标准输入输出流

类型转换与异常处理一、类型转换1)静态类型转换2)动态类型转换3)常量转换二、异常处理1)基本语法2)异常变量生命周期3)异常的多态使用4)使用标准异常库5)编写自己的异常类三、标准输入输出流1)标准输入流2)标准输出流一、类型转换在c++中类型转换不可以像在c语言中那样强制使用。1)静态类型转换 函数原型: static_cast <目标原型>(原对象);内置数据类型void test01(){ //内置数据类型 char a = 'a'; double d =

2021-11-27 21:37:07 582

原创 算法刷题计划(十五)Pow(x, n)、最大子序列和、螺旋矩阵、串联所有单词的子串(回顾滑动窗口)

LeetCode打卡一、Pow(x,n);二、最大子序和三、螺旋矩阵四、串联所有单词的子串(回顾滑动窗口)一、Pow(x,n);题目:题解:方法一(递归+快速幂):class Solution {public: double myPow(double x, int n) { if(n==0) return 1; long long N=n; return N>0?quickPri(x,N):1/quickPr

2021-11-26 17:48:55 233

原创 算法刷题计划(十四)旋转图像、字母异位词分组、分发糖果、分发饼干

LeetCode算法题打卡一、旋转图像二、字母异位词分组三、分发糖果四、分发饼干一、旋转图像题目:题解:方法一(“复制粘贴”方法);class Solution {public: void rotate(vector<vector<int>>& matrix) { int m=matrix.size(),n=matrix[0].size(); vector<vector<int>>c

2021-11-24 19:58:39 372

原创 算法技巧总结(五)动态规划与贪心算法

该文章有点长,请耐心阅览一下,阅览完后必有收获!算法技巧总结一、动态规划1)斐波那契数2)爬楼梯3)使用最小花费爬楼梯4)买卖股票的最佳时期5)最小路径和6)打家劫舍7)打家劫舍28)最长回文子串二、贪心算法1)跳跃游戏2)跳跃游戏2三、温馨提示一、动态规划什么是动态规划算法呢?动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划(DP)。动态规划常用于的一个问题就是求最值, 比如说最常.

2021-11-20 21:09:50 1773

原创 算法刷题计划(十三)括号生成、串联所有单词子串、全排列、全排列2

leetcode算题打卡一、括号生成二、串联所有单词子串三、全排列四、全排列2一、括号生成题目:题解(回溯):class Solution {public: vector<string> generateParenthesis(int n) { vector<string>ans; dfs(ans,"",0,n); return ans; } void dfs(vector<strin

2021-11-17 19:58:42 4307

原创 算法技巧总结(四)滑动窗口

滑动窗口字面意思就是这个窗口是移动的,也就是移动是按照一定方向来的。窗口大小并不是固定的,可以不断扩容直到满足一定的条件;也可以不断缩小,直到找到一个满足条件的最小窗口;当然也可以是固定大小。滑动窗口实际上也算是双指针的应用,同样是由左右指针,右指针的作用是不断扩大窗口的范围,当窗口内的对象符合某个条件时,进行统计或者某种操作;然后左指针作用收缩窗口来打破条件,以便让右指针右移继续扩大窗口滑动窗口的应用:class Solution {public: vector<i..

2021-11-16 10:30:25 874

原创 c++实现数组、字符串中的元素序列全排列

小技巧:实现数组、字符串中的元素全排列组合实现思路:序列的全排列,就是从其中顺序调出一个元素作为第一个元素,将剩余的元素做全排列。也就是把第一个元素,和后续每个元素做一次交换,把第一个元素以后的序列做全排列。全排列的结果和第一个元素合起来就是全排列的结果。其实就是递归。class Solution{ public: int combination(string str){ int num=0; int n =str.

2021-11-15 19:52:02 872

原创 算法刷题计划(十二)组合总和、组合总和2、缺失的第一个正数、接雨水、字符串相乘

leetcode刷题打卡一、组合总和二、组合总和2三、缺失的第一个正数四、接雨水五、字符串相乘一、组合总和题目:题解(递归):class Solution {private: vector<vector<int>> result; vector<int> path; void backtracking(vector<int>& candidates, int target, int sum, int sta

2021-11-13 16:53:35 605

原创 c++线程池中遇到陌生的关键字和C++11新特性某些功能

最近自学线程池,看了人家的代码,发现很多代码里用到C++11新特性中某些功能和一些陌生的关键字加上鄙人孤陋寡闻很多都不会这是啥功能,导致都不知道怎么理解,经过一番查阅之后懂了一些特此记录一下。C++知识点查漏补缺一、可变参数模板函数基本用法1)可变参数模板函数声明和定义2)可变参数模板函数调用示例二、inline、explicit、implicit关键字1)inline2)explicit、implicit三、std::function与std::bind1)std::bind2)std::functio

2021-11-07 23:29:05 142

原创 算法刷题计划(十一)丢失的数字、范围求和 II、外观数列

LeetCode刷题记录一、丢失的数据范围求和 II外观数列组合总和一、丢失的数据题目题解方法一(数学整数相减):class Solution {public: int missingNumber(vector<int>& v) { int n=v.size(); int sum=n*(n+1)/2; int total=accumulate(v.begin(),v.end(),0); ret

2021-11-07 10:26:47 3433

原创 C++中禁止对象赋值拷贝

直接上代码方式一:(复制构造函数以及赋值符号(=)均被设置为私有化)class Children{ public: Children(){ cout<<"children()"<<endl; }; ~Children(){ cout<<"~children()"<<endl; } private: Children(const Children&);

2021-11-02 11:36:53 669

原创 算法刷题计划(十)分糖果、最长有效括号、搜索旋转排序数组、在排序数组中查找元素的第一个和最后一个位置、搜索插入位置

leetcode算法刷题分糖果最长有效括号搜索旋转排序数组在排序数组中查找元素的第一个和最后一个位置搜索插入位置分糖果题目:题解:方法一(暴力):class Solution {public: int distributeCandies(vector<int>& candyType) { if(candyType.empty()) return 0; int times=candyType.size()/2;

2021-11-01 21:01:11 80

原创 vscode写模板友元类时出现的问题

template<class T>class LinkNode{ template<class T> friend class LinkList; public: LinkNode(){ next=nullptr; } private: T data;//数据 LinkNode<T>*next;//结点 };当代码中需要写到模板友元类时如果

2021-10-26 16:38:37 133

原创 算法刷题计划(九)求众数 II、构造矩形、实现 strStr()、两数相除、下一个排列

算法刷题一、求众数 II二、构造矩形三、实现 strStr()四、两数相除五、下一个排列一、求众数 II题目:题解(哈希):class Solution {public: vector<int> majorityElement(vector<int>& nums) { if(nums.empty()) return {}; if(nums.size()==1) return {nums[0]};

2021-10-23 15:26:33 106

原创 算法技巧总结(三)KMP

序言:遇到需要查找原字符串中的字符是否含有匹配串中的字符时,通常有那几种方法解决呢?一般我们可能只想到的是用暴力解决方法来解题,但这个方法不是不好就是用的时间很长。所以有什么方法可以省时呢?其实这类题目可以用kmp方法来解的,这种方法是以空间换时间,即用时间短,占用空间相比于暴力解决方法大点。KMP详细讲解一、kmp算法的概念二、最长相等前缀和后缀三、next创建及代码讲解四、kmp算法代码五、应用:实现 strStr()若该文章有出错请留言告知一下,谢谢~~一、kmp算法的概念暴力..

2021-10-22 17:00:19 161

原创 算法技巧总结(二)回溯

序言:刷LeetCode算法题时看人家解题方法是用回溯算法时,瞬间感觉到该题用该算法就很简单。细看了回溯算法后个人感觉回溯与递归有异曲同工之妙。什么是递归呢???递归是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。递归通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。简单来说为了描述问题的某一状态,必须用到该状态的上一个状态;而如果要描述上一个状态,又必..

2021-10-19 19:28:37 144

原创 算法技巧总结(一)双指针

序言:最近刷算法题时发现有的题目要求是:不要使用额外数组空间,必须在原地修改输入数组,并在使用O(1)额外的条件完成。这对于常规的采用循环甚至双循环的方法来说空间开销就很大,而且题设要求不能开辟更多的空间,只能再原来的内存空间进行修改。因此,双指针法(双下标法)的用处就体现出来了。那什么是双指针算法呢???双指针算法其实就是初始化两个指针,一个指向数组的首位置元素,另外一个指向数组的末尾的位置元素,然后根据自定义需求条件进行两指针的移动,最后是找到两个满足条件的数或者不存在这样的两个数字,.

2021-10-19 16:19:20 277

原创 算法刷题计划(八)(LeetCode)两两交换链表中的节点、 删除有序数组中的重复项、移除元素、数字的补数

LeetCode算法题目一、两两交换链表中的节点二、删除有序数组中的重复项三、移除元素四、数字的补数一、两两交换链表中的节点题目:解题方法:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x)

2021-10-19 15:40:31 83

原创 算法刷题计划(七)(LeetCode)删除链表的倒数第 N 个结点、有效的括号、合并两个有序链表、整数转换英文表示

LeetCode算法刷题一、删除链表的倒数第N个结点二、有效的括号三、合并两个有序链表一、删除链表的倒数第N个结点题目:解题方法:1、计算链表长度/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) :

2021-10-17 20:47:49 77

原创 C++中左值(引用)及右值(引用)详解

写C++代码编译时,有时会出现左值问题错误或右值错误,那左值和右值究竟是什么呢???一、左值与右值啥是左值和右值呢? 左值:在内存有确定存储地址、有变量名,表达式结束依然存在的值,简单来说左值就是非临时对象。 右值:就是在内存没有确定存储地址、没有变量名,表达式结束就会销毁的值,简单来说右值就是临时对象。int a = 0; // 在这条语句中,a 是左值,0 是临时值,就是右值。左值可以分为两类:非常量左值和常量左值;int a=10; /.

2021-10-16 21:07:15 8682 14

原创 C++中字符串与数值之间的转换

最近老是用到字符串与数值之间的转换,又常常忘记用那个函数方法,现在特意记录下来下次能快速找到!!!一、字符串转换成数值1、atof(字符串.c_str()) { string str="123"; int num = atof(str.c_str()); cout<<num<<endl; //输出 整数123(int) }2、stoi函数将 n 进制的字符串转化为十进制st.

2021-10-16 15:40:30 749

原创 c++中lambda的用法

序言:今天刷算法题时看到人家的解题方法运用了lambda表达式的功能,瞬间感觉整段程序简而易懂。因此发篇文章温故而知新先。lambda使用一、lambda的使用详细说明二、lambda的运用一、lambda的使用详细说明二、lambda的运用/** * lambda的使用 * */ #include<iostream>#include<vector>#include<algorithm>using namespace std;int.

2021-10-10 20:39:29 225

原创 算法刷题计划(六)三数之和、最接近的三数之和、电话号码的字母组合、四数之和

算法刷题计划一、三数之和二、最接近的三数之和一、三数之和题目:解题方法:(排序+双指针)class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { int n=nums.size(); sort(nums.begin(),nums.end()); vector<vector<int&gt

2021-10-10 17:06:40 86

原创 算法刷题计划(五)最长公共前缀、罗马数字转整数、重复的DNA序列

算法刷题计划(1)最长公共前缀(2)罗马数字转整数(3)重复的DNA序列(1)最长公共前缀题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = [“flower”,“flow”,“flight”]输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。解题方法:class Solution {public: stri

2021-10-08 21:17:22 58

原创 算法刷题计划(四)两整数之和、回文数、盛最多水的容器、整数转罗马数字

LeetCode算法(六)(1)两整数之和(2)回文数(1)两整数之和题目:给你两个整数 a 和 b ,不使用 运算符 + 和 - ​​​​​​​,计算并返回两整数之和。示例 1:输入:a = 1, b = 2输出:3示例 2:输入:a = 2, b = 3输出:5class Solution {public: int getSum(int a, int b) { while(b!=0){ unsigned int crray=

2021-09-26 16:25:37 105

原创 算法刷题计划(三)扁平化多级双向链表、 Z 字形变换、两个字符串的删除操作、整数反转

leetcode算法(1)扁平化多级双向链表(2)Z 字形变换(1)扁平化多级双向链表题目:····多级双向链表中,除了指向下一个节点和前一个节点指针之外,它还有一个子链表指针,可能指向单独的双向链表。这些子列表也可能会有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。····给你位于列表第一级的头节点,请你扁平化列表,使所有结点出现在单级双链表中。示例 1:输入:head = [1,2,3,4,5,6,null,null,null,7,8,9,10,null,null

2021-09-24 16:42:15 89

原创 undefined reference to `WinMain‘ collect2.exe: error: ld returned 1 exit status的处理方法

今天用vscode写c++的时候编译运行出现undefined reference to `WinMain’collect2.exe: error: ld returned 1 exit status错误其出现问题的原因是修改代码后未进行crtl+s进行保存编译,保存后编译就能正常使用

2021-09-16 10:32:35 5580 6

原创 算法刷题计划(二)二分查找、兩數相加、无重复字符的的最长子串、寻找两个正序数组的中位数

leetcode算法(二)(1)二分查找(2)两数相加(1)二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2

2021-09-06 10:19:35 81

原创 git完整教程回顾——这是你没有看过的版本

git学习回顾(1)git的特点(2)安装与配置(3)版本库创建与回退(4)分支管理(5)使用github最后提示最近老是需要上github那白嫖代码,但git的操作指令有些忘记了,导致白嫖的过程不是那么的顺畅,所以特意写回一篇文章回顾一下之前所学的git用法。只要用心了看我这篇文章,你就基本掌握了git的用法了,该文章是结合了之前学git的时候弄的word文档(1)git的特点版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题。分布式:Git是分布式版本控制系统,同一

2021-09-05 15:13:31 208

原创 算法刷题计划(一)斐波那契數列、兩數之和

leetcode算法(一)(1)斐波那契數列(2)兩數之和(1)斐波那契數列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模1e9+7(1000000007),如计算初始结果为:1000000008,请返回

2021-09-04 21:15:48 214

原创 QT学习回顾(二)界面布局及其控件设计

QT学习回顾(二)(1)QMainWindow介绍(2)工具栏及状态栏介绍(3)柳接部件、浮动窗口及核心部件介绍(4)资源文件添加及图片应用(5)对话框介绍(6)界面布局(7)控件(1)QMainWindow介绍菜单栏最多只有一个 //菜单栏创建 菜单栏最多只能有一个 QMenuBar*bar = menuBar(); //将菜单栏放入到窗口中 setMenuBar(bar); //创键菜单 QMenu*fileMenu=bar->addMe

2021-09-03 11:52:33 1399

原创 QT学习回顾(一)信号和槽

QT回顾(一)(1)命名规范及快捷键、QT基本模块(2)创建一个QT程序(3)按钮控件常用API(4)对象树和坐标系(5)信号和槽(6)自定义信号和槽(7)当自定义信号和槽出现重载(8)信号与槽的拓展以及低版本写法(9)lambda表达式(1)命名规范及快捷键、QT基本模块类名 : 首字母大写,单词与单词之间的首字母大写函数名: 变量名称 首字母小写,单词和单词之间首字母大写快捷键:注释:ctrl+/运行:ctrl+r编译:ctrl+b字体缩放:ctrl+鼠标滚轮查找:ctrl+f整

2021-08-31 19:44:02 192

原创 C++并发与多线程---学习笔记(5)condition_variable、wait、notify_one、notify_all

C++11并发与多线程一、条件变量condition_variable、wait()、notify_one()1)condition_variable2)wait()3)notify_one()二、notify_one()与notify_all()区别一、条件变量condition_variable、wait()、notify_one()1)condition_variablestd::condition_variable实际使用一个类,是一个和条件相关的一个类,说白了就是等待一个条件达成,这个类

2021-08-12 23:02:14 206

原创 C++并发与多线程---学习笔记(4)单例设计模式及共享数据分析、解决及实现

C++11并发与多线程一、单例设计模式讲解及共享数据问题处理、解决(1)单例模式中的懒汉式(2)单例模式中的饿汉式二、std::call_once()函数模板一、单例设计模式讲解及共享数据问题处理、解决什么叫单例设计模式呢,单例设计模式其实就是在整个项目中,有某个或者某些特殊的类,智能创建一个属于该类的对象,单例类就是只能生成一个对象。单例模式又分为两种类型:懒汉式 与饿汉式,下面就这两种类型展开分析一下(1)单例模式中的懒汉式懒汉式的特点是延迟加载,比如配置文件,采用懒汉式的方法去配置

2021-08-08 00:15:07 209

原创 C++并发与多线程---学习笔记(3)unique_lock(类模板)详解

c++11并发与多线程一、unique_lock(类模板)详解(1)unique_lock取代lock_guard(2)unique_lock的第二个参数1)std::adopt_lock2)std::try_to_lock3)std::defer_lock(3)unique_lock的成员函数1)lock()2)unlock()3)try_lock()4)release()(4)unique_lock所有权的传递一、unique_lock(类模板)详解(1)unique_lock取代lock_gua

2021-08-05 16:09:57 210

git总结文档和git的ximd图

适合于新学git的人,

2021-09-05

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除