自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode刷题记录0922

深度优先搜索(DFS)934、Shortest Bridge题目描述:因为是求最短距离,就会比较适合使用深度优先算法(DFS),代码如下:class Solution {public: vector<int> direction{-1,0,1,0,-1}; //主函数 int shortestBridge(vector<vector<int>>& grid) { int m=grid.size(),n=grid[

2021-10-04 21:50:30 102

原创 leetcode0916

79、单词搜索同样是使用之前的回溯法,不过这次是修改标志位,代码如下(使用递归实现):class Solution {public: bool exist(vector<vector<char>>& board, string word) { if(board.empty())return false; int m=board.size(),n=board[0].size(); vector<vector&

2021-09-20 20:27:18 111

原创 leetcode刷题笔记0914

Leetcode刷题笔记0914547、省份数量题目描述:简单来说,就是找一个图结构中一共有多少联通区域,若有很多个节点相互连接,那就是一个省份,若一个节点不与其他节点连接,那这一个节点就单独是一个省份;这道题和之前求岛屿最大面积的题目非常相似;主要思路就是按节点搜索这张图(每一行就代表一个节点),知道这个节点与哪些节点相连后,搜索与这些节点相连的其他节点,简单来说就是搜索这个节点所直接/间接相连的所有节点,并修改visited的值,避免重复搜索,然后++count,最后返回即可;递归的方法可

2021-09-14 19:32:22 99

原创 leetcode解题0910

搜索算法DFS:深度优先算法——在搜索到以恶新的节点时,立即对该节点进行遍历;可以用两种方法实现:先入后出的数据结构,即栈实现;或者用与栈等价的递归算法实现。695.岛屿的最大面积(Max Area of island)题目描述:用栈的方法实现,代码如下:class Solution {public: vector<int>direction{-1,0,1,0,-1};//共有的变量,函数中可以任意使用 int maxAreaOfIsland(vector<

2021-09-10 20:54:48 114

原创 leetcode题解0908

leetcode题解0908今天主要是跟排序相关的题目:215、数组中第k大的数字(Kth Largest Element in an Array)最坏的做法就是先用C++中的快速排序对数组中的所有元素进行排序,然后选择第K大的元素即可,时间复杂度为:O(nlog2nnlog_2nnlog2​n)(平均情况,快排的时间复杂度)class Solution {public: int findKthLargest(vector<int>& nums, int k) {

2021-09-08 23:03:24 65

原创 leetcode解题

142.环形链表Ⅱ题目描述:题解:链表的题目需要使用到快慢指针,对是否存在链表是相当好判定的,为快慢指针设置不相等的步幅,如果存在环形链表,两个指针一定可以相遇;对环形链表起始元素的判定,需要一些数学上的证明:首先可以证明,慢指针没有走完1整圈时,一定可以被快指针追到并相遇;因为慢指针是从环形链表的入口进入环形的;快指针此时在环形中的某个位置,当慢指针再次回到起始点前一定可以被快指针追上;然后可以用数学证明,当快慢指针相遇后,再将快指针移动到head,两个指针再走一次,相遇的位置就是环形的入

2021-09-08 18:13:15 71

原创 2021-08-17

排序专题今天来总结一下排序相关的各种知识,并且实现:快速排序:C++中可以使用std::sort()进行快速排序,但是最好还是要知道其中的原理和实现细节:代码如下:void quick_sort(vector<int>&nums,int l,int r){//左指针和右指针 if(l+1>=r){ return; } int first=l,last=r-1,key=nums[first];//first指针和last指针、key是

2021-08-17 21:25:38 47

原创 leetcode解题系列(12)

69.x的平方根题目描述:方法一:二分查找:class Solution {public: int mySqrt(int x) { int l = 0, r = x, ans = -1; while (l <= r) { int mid = l + (r - l) / 2; if ((long long)mid * mid <= x) { ans = mid;

2021-08-11 21:36:30 92

原创 leetcode解题系列(11)

leetcode解题系列(11)双指针双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是排好序的。88、合并两个有序数组题目描述:解题思路:这里用到了三个指针,m和n可以作为比较定位指针,可以另外新添一个pos指针用于指向添加元素的位置,具体

2021-07-28 16:42:53 67

原创 Perl语言学习1

Perl语言学习1为什么要学习Perl?说起来还是因为我最近无意中得到了很多有关Perl的书籍,本来之前对这个语言完全任何了解的,但是现在一下就很有兴趣,想花一个周末的时间快速学习一下。Perl能做什么?摘自:http://www.bj-dns.net/design/notes_show298.htm1.Unix系统的维护功能如我们在前面所说的,Perl可以作为传统Unix系统维护工具的替代,在这方面,它可以对文本文件,特别是对配置文件(还记不记得在配置Linux系统中的文本方式的配置)进行操作

2021-07-25 09:53:34 79

原创 leetcode解析系列(十)

455.分配饼干思路:贪心算法;每次都考虑饥饿度最小的孩子,然后依次从最小的饼干出发,考虑是否可以满足;代码:class Solution {public: int findContentChildren(vector<int>& g, vector<int>& s) { int cnt=0; sort(g.begin(),g.end()); sort(s.begin(),s.end());

2021-07-17 21:29:57 57

原创 leetcode解题系列(九)

leetcode解题系列(九)1122、数组的相对排序题目描述:最简单想到的方法自然是:用一个指针pointer指向arr2,然后依次在arr1中搜索指针指向的元素个数,再将特定数目的元素加入res数组,最后返回res即可...

2021-05-17 16:45:22 67

原创 操作系统自学系列(六)

操作系统自学系列(六)知识总览:单标志法:两个进程交替地访问临界区,修改标志位turn,代码如下:int turn=0;while(turn!=0);critical section;turn =1;remainder sesction;缺点:违背了“空闲让进”的原则双标志先检查法:缺点:并发进程具有异步性;检查和上锁两件事若是原子操作就没有问题,否则有可能同时访问临界资源。双标志后检查法:把上锁放在了前面,但是也有问题:可能都不能访问:peterson算法:先主动

2021-05-14 13:53:42 43

原创 leetcode解题系列(八)

leetcode解题系列(八)继续学习!136.只出现一次的数字这是一道看上去非常简单的题目,如果可以使用count函数就可以直接遍历一遍所有元素然后当值为1时直接返回…

2021-05-12 17:03:46 68

原创 操作系统自学系列(四)

操作系统自学系列(四)断更一天,今天继续。同时今天是5.12,缅怀一下在那场灾难中失去生命的人们!四川雄起!言归正传,今天从2.2.1学起:处理机调度的概念和层次知识总览:调度的概念:银行—先到先服务,考虑优先级资源不够,就需要调度高级调度:作业调度主要管理的是调入的时机中级调度:内存调度:中级调度的频率比高级调度更高一些七状态模型:低级调度(进程调度),实现并发2.2.2 进程调度的时机、切换、过程、方式进程调度:低级调度知识总览:临界区与内核程序临界区:

2021-05-12 13:31:36 44

原创 leetcode解题系列(七)

leetcode解题系列(七)继续坚持!169、多数元素题目描述:最简单的方法可以先用一个数组保存前(n/2+1)元素的出现次数(多数元素一定出现),然后再求这个数组中的最大值对应的元素即可。复杂度分析:时间O(n^2),空间O(n)但是这样不能满足时间要求,进行了一定修改,只有元素第一次出现才count,否则就直接next,节省了很多时间。代码如下:class Solution {public: int majorityElement(vector<int>&amp

2021-05-10 13:43:50 62

原创 操作系统自学系列(三)

操作系统自学系列(三)2.1_3进程控制进程控制由原语实现:原语:中间不可间段,原子操作实现:先关中断,再开中断(特权指令),核心态创建原语:撤销原语:阻塞原语/唤醒原语:成对使用进程切换:切换原语2.1.5 进程通信各进程的地址空间相对独立共享存储系统分配共享空间,相互访问是互斥的;两种方式:管道通信:也是互斥的,半双工线程多进程:可以实现边听音乐边用qq;要用qq又发文件、又聊天、又接受文件:线程;传统的进程是程序执行流的最小单位;引入线程后,线程才

2021-05-10 10:41:25 42

原创 leetcode解题系列(六)

leetcode解题系列(六)找到一点感觉了,每天坚持好三道题的量,多想想思路,自己动手再写一下代码,坚持就是胜利。5750 人口最多的年份题目描述:给你一个二维整数数组 logs ,其中每个 logs[i] = [birthi, deathi] 表示第 i 个人的出生和死亡年份。年份 x 的 人口 定义为这一年期间活着的人的数目。第 i 个人被计入年份 x 的人口需要满足:x 在闭区间 [birthi, deathi - 1] 内。注意,人不应当计入他们死亡当年的人口中。返回 人口最多 且 最

2021-05-09 16:46:24 106

原创 操作系统自学系列(二)

操作系统自学系列(二)中断和异常为了解决只能串行的问题,利用率低的问题,多道程序并发发生中断意味着操作系统介入

2021-05-09 14:37:51 56

原创 leetcode解题系列(五)

leetcode解题系列(五)剑指offer09:用两个栈实现队列题目描述:复习一下:栈和队列都是线性表,不过是进出元素的顺序逻辑不相同;对于栈,就像压子弹一样,先进后出;队列是先进先出,元素从尾部进入,从头部取出元素;比较容易想到的方法就是维护两个栈1,栈2;每当向队列存入一个数字的时候,先进栈1,若需要进行出队列操作时,就将栈1 的元素依次出栈,并按顺序入栈2,再对栈2进行常规的出栈操作,接下来又要将栈2出栈,进入栈1,进行入队列的操作。举个例子:向空队列存入1,2,3,4这4个数字,他

2021-05-08 16:33:01 61

原创 操作系统自学系列(一)

操作系统自学系列(一)下定决心学一些计算机基础的知识,这样之后找工作或者实习准备起来都会轻松一点。(虽然是信息大类的学生,但是很多基础方面还是非常欠缺,需要自己弥补)准备就看B站上播放量最高的王道考研进行学习,相关笔记记录在这个专栏中。熟悉的操作系统:windows、linux、Android、ios、macos层次:操作系统:系统软件(最接近硬件的)软硬件的桥梁;定义:系统资源的管理者:进程:程序的执行过程,需要存放在内存中,才能被执行联机命令接口:交互式cmd脱机命令接口:批处

2021-05-08 13:53:55 222

原创 《python机器学习实战》阅读记录(一)

《python机器学习实战》阅读根据自己规划的路线,我需要自学一些有关python机器学习方面的知识,在图书馆兜兜转转,觉得这本书还比较适合我,反正先看着呗,吃着火锅唱着歌,不合适了再换学习资料吧(这书好像是一个公司的产品,不管了。先学着再说)第一章 python开发环境选择与比较pycharm: 大多数都接触过,里面提到的版本控制系统还没有用过,可以试一下github的使用调试的功能没有用到过,以前写c++的时候老是用cout语句输出对应标志和数值以检查当前程序的运行状态,已经非常落后了,想用用加

2021-04-15 11:02:49 49

原创 Leetcode解题系列(4)

Leetcode解题系列(4)225 用队列实现栈题目描述:请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通队列的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。注意:你只能使用队列的基本操作 —— 也就是 push to

2021-04-02 11:20:11 80

原创 Leetcode解题系列(3)

leetcode解题系列(3)141 环形链表题目叙述:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。 如果pos是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true。否则,返回false 。思路: 遇到链表的问题,首先想到的就是双指针的方法是否可以解决:对于这道

2021-04-01 15:48:29 50

原创 Leetcode解题记录系列(2)

Leetcode解题记录系列(2)121、买卖股票的最佳时机**题目描述:**给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。暴力解法:首先定义一个变量代表我们的最大利润 maxprofit。然后通过第一次循环,获取股票第一天到倒数第二天的价格。因为

2021-03-12 21:29:54 79

原创 Leetcode解题记录系列(1)

leetcode解题记录(1)简单记录leetcode刷题过程。1、两数之和**题目描述:**给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。C++暴力解法:class Solution{ public: vector<int> twoSum(vector<int>&

2021-03-08 16:34:53 57

原创 opencv&mfc学习笔记(四)

今天来学习以下opencv中Mat类的相关概念:Mat类是opencv中最核心的概念,是matrix的缩写,意为矩阵或者数组的意思。该类的声明在opencv2/core/core.hpp中,要使用该类时必须添加该头文件。构造一个Mat相当于创造了一个数组,需要最基本的四类元素:行数(高)、列数(宽)、通道数及数据类型。故构造函数表示为Mat(int rows,int cols,int typ...

2020-02-28 21:35:47 449

原创 opencv&MFC入门(三)

我们先来讲下 opencv中各个模块的简介:顾名思义,source指的是opencv库的源码,其中的modules文件夹中imgproc、core、highgui三个部分是最基础的模块,也是学习opencv的起点。core:实现了最核心的数据结构和基本运算,为后面的处理打下基础highgui:实现了图像的读取、显示和存储等UI接口设计imgproc:实现了图像处理的基本方法,包括图像的几何...

2020-02-27 20:24:25 636 1

原创 MFC&opencv入门学习(二)

我们已经可以成功创建一个MFC项目了;接下来,我们尝试把opencv加入这个项目中:先从opencv官网中下载opencv的官方版本:这里我们在官网的releases界面下载最新版本的对应版本即可,下载后运行后得到一个opencv的目录,放在自己熟悉的目录中(以便之后自己可以熟悉地找到)接下来,在自己的mfc中加入opencv库,我们点开最上方项目一栏的最下方属性的选向:在这个界面中,我...

2020-02-26 20:32:01 1017

原创 MFC&C++&Opencv入门学习笔记

MFC&C++&Opencv入门学习笔记(一)本文为本人第一次学习编辑并发表博客,若有任何问题请各位看官老爷及时指出!本文主要内容:在vs2019中,创建MFC模式项目,并在其中加入opencv,配置好相关环境。首先,对MFC有一个基本的认识:百度百科上是这样介绍的:“微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的...

2020-02-26 14:41:36 1559

空空如也

空空如也

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

TA关注的人

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