自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣62.不同路径(全部解法详解)

题目:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/unique-paths著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法起点:(0,0);终点(m - 1,n- 1);值:从起点到目标点有多少

2021-03-22 12:44:50 415

原创 力扣509. 斐波那契数

题目:斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:示例:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1解法两种方法,自顶向下;自底向上。代码//Botton-up//自底向上class Solution {public: int fib(int n) { if (n == 0) return 0;

2021-03-09 15:25:09 146

原创 力扣78. 子集

题目:给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例:输入:**nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]解法分割问题,组合问题都是收集叶子节点问题子集问题,是寻找树的所有节点。代码class Solution {public: vector<vector<int>> r

2021-03-01 16:31:56 176

原创 力扣7. 整数反转

题目:给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例:解法两种解法:一种是每一次切割末尾数后,判断if (num > INT_MAX/10 || (num == INT_MAX / 10 && tmp > 7)其实num == INT_MAX / 10 && tmp &

2021-02-28 01:56:44 221

原创 力扣131. 分割回文串

题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:解法分割问题也是组合问题如何模拟分割线:将判断回文加入到for循环中,先找到第一个分割线,加入到path中,在进行下一个递归寻找。递归的主要逻辑就是找到一条分割线。因为这是一个集合中找组合所以需要startIndex。代码class Solution {private: vector<vector<string>> res; vecto

2021-02-27 15:04:09 78

原创 力扣39. 组合总和

题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。示例:解法有时候剪枝不止需要加上附加条件,还需要对原有数据集进行改动,比如排序。代码class Solution {public: vector<int> path; vector<vector<int>> res; voi

2021-02-26 10:06:11 115

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

题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:**输入:**digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]解法代码class Solution {private: const string letterMap[10] = {

2021-02-26 02:26:22 228

原创 力扣216. 组合总和 III

题目:找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。示例:输入: k = 3, n = 7输出: [[1,2,4]]解法sum记录当前和,可以在函数调用中相加,可以节省一部回溯的步骤。优化剪枝:在数字没到数量限制时,和已经大于目标和时。if (sum > n) return;代码class Solution {private: vector<int> path; vector&l

2021-02-26 01:52:50 101

原创 力扣77. 组合

题目:给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:示例:解法注意startIndex的开始值,因为它不是索引,所以需从1开始。代码class Solution {public: vector<int> path; vector<vector<int>> res; void backtracking(int n, int k, int startIndex) { if (

2021-02-25 10:59:18 94

原创 回溯法

回溯其实是递归的副产品,有递归就会有回溯。效率回溯并不高效,因为回溯的本质是穷举,遍历所有可能性。为了高效会加一些【剪枝】,但依旧改变不了穷举的本质。它之所以存在就是因为一些问题只能用回溯。用处组合问题:N个数里面按一定规则找出k个数的集合排列问题:N个数按一定规则全排列,有几种排列方式棋盘问题:N皇后,解数独等等子集问题:一个N个数的集合里有多少符合条件的子集切割问题:一个字符串按一定规则有几种切割方式算法模板void backtracking(参数) {.

2021-02-25 10:57:10 205

原创 力扣654. 最大二叉树

题目:给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下:二叉树的根是数组 nums 中的最大元素。左子树是通过数组中 最大值左边部分 递归构造出的最大二叉树。右子树是通过数组中 最大值右边部分 递归构造出的最大二叉树。示例:解法构建二叉树一般用的前序,因为先构建根节点一般情况来说:如果让空节点(空指针)进入递归,就不加if,如果不让空节点进入递归,就加if限制一下, 终止条件也会相应的调整。代码class Solution {public:

2021-02-25 10:08:34 135

原创 防止重复定义的各种宏

#define#undef 取消已定义的宏宏作用#if如果条件为真,编译下面代码#else配合#if使用,否则#elif否则如果#endif结束#if#error编译期间遇到这个定义就会报错,这样可以判断宏定义中条件判断是否错误#pragma once该头文件只编译一次(不是每个编译器都支持)#ifndef#define#endif和上面的效果相同...

2021-02-19 15:05:54 861

原创 B树在数据库怎么用

前言首先,B树不要和二叉树混淆,在计算机科学中,B树是一种自平衡树数据结构,它维护有序数据并允许以对数时间进行搜索,顺序访问,插入和删除。B树是二叉搜索树的一般化,因为节点可以有两个以上的子节点。[1]与其他自平衡二进制搜索树不同,B树非常适合读取和写入相对较大的数据块(如光盘)的存储系统。它通常用于数据库和文件系统。先了解磁盘存储电脑存储用磁盘来存储,存储规则如图,用轨道和block来分区,使得将一块磁盘分成不同的区。当我们要在磁盘上找到一个数据时,我们需要用地址来查找,而这个地址就是【轨道

2021-02-19 14:07:28 586

原创 力扣113. 路径总和 II

题目:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。解法递归递归回溯,记count值,当count==0时,则找到路径,push_back给res数组定义额外的数组path记作路径,代码class Solution {private: vector<vector<int>> res; vector<int> path; void traversal(Tre

2021-02-16 21:55:39 123

原创 力扣112. 路径总和

题目:给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。示例:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true解法代码class Solution {public: bool hasPathSum(TreeNode*

2021-02-16 16:58:47 201

原创 力扣513. 找树左下角的值

题目:给定一个二叉树,在树的最后一行找到最左边的值。示例:输入:2/\1 3输出:1解法题目要求【找到最后一行】,【最左边的节点值】想到层序遍历每次层序遍历,记录最左边的值。代码class Solution {public: int findBottomLeftValue(TreeNode* root) { queue<TreeNode*> que; if(root) que.push(root); i

2021-02-16 15:09:15 108

原创 使用C++批量下载url链接图片

#include<iostream> #include<vector>#include <fstream> #include<string>#include <atlstr.h>#include <windows.h>#include <urlmon.h>#include <atlconv.h>#pragma comment(lib,"Urlmon.lib")using namespace st

2021-02-14 16:17:18 494

原创 C/C++:堆栈详解总结

存储器header 2栈区系统自动分配,由程序自动创建、自动释放。函数参数、局部变量以及返回值等信息都存在其中堆区使用自由,不需要预先确定大小。多少情况下需要程序员手动申请、释放。如果不释放,程序结束后有操作系统垃圾回收机制收回。例如,s = (char *)malloc(10),静态区/全局区全局变量和静态变量的存储区域。程序结束后由系统释放常量区用于存放常量的内存区域代码区存放代码例如: #include <stdio.h>...

2021-02-02 22:23:31 574 1

原创 力扣160. 最浪漫的相交链表

路至尽头,不见君,待到相遇,君亦如我题目:编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:解析:链表A和B相交与否先不论,根据A+B = B + A。那么两指针先走完自己的链表后,再走对方的链表。那么两个链表走过的路程相等。那么如果相交,可以看作将相交部分去掉,那么两个指针先走完彼此的路,最后携手走上共同的路。(是不是有点浪漫)代码如下:class Solution {public: ListNode *getIntersectionNode(ListNode .

2021-02-02 22:15:50 117

原创 59. 螺旋矩阵 II

题目给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]解法将上下左右作为记录索引工具class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> res(n);

2021-01-31 23:06:09 100

原创 回文总结

在三种方法之前,须知:所有负数都不是回文!并且以0为结尾都不是回文。于是有x<0||(x%10==0&&x!=0)方法一 转换字符串判断将int型整数转化成字符串,再逐个字符判断。class Solution{public: bool isPalindrome(int x) { bool result; if (x < 0) { return false;

2021-01-31 23:04:14 162

原创 循环队列

问题描述: 循环队列是一般队列的变种吧,就是将队列首尾相连了,貌似这样就不必考虑队列满而无法使用了,因为到了队列尾又会循环回到队列首。在嵌入式底层代码实现中,一些串行端口数据特别是串口,用到循环队列的情况还是蛮多的。循环队列: 将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。这个应当是比较成熟的定义了,简洁了当。像是一条蛇咬住自己的尾巴,而且蛇腔里面可以填充东西的感觉。为什么用循环队列: 主要是为了克服“假溢

2021-01-31 23:02:00 299

原创 const关键字的各种用法

1.const修饰指针和变量的区别const int MAX_AGE = 90;本身int * const a = new int;//不能改变指针,就是指向不变,但是可以改*a的值*a = 2;注意语法:读作 pointer to (指向...的指针)const (常量) 是形容词char (变量类型) 和 p (变量名) 当然都是名词。Bjarne 在他的《The C++ Programming Language》里面给出过一个助记的方法——“”。 const cha

2021-01-26 21:14:32 237

原创 字符串指针相加减的含义

在写文件IO时候需要用文件名和路径,发现在strncpy函数字符串相加减含义的问题 char str1[64] = "1:/45/789/b"; //文件路径+文件名 const char *fullname = str1; //文件路径+文件名 const char *p = strrchr(fullname, '/'); //文件名 char dirname[256] = {0}; strncpy(dirname,

2021-01-25 20:58:05 1662 1

原创 Linux下安装缺失的manpage - pthread手册

Linux下安装缺失的manpage - pthread手册所以用到pthread,但是man的时候却发现没有pthread函数库的手册页因为ubuntu 默认不安装glibc 手册,所以很多时候使用 man send 或者 man perror 时提示找不到文件。$sudo apt-get install glibc-doc或者$sudo apt-get install manpages-dev安装以后,若是还是有函数不全,,使用man -k pthread或apropos pthread可

2021-01-25 08:49:22 1046

空空如也

空空如也

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

TA关注的人

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