自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣方法总结:排序

未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。建立map,值为其优先顺序,设为负值,在自定义排序规则中,若在map中出现过,返回其优先顺序,否则返回其大小,这样就能巧妙实现相对顺序相同。输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[2,2,2,1,4,3,3,9,6,7,19]输出:[[1,6],[8,10],[15,18]]

2023-03-23 22:53:03 230 1

原创 使用Visual Studio 2022通过mcc调用MatlabR2022b程序初步

函数签名,第一个参数为输出的参数个数,第二和第三个参数是Matlab中的输出参数,第四个参数是Matlab中的输入参数。得到一大堆文件,将其中的4个复制到VS工程目录下,分别是。,这里使用两个返回值的快速傅里叶变换,得到其幅值和相位。数组的构造函数,分别是行数,列数和变量类型(枚举)。要注意的是,Matlab建立矩阵是按列建立的,即。类型,参数分别是数组首地址和要赋值的参数个数。后的参数为打包的dll名称,后面的。程序调用时,先建立一维数组,使用。的函数签名,这里选用了。通过mcc进行编译,

2023-03-18 22:49:19 502 3

原创 MatlabR2022b + Visual Studio环境配置

matlab+C

2023-03-17 18:21:37 1861

原创 QT在自定义类中调用主类(界面类ui及其控件)的一种实用方法

QT在自定义类中调用主类(界面类ui及其控件)的一种实用方法

2023-03-16 20:08:53 2548 1

原创 力扣每日一题刷题总结:哈希表篇

6

2023-03-03 22:06:03 656

原创 力扣刷题常用思路

力扣思路

2023-02-25 22:52:29 84

原创 力扣方法总结:数学(位运算等)

数学题

2023-02-15 22:15:14 118

原创 力扣方法总结:回溯(DFS)篇

回溯

2023-02-10 22:20:56 170

原创 力扣方法总结:其他数据结构(单调栈、单调队列等)

单调栈等

2023-02-08 23:48:02 270

原创 力扣方法总结:动态规划

动态规划

2023-02-04 18:41:11 239

原创 力扣方法总结:前缀和、树状数组、差分数组

前缀和

2023-01-28 23:29:20 547

原创 C++11常用特性

1. autoauto常用于自动类型推导,可以大大提升编程效率。auto a; // 错误,auto是通过初始化表达式进行类型推导,如果没有初始化表达式,就无法确定a的类型auto i = 1;auto d = 1.0;auto str = "Hello World";auto ch = 'A';auto func = less<int>();vector<int> v;auto it = v.begin();auto p = new foo(); // 对自定义

2022-05-30 15:51:57 86

原创 力扣方法总结:查找类

436. 寻找右区间 Medium lower_bound方法 2021/11/10给你一个区间数组 intervals ,其中 intervals[i] = [starti, endi] ,且每个 starti 都 不同 。区间 i 的 右侧区间 可以记作区间 j ,并满足 startj >= endi ,且 startj 最小化 。返回一个由每个区间 i 的 右侧区间 在 intervals 中对应下标组成的数组。如果某个区间 i 不存在对应的 右侧区间 ,则下标 i 处的值设为 -1

2022-05-22 13:47:07 519

原创 力扣方法总结:双指针

本文部分内容参考https://labuladong.github.io/algo/2/18/21/双指针技巧主要分为两类:左右指针和快慢指针。所谓左右指针,就是两个指针相向而行或者相背而行;而所谓快慢指针,就是两个指针同向而行,一快一慢。26. 删除有序数组中的重复项 Easy 双指针-快慢指针 2022/5/18给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。示例:输入:

2022-05-22 10:46:51 203

原创 力扣方法总结:滑动窗口

代码模板:int left = 0; // 滑动窗口左指针int right = 0; // 滑动窗口右指针for (; right &lt; nums.size(); right++){ // 执行某项操作 ... // 若不满足窗口条件 while (condition not satisfied) { // 左指针右移 ... left++; } ...}...3. 无重复字符的最长子串 Medium 滑动窗口、散列

2022-05-22 10:28:14 232

原创 力扣每日一题刷题总结:字符串篇(持续更新)

953. 验证外星语词典 Easy 字典 2022/5/17某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。示例:输入:words = [“hello”,“leetcode”], order = “hlabcdefgijkmnopqrstuvwxyz”输出:true解释:在该

2022-05-21 19:01:25 225

原创 力扣方法总结:贪心算法

942. 增减字符串匹配 Easy 贪心 2022/5/12由范围 [0,n] 内所有整数组成的 n + 1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中:如果 perm[i] < perm[i + 1] ,那么 s[i] == ‘I’如果 perm[i] > perm[i + 1] ,那么 s[i] == ‘D’给定一个字符串 s ,重构排列 perm 并返回它。如果有多个有效排列perm,则返回其中 任何一个 。示例:输入:s = “IDID”输出:[0,4

2022-05-21 17:01:19 1425

原创 力扣每日一题刷题总结:二叉树篇

100. 相同的树 Easy 递归 2022/3/23给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。方法一:最牛递归,判断其左子树和右子树是否均相同来判定树是否相同,难点在于写全边界条件:均为空返回真。有一方为空一方不为空返回假,都不为空如值不相等则为假。class Solution {public: bool isSameTree(TreeNode* p, TreeNode* q) {

2022-03-24 22:46:27 4993

原创 使用C++实现 哈夫曼树(创建和打印)

使用C++实现 哈夫曼树(创建和打印)#include <iostream>#include <map>using namespace std;//哈夫曼数结点类型定义typedef struct{ int weight; int parent, lchild, rchild;} HTNode, *HuffmanTree;//从HT[1]~HT[n]中选取parent为0的,对weight进行排序,并找出最小的两个weight的下标存进s1和s2

2022-03-14 21:40:06 2488

原创 STL速查手册

STL- 八大容器及其常用方法整理1 string 容器注:此处所列函数原型const string &s均可替换为const char *s。1.1 string 构造函数string(); //创建一个空的字符串 例如: string str;string(const char* s); //使用字符串s初始化string(const string& str); //拷贝构造1.2 string 赋值操作string&

2022-03-04 23:15:29 1234

原创 VS Code配置问题

1.终端中文乱码问题在设置中搜索encoding将新建文件的编码格式改为GBK即可。2.exe文件乱跑在当前文件夹的setting.json文件中添加以下代码即可,其中路径可以按要求修改。"code-runner.executorMap": { "c": "cd $dir && gcc $fileName -o E:/VSCodeExercises/exe/$fileNameWithoutExt && E:/VSCodeExercises/exe/$fileNa

2022-03-01 11:05:09 71

原创 STM32疑难杂症之ST-LINK Connection error INVALID ROM TABLE

STM32疑难杂症

2022-02-27 21:35:18 1349

原创 力扣每日一题刷题总结:栈与队列篇(持续更新)

20. 有效的括号 无序map、栈 2021/11/21给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例:输入:s = “()[]{}”输出:true输入:s = “([)]”输出:false使用unordered_map无序关联容器。利用栈先进后出的性质,遍历字符串,如为([{则压入栈,否则为)]},看栈顶元素是否为其对应值,如是则弹出栈顶元素,最

2021-11-21 16:49:16 3686

原创 力扣每日一题刷题总结:链表篇(持续更新)

3. 无重复字符的最长子串 2021.11.10给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。输入: s = “pwwkew”输出: 3重要思想方法:滑动窗口,遍历字符串,左端位置默认为0,右端也默认为0,从右端向右逐渐滑动class Solution {public: //右端-左端+1即为字符串长度,散列表中的元素即为拆分的字符串 //如果没有遇到散列表中的字符,则加入散列表并继续右移 //如果遇到散列表中的字符,将原有字符删除并左端向右滑

2021-11-10 14:12:15 3194

原创 使用Matplotlib绘制图表初步

所需要的库matplotlib包中的pyplot模块,用于绘图。numpy模块,用于完成数值运算、矩阵运算等。pandas模块,用于数据操纵和分析、导入数据文件等。import matplotlib.pyplot as pltimport numpy as npimport pandas as pd注:本文中所有项目实例都是在Jupyter Notebook环境下运行的。绘制曲线图通用步骤plt.figure 指定图像显示比例和像素# 指定图像显示比例和像素 5*3 每个单位

2021-07-30 13:04:54 412 1

原创 Jupyter Notebook常用快捷键(在命令模式中按H也可查看)

命令模式 (按键 Esc 开启)Enter : 转入编辑模式Shift-Enter : 运行本单元,选中下个单元Ctrl-Enter : 运行本单元Alt-Enter : 运行本单元,在其下插入新单元Y : 单元转入代码状态M :单元转入markdown状态1 : 设定 1 级标题(自动转为markdown状态)2 : 设定 2 级标题(自动转为markdown状态)3 : 设定 3 级标题(自动转为markdown状态)Up/K : 选中上方单元Down/J : 选中下方单元Sh

2021-07-28 22:56:29 825

原创 OpenCV 6.4 中值滤波器的使用

非线性滤波器前几节介绍的均值滤波器、高斯滤波器均为线性滤波器,即用邻域像素的加权累加值替换像素值。本节主要介绍非线性滤波器,其没有内核,且不能进行卷积运算,但也是通过识别邻域像素值来确定输出的像素值的。常用的非线性滤波器有中值滤波器,中值滤波器把当前像素和其邻域组成集合,计算集合的中间值作为当前像素值,它在消除椒盐噪声方面非常有效。cv::Mat image = cv::imread("salted.bmp");cv::Mat median;cv::medianBlur(image, media

2021-07-28 13:57:11 333 1

原创 OpenCV3 6.3 用滤波器进行缩减像素采样

缩减像素采样降低图像精度的过程称为缩减像素采样(downsampling),提升图像精度的过程称为提升像素采样(upsampling)。空间假频如果要缩小一幅图像,仅仅消除图像中部分行和列,再将剩余的像素拼接起来,得到的图像效果往往不尽人意。cv::Mat image = cv::imread("boldt.jpg");cv::Mat reduced1(image.rows / 4, image.cols / 4, CV_8UC3);for (int i = 0; i < reduced1

2021-07-28 11:07:36 843 1

原创 OpenCV3 6.2 低通滤波器的使用

频域、频率的概念观察图像强度值变化的频率的方法称为频域,观察灰度分布描述图像特征的方法称为空域。图像中灰度强度值变化慢的区域产生低频率,而强度值变化快的区域产生高频率,频率分为垂直频率(垂直方向上的变化)和水平频率(水平方向上的变化)。可以用傅里叶变换或余弦变换等方法显示图像的频率成分。滤波器滤波即选择性地提取图像某项方面的内容,可以放大图像中某些频段,同时滤掉其他频段的算子。滤波器可以分为低通滤波器和高通滤波器,本节中主要介绍块滤波器(box filter)和高斯滤波器(gaussian fi

2021-07-27 21:38:31 572

原创 OpenCV关于x,y坐标容易混淆的心得

结论凡是关于cv::Mat类的方法,索引顺序为先行后列,即先y后x。凡是关于别的类(如cv::Rect cv::Point)的方法,索引顺序为先列后列行,即我们熟悉的先x后y。先y后x的例子cv::Mat img(240, 320, CV_8U, 100); //实例化一个240行,320列的Mat类图像img.at<uchar>(j, i) = (...); //使用at方法访问第j行,第i列的像素先x后y的例子cv::Mat img(cv::Size(320, 240),

2021-07-25 20:46:38 899

原创 OpenCV常用方法出处链接(持续更新)

cv::absdiff

2021-07-22 16:33:20 145 1

原创 Python爬虫基础教程

Python爬虫基础教程本文档创作于2021/5/2作者:南京航空航天大学 Eric0.网络爬虫网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或者脚本。由于互联网数据的多样性和资源的有限性,根据用户需求定向抓取相关网页并分析已成为如今主流的爬取策略。通用搜索引擎的处理对象是互联网网页,目前网页数量以百亿计,搜索引擎的网络爬虫能够高效地将海量的网页数据传下载到本地,在本地形成互联网网页的镜像备份。它是搜索引擎系统中很关键也很基础的构件。爬虫的基本流程是 获取数据-&g

2021-05-02 10:50:01 636

原创 Python中常见的导入方式

1. 直接导入模块 import 模块名优点:干净直接import sysprint(sys.path)import os # os是一个模块import os.path # 注意这里的os.path是一个模块2.导入包中的一个模块 import 包名.函数名包使用的注意事项需要先将包(文件夹)写在sys.path列表中的一个目录下,如果没有需要使用列表的append方法追加进去。在包中需要再写一个__init__.py文件表示这是一个包,文件可以为空。import syssys

2021-04-29 22:54:57 3387

转载 Python中 * 和 ** 的打包和解包

python中的 * 和 ** ,能够让函数支持任意数量的参数,它们在函数定义和调用中,有着不同的目的。一、打包参数*的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整个元组赋值给变量args。def f(*args): print(args) f() # ()f(1) # (1,)f(1,2,3,4,5) #(1,2,3,4,5)** 的作用:在函数定义中,收集关键字参数到一个新的字典,并将整个字典赋值给变量kwargs。def f(**kwargs):

2021-04-26 20:03:57 299

原创 初涉Anaconda

1.安装教程2.conda创建虚拟环境教程对于不同项目,可以安装不同版本的模块,非常方便。创建完虚拟环境后,可以在Pycharm里选择虚拟环境并创建项目。选中新建虚拟环境的解释器即可。3.Jupyter Notebook快速入门教程Jupyter Notebook可以直接在代码旁写出叙述性文档,而不是另外编写单独的文档。也就是它可以能将代码、文档等这一切集中到一处,让用户一目了然。4.Jupyter Notebook环境配置在base环境中安装nb_conda_kernels包后,切换虚

2021-04-13 22:30:14 98 1

原创 用Python实现递归算法的常见例子

# recursionimport syssys.setrecursionlimit(100)# factorialdef fac1(n): res = 1 for i in range(1, n+1): res *= i return resdef fac2(n): if n == 1: return 1 else: return n * fac2(n-1)print("fac1(5) = %d"

2021-04-12 15:37:14 184

原创 Python闭包的两个案例

闭包的概念闭包又称闭包函数或者闭合函数,其实和前面讲的嵌套函数类似,不同之处在于,闭包中外部函数返回的不是一个具体的值,而是一个函数。一般情况下,返回的函数会赋值给一个变量,这个变量可以在后面被继续执行调用。案例一:游戏中的角色移动:闭包在实际开发中的作用 原文在某种情况下,我们并不方便使用全局变量,所以灵活的使用闭包可以实现替代全局变量。例如以下的游戏开发中,我们需要将游戏中角色的移动位置保护起来,不希望被其他函数轻易可以修改到,所以我们选择使用闭包操作,参考代码及注释如下:origin = (

2021-04-04 20:17:38 385 1

原创 Qt实战教程三:Qt事件和文件

3 Qt事件和文件3.1 自定义控件封装开发中,常需要自定义封装控件,如滑动条和选值框进行封装,实现拖动滑动条,改变选值框的内容;改变选值框,滑动框也跟着改变。封装步骤:右击项目->添加新文件->Qt->Qt设计师界面类->选模板为Widget空模板->设类名。在新类即为Widget类的提升类,将滑动条和选值框拖动到UI界面即可。在项目中添加Widget控件后,右击->提升为->输入刚刚类的名称->如果勾选全局包含下次可以直接提升。

2021-03-11 11:38:58 522

原创 Qt实战教程二:QMainWindow及其控件

2 QMainWindow及其控件2.1 QMainWindow菜单栏和工具栏QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget),是许多应用程序的基础,如文本编辑器,图片编辑器等。菜单栏只能有一个,但工具栏可以有多个。本节主要讲述菜单栏和工具栏的基本创建方法。类名功能方法

2021-03-09 16:33:42 2485

原创 Qt实战教程一:创建第一个Qt程序

Qt实战教程本文档创作于2021/1/17。作者:南京航空航天大学 Eric1 创建第一个Qt程序1.1 创建过程点击 文件-新建文件或项目可开始创建。Location为路径选择;Build System为创建的系统,建议使用默认Qmake。Details即创建一个类,父类可以选择QMainWindow、QDialog、QWidget之中的一个,其中QMainWindow、QDialog都是QWidget的子类。下方的Generate Form勾选上会额外生成.ui

2021-02-27 15:13:26 1286

空空如也

空空如也

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

TA关注的人

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