- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 智能指针的风骚走位
智能指针shared_ptr在结构体内部定义,并以传值的方式传入函数中,会被函数修改的两种情况:一、当结构体中定义(非引用)智能指针成员变量,并以传值的方式将该结构体传入函数中:如果传入函数前,该智能指针变量已经初始化,传入函数中仅修改智能指针所指向的变量值,则传出的智能指针就会被修改当结构体引用智能指针成员变量,并以传值的方式将该结构体传入函数中,则传出的智能指针成员变量将会修改...
2021-11-20 17:10:09 354
原创 经典的设计模式
简单工厂模式定义一个抽象类,即汽车定义具体的汽车类型,继承自抽象类,即宝马和奔驰定义一个工厂类,用于生产不同类型的汽车#include using namespace std;enum CarType{BENZ, BMW};class Car//车类{public:virtual void createdCar(void) = 0;};class BenzCar : public Car //奔驰车{public:BenzCar(){cout<<“Benz::B
2021-10-16 13:06:22 152
原创 vscode配置C++环境(内置“miDebuggerPath is invalid”可能的解决办法)
vscode配置C++环境(内置“miDebuggerPath is invalid”可能的解决办法)1、下载vscode,官网参见:https://code.visualstudio.com/2、安装cpptools插件,如图所示(可以只下载标注红色的插件;为了以后长期使用,可以全装)3、安装MinGW编译器下载地址参考:https://sourceforge.net/projects/mingw-w64/files/下载的文件:进入网站后不要点击 “Download Lasted Versi
2021-09-21 23:11:52 21546 2
原创 剑指offer56-1
剑指offer56-1// 使用unordered_set插入和删除元素,最后仅出现过一次的元素被保留到哈希表中class Solution {public: vector<int> singleNumbers(vector<int>& nums) { unordered_set<int> res; int len = nums.size(); for(int i=0;i<len;i++){
2020-09-03 09:53:32 177
原创 剑指OFFER49丑数
剑指OFFER49丑数该程序采用逐次递归的方法,重点在于dp[a]、dp[b]、dp[c]三者可能相同,相同的时候其对应的索引位置也都要加1,因此需要三个if语句进行判断class Solution {public: int nthUglyNumber(int n) { vector<int> dp(n,0); dp[0] = 1; int a = 0; int b = 0; int c = 0;
2020-08-25 16:55:06 126
原创 剑指OFFER41
剑指OFFER41在C++中使用priority_queue类型变量//升序队列:先弹出的值是最小值,保留最大值在队列中priority_queue <int,vector,greater > q;//降序队列:先弹出的值是最大值,保留最小值在队列中,默认为lesspriority_queue <int,vector,less >q;small_heap存储数值较小的数,big_heap存储数值较大的数addNum函数:当small_heap为空,优先存储到sma
2020-08-25 09:45:03 144
原创 剑指offer38字符串的排列
剑指offer38// 从首位开始,与后面的元素调换// 设调换的两个元素的前一个为s[front],后一个为s[back]// 先front不变,back++,直到back=size-1// 然后front++,递归back++// 剪枝的条件为该区间内有与s[back]元素相同,返回// 因为该条件下的调换之前已经调换过了class Solution {public: vector<string> permutation(string s) { if
2020-08-24 21:58:16 95
原创 剑指OFFER28
对称的二叉树定义queue,res1,res2将根节点添加到queue,根节点值添加到res1逐层递归res1若不对称,则返回false否则对该层节点,逐个判断左右节点是否为空,若左/右节点为空,将-1添加到res1,代表为空若左/右节点不为空,则将左/右节点添加到queue,并将root->val添加到res1中/** * Definition for a binary tree node. * struct TreeNode { * int val; *
2020-08-20 22:05:23 118
原创 剑指OFFER27
剑指OFFER27本题的解题思路是逐层递归,遇到非空节点则添加,每次调用swap函数调增左右节点/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Sol
2020-08-20 21:57:24 196
原创 剑指OFFER 11
剑指OFFER 11这是一题二分查找,但是在实现有一些小技巧当number[mid]<number[high]时,high=mid;当number[mid]>number[high]时,left=mid+1;但是相等时,high–;从而向左依次缩小范围,最后number[low]即为所求class Solution {public: int minArray(vector<int>& numbers) { int low = 0;
2020-08-18 20:01:53 83
原创 Leetcode56刷题c++
Leetcode56刷题c++给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。主要思想:先使用sort函数将其按子区间左侧数字大小排序,然后依次比较子区间的右侧大小,能合
2020-07-01 21:31:47 232
原创 Leetcode785
Leetcode菜鸟刷题第785题给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边: graph[i] 中不存在i,并且graph[i]中没有重复的值。该题可以用图的遍历(广度优先遍
2020-06-28 21:56:33 130
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人