自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 力扣174.地下城游戏

题目:biubiu题意:一个矩阵,需要从左上的点到达右下的最后一点,只能往右或往下走,每个矩阵都有一个权值,要求在到达这个矩阵的时候,生命值必须大于0,问初始值最小。到达矩阵的某个点时我们要求他的生命值必须大于0,在满足这个前提下,到达这个点有两个路经,因为矩阵拥有权值,那么在达到这个点时他就拥有两种生命值,他的初始值肯定也是不同,而我们需要的是最小的初始值,但是如果只观察此刻的初始值,而不考虑他的生命值,那到终点时的结果是否是最优结果呢?因为此时的生命值是对后面的有影响的,在考虑这两点的要求下,如何获

2022-03-20 15:38:46 4173

原创 力扣137.只出现一次的数字II

题目:biubiu一:class Solution {public: int singleNumber(vector<int>& nums) { sort(nums.begin(),nums.end()); for(int i=0;i<nums.size()-1;i+=3){ if(nums[i]!=nums[i+1]){ return nums[i];

2021-12-08 15:51:48 116

原创 力扣.136只出现一次的数字

题目:biubiu题意:找出容器中只存在一个的数字使用异或class Solution {public: int singleNumber(vector<int>& nums) { int sum=0; for(auto&x:nums){ sum^=x; } return sum; }};...

2021-12-07 17:36:59 221

原创 力扣135.分发糖果

题目:biubiu题意:老师分发糖果,要求每个孩子最少有一颗糖果,但是要求相邻的孩子分数高的孩子得到的糖果多。方法一:为了保证相邻的孩子分数高的孩子得到的糖果多,我先遍历一遍,对于出现的升序先分配糖果,如果是降序或者分数相等,先分配一个糖果,然后逆序遍历一遍,同样对升序也就是降序进行处理。class Solution {public: int candy(vector<int>& ratings) { int ans=0; vector&l

2021-12-07 17:12:50 200

原创 力扣117.填充每个节点的下一个右侧节点指针 II

题目:biubiu题意:给二叉树多添加了一个next属性,让next指向他右边的节点。例如:思路一:递归记录每一层这个时候的左边的节点。/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; Node* next; Node() : val(0), left(NULL), right(NULL), next(NULL) {} Node(

2021-11-30 19:50:02 632

原创 力扣115.不同的子序列

题目:biubiu题意:给字符串s和t,现在问s中有多少子串t,不改变字符的顺序,对是字符串中的某个元素可以删除或不变,就得到了s的子串。例如:s=“babgbag”,t=“bag”,那么符合题意的子串有013、016、056、256、456,数字代表下标。动态规划:动态规划要找到动态方程,官方题解给的思路。class Solution {public: int numDistinct(string s, string t) { int m = s.length(), n

2021-11-29 20:07:47 122

原创 力扣106.从中序与后序遍历序列构造二叉树

题目:biubiu题意:根据中序和后序构造二叉树,力扣105的姐妹题,原理相同。class Solution {public: TreeNode* dfs(vector<int>& inorder, vector<int>& postorder,int x,int y,int k,int z){ if(k>z||x>y){ return NULL; } if(z&

2021-11-28 14:21:27 192

原创 力扣105.从前序与中序遍历序列构造二叉树

题目:biubiu题意:给出二叉树的前序和中序遍历,构造这个二叉树。方法1:class Solution {public: /* void print(TreeNode* root){ if(!root){ cout<<"NULL"<<" "; return ; } cout<<root->val<<" "; print(root

2021-11-27 20:48:07 684

原创 力扣91.解码方法

题目:biubiu题意:给一个数字的字符串,1-26分别对应26个大写字符,现在要求对这个字符串解码,问现在有多少解码情况。思路1:深搜暴力,可以解决这个问题,但是时间复杂度过大。class Solution {public: void dfs(vector<int>p, int x) { if (x == p.size()) { this->ans++; return; } dfs(p, x + 1); if (x+1<p.size()&amp

2021-11-21 12:39:50 244

原创 力扣.90子集II

题目:biubiu题意:给出一个数组,然后数组含有重复的元素,现在求数组的子集。递归循环:#include<iostream>#include<string>#include<vector>#include<cmath>#include<map>#include<unordered_map>#include<stack>#include<algorithm>using namespace s

2021-11-20 19:52:49 896

原创 力扣89.格雷编码

题目:biubiu题意:希望得到一个序列,然后要求:这种题第一种想法就是找到一种符合所有条件的规则,然后没有找到,还是看的别人的题解。#include<iostream>#include<string>#include<vector>#include<cmath>#include<map>#include<unordered_map>#include<stack>#include<algorith

2021-11-20 13:24:12 496

原创 力扣87.扰乱字符串

题目:biubiu题意:给定两个字符串,要求就是只能对一个字符串进行分割,分割成两个子串,然后两个子串可以交换,例如s1分割成s11和s12两个子串,两个子串可以s11+s12也可以s12+s11,两个子串可以继续相同的操作,问,现在s1==s2是否为真。对字符串的操作其实非常简单,就是切割然后判断是否交换,其子串也可以继续切割,就涉及到了递归。官方题解代码:#include<iostream>#include<string>#include<vector>

2021-11-19 16:33:56 725

原创 力扣85.最大矩形

题目:biubiu题意:给一个二维矩阵,存的是1和0,求1可以构成的最大矩形。思维转换,力扣84柱状图的最大矩形的变换。class Solution {public: int largestRectangleArea(vector<int>& heights) { int n = heights.size(); vector<int>l(n), r(n,n); stack<int>p; for (int i = 0; i < n;

2021-11-18 19:40:40 387

原创 力扣84.柱状图中最大的矩形

题目:biubiu题意:给出连续的长柱,求出长柱构成的最大矩形的面积。构成矩形如果左边的矩形比较高,那么左边这一个柱就可以合并,如果左边出现一个低于,那么这个柱就是界限,同样找到右边的界限,然后就可以找到矩形面积。如何找两边的界限,可以使用单调栈。#include<iostream>#include<string>#include<vector>#include<cmath>#include<map>#include<uno

2021-11-18 18:16:19 193

原创 力扣76.最小覆盖子串

题目:biubiu题意:在字符串中找到最小的覆盖单词的子串,覆盖要求含有单词的全部字符。通过滑动窗口实现。移动右指针找到符合条件的子串,移动左指针来使最小。#include<iostream>#include<string>#include<vector>#include<cmath>#include<map>#include<unordered_map>#include<stack>#include&l

2021-11-16 16:55:15 428

原创 力扣72.编辑距离

题目:biubiu题意:给两个单词word1和word2,可以对word1的某一个字符进行插入、删除、替换,问需要多少步可以将word1转成word2,dfs递归暴力:#include<iostream>#include<string>#include<vector>#include<stack>#include<algorithm>using namespace std;class Solution {public: voi

2021-11-15 20:36:10 382

原创 力扣71.简化路经

题目:biubiu题意:根据题意处理一个字符串。我使用的栈进行处理,后面的子串有可能对前面的子串产生影响,可以使用栈先进后出的特性。然后进行遍历处理相应的情况。注意: 使用栈,当你面对其中一种情况需要判断前一个子串也就是栈头元素时,一定要考虑栈是否为空,对栈中元素进行一个预判,防止空栈进行元素操作。代码:#include<iostream>#include<string>#include<vector>#include<stack>#inc

2021-11-15 11:34:52 76

原创 力扣68.文本左右对齐

题目:biubiu题意: 给一个单词数组,然后给一个句子的长度,现在让你把这些单词组合成句子,在单词之间插入空格,最后一个句子是特殊情况,只有最后一个句子的最后是空格。直接遍历就可以,然后就需要处理一些小细节,例如这个句子只有一个单词,然后就是空格的插入。#include<iostream>#include<string>#include<vector>#include<stack>#include<algorithm>using

2021-11-14 18:27:58 131

原创 力扣52.N皇后II

题目: biubiu题意:和力扣51一样,但是要求的结果不一样,力扣51要求把棋盘打印出来,52要求共有多少种情况。根据题解提供的思路,使用位运算,通过使用数字的二进制码来对棋盘进行标记,通过左移右移来确定皇后的位置,二进制码为1表示该位置可以放置皇后。大佬代码:class Solution {public: int totalNQueens(int n) { dfs(n, 0, 0, 0, 0); return this->res; } void dfs(int n, i

2021-11-12 12:19:01 237

原创 力扣51.N皇后

题目:biubiu题意:在nXn的棋盘中放n个皇后,要求n个皇后不能相互攻击,在提示中指出,两个皇后不能相同行相同列,并且不能再同一条斜线上,这个题不难,但是要认真,这个题只需要用深搜,进行递归回溯就行,但是在回溯的时候一定要注意一个小细节,你是如何标记不能再同一条斜线上的,我用的一个二维数组,将这个皇后的下方斜线全都标记,但是这就有一种可能,两条斜线会有相交的点,如果你直接标记为1,回溯直接回溯成0,那就有可能会造成一点的其他斜线的忽略,所以标记的时候不要直接标记为1,可以进行++,这样某一个点回溯的时

2021-11-11 20:43:00 345

原创 力扣49。字母异位词分组

题目: biubiu题意:给一个字符串数组,然后找出字母个数相同的字符串。字母个数相同可以对字符串进行排序然后比较判断,但是暴力就需要两层循环O(n^2),时间超限代码展示:class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { vector<vector<string>>ans;

2021-11-11 18:35:51 207

原创 全排列递归实现

用函数递归实现全排列函数next_permutation#include<iostream>#include<string>#include<vector>#include<stack>#include<algorithm>using namespace std;class Solution {public: void dfs(vector<vector<int>>& ans, vector<

2021-11-11 15:40:43 350

原创 力扣37.解数独

题目: biubiu题意:给一个残缺的数独,要求填入数字1~9,然后满足行和列1 ~ 9只能出现一遍,99的数独又分成了33的小数独,保证小数独里面1 ~ 9也只出现一遍。思路:采用深搜dfs,首先记录一下已经出现过的数字标记为1,然后就可以递归暴力将剩余的数字放进去,知道满足条件即可。#include<iostream>#include<vector>#include<algorithm>#include<map>using namespace

2021-11-09 16:28:39 257

原创 力扣30.串联所有单词的子串

题目:传送门题意:给定一个字符串 s 和一些 长度相同 的单词 words 。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。暴力:#include<iostream>#include<vector>#include<cmath>#include<string>#include<map>#include<cstdio>using namespace std;class Solution {p

2021-11-06 19:40:23 111

原创 力扣23.合并k个升序链表

题目: 传送门题意: 给k个升序链表,合并成一条升序链表方法一:根据力扣21合并两个升序链表,然后遍历k个升序链表,两两合并。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nu

2021-11-04 20:36:27 130

原创 对列类模板的实现

#include<iostream>#include<string.h>#include<stdlib.h>using namespace std;template<typename T>struct quende { T nodedata; quende* next;};template<typename T>class queue {private:protected: int quesize; quende<

2021-10-31 12:39:07 73

原创 力扣17.电话号码的字母组合

题目: 传送门题意:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 “任意顺序” 返回。代码:#include<iostream>#include<string>#include<vector>#include<queue>using namespace std;string mp[10] = { "","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz

2021-10-27 20:54:17 100

原创 力扣16.最接近的三个数之和

题目: 传送门分析: 题意要求找到三个数的和和target最接近,力扣15是找到三个数使得他们的和是0,两个题非常相似,只是一个和是确定的,一个是未知的,但是解决思路一样,就是三个数先确定a,然后找b、c,找b和c可以通过移动双指针,如果数组是有序的,那么确定两个指针,分别放到数组两端,他们的和就有了规律,如果两个指针的和比想要的大,我们可以移动右指针,如果小,我们可以移动左指针,这样,我们就可以找到我们需要的结果。代码:#include<iostream>#include&lt

2021-10-22 20:19:44 104

原创 力扣15.三数之和

题目:传送门**题意:**给定一个数组,选出其中三个数,使其和为0.代码:#include<iostream>#include<vector>#include<algorithm>using namespace std;class Solution {public: vector<vector<int>> threeSum(vector<int>& nums);};vector<vector&lt

2021-10-13 20:00:47 61

原创 力扣14.最长公共前缀

题目: 传送门题意: 题目给出多个字符串,求出字符串的最长公共前缀,我们要知道字符前缀是什么,我们举个例子:字符串s:“abcdef” ,那么字符串的前缀有:[“a”,“ab”,“abc”,“abcd”,“abcde”,“abcdef”],字符串前缀的意思是从字符串的第一个开始,现在求这些字符串的最长公共前缀我们只需要将两个字符串的最长公共前缀保存成一个字符串,然后和其他字符串一次求最长公共前缀,如何求最长公共前缀呢?我只需要一个while循环就可以了:string Solution::longFi

2021-06-19 15:02:35 173 7

原创 力扣13.罗马数字转整数

题目: 传送门将罗马数字转化为整数,和力扣12是姐妹题,我们只要明白罗马数字和整数的转换原理,就像知道十进制和二进制转换原理一样,这是一个非常下饭的一个题,可以让人非常快乐和方式,就喜欢这样的题让我们上快乐代码:#include<iostream>#include<map>using namespace std;class Solution {public: int romanToInt(string s);};int Solution::romanToI

2021-06-18 20:19:16 62 2

原创 力扣12.整数转罗马数字

题目: 传送门题意: 将一个数字转换成罗马数字,数字的转换,神奇而又充满了趣味。首先:然后在让我们看一下罗马数字的规则:1、罗马数字的符号一共只有7个:I(代表1)、V(代表5)、X(代表10)、L(代表50)、C代表100)、D(代表500)、M(代表1,000)。这7个符号位置上不论怎样变化,它所代表的数字都是不变的。2、一个罗马数字符号重复几次,就表示这个数的几倍。如:"III"表示"3";"XXX"表示"30"。3、在罗马数字的上方加上一条横线或者加上下标的M,表示将这个数乘以

2021-06-17 17:25:49 223

原创 力扣11.盛最多水的容器

题目: 传送门题意: 大家都知道木桶的原理,木桶盛水在于它最短的那个木板,这个题是给你一系列木板,已经排好,现在问你,在两个木板之间倒水,选择哪两个木板可以使盛水最多,木板之间的距离已经确定。让我们先看一个样例:在最开始的时候我没有思路,之间想着暴力,但是这个数组的范围特别的大,如果暴力就需要两层循环,时间复杂度就不能够满足。我们知道如何判断这两个木板之间盛水最多,就是让两个木板之间的距离乘以两个木板中短的那一个,但是又不能遍历所有情况来判断,有没有什么思路可以使在判断下一种情况时能够找到最优情况,

2021-06-17 12:13:18 94 2

原创 力扣10.正则表达式匹配

题目:传送门**题意:**给你两个字符串s和p,p字符串中有’.‘和’‘这两种特殊字符,’.‘可以匹配任意字符,’‘代表它的前一个字符的个数,可以是0也可以是无数个,现在问s和p是否匹配,题意这点比较模糊,题目中说涵盖,涵盖我最开始的理解是包含,但是不是,题目的意思是通过对这两个特殊字符的转换使两个字符串相等。**思考:**我最开始的思路是使用函数递归,但是当时我理解的题意是包含,对于’‘这个情况不能很好的处理,然后我的方法是动态规划,开辟dp[x][y]这样一个二维数组,dp[x][y]代表的意思就是

2021-06-16 19:36:36 226

原创 引用(引用=起个别名)

引用的概念什么是引用,就是给变量起了一个新的名字,一个别名。例如:#include <iostream>using namespace std;int main(){ int i=5; int &j=i; cout<<"j="<<j<<endl; cout<<"j的地址为:"<<&j<<endl; cout<<"i的地址为:"<<&i&

2021-06-15 21:00:17 398 4

原创 函数(内联函数、带有默认值的函数、重载函数)

函数原型:我们知道无论什么编程语言都有函数,函数就是对一段程序的封装,这段程序可以实现某种功能,我们使用函数进行包装,然后在需要这个功能的时候调用这个函数,函数可以使你的代码更加简洁,也增加了代码的可读性,也便于你调试,尤其是你的程序中需要多次使用这个函数的时候,函数的优点就更加明显。函数的结构为:返回值类型 函数名(参数表){ 函数体;}并且在C/C++中,如果函数调用的位置在函数定义之前,则要求在函数调用之前必须对所调用的函数作为函数原型的声明,以说明函数的名称、参数类型与个数,以及

2021-06-15 19:41:30 169

原创 const修饰符

在C中,习惯使用#define来定义常量,例如:#define LIMIT 100实际上,这种方法只是在预编译时进行字符置换,把程序中出现的标识符LIMIT全部置换成100。在预编译之后,程序中不再有LIMIT这个标识符。LIMIT不是变量,没有数据类型,不占用存储单元,而且容易出错。让我们看一个代码:#include<iostream>using namespace std;#define N 100int main() { int n = N; cout <<

2021-06-15 17:48:31 128

原创 面向对象程序设计

面向对象程序设计是当前非常流行的一种程序设计,学过C语言我们知道C是面向过程的程序设计语言,学过Java和Cpp我们知道这两种程序设语言是面向对象程序设计。对面向对象我们听到最多的是什么呢?就是面向对象就是不用考虑功能的实现过程,不需要面向过程,但是有没有很迷惑,如果不考虑实现过程,那面向对像程序设计中的类里面的函数是什么呢?这不是也面向了过程,难道我们不需要考虑这些功能的实现吗?所以到底什么是面向对象程序设计呢?首先面向对象程序设计是一种程序设计泛型,这种泛型的主要特征是:程序=对象+消息其主要结构

2021-06-10 11:59:26 1420 1

原创 力扣9.回文数

题目:传送门**题意:**判断一个数字是不是回文串,放松题,当你心情烦躁的时候不如来一波。代码:class Solution {public: bool isPalindrome(int x) { if(x<0) return false; int pos=0; int a[35]; while(x){ a[pos++]=x%10; x/=10;

2021-06-10 10:16:07 62 4

原创 力扣8.字符串转换整数

题目:传送门**题意:**这个题就是给你一个字符串,然后你提取出整数,这是题目的要求:我的思路就是直接暴力遍历一遍,找到符合条件的数字,暴力就很简单,但是这种问题必须要考虑全面,考虑出各种可能情况,因此写这种题必须要认真,如果不认真,你就可能这样:所以考虑问题必须要全面,根据题目要求想到要面临的各种情况,两个‘+’,如何判断这个数字是否超出int范围,何时应该截断…上代码:class Solution {public:///-2147483648 - 2147483647 int

2021-06-10 09:01:54 148

空空如也

空空如也

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

TA关注的人

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