自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 资源 (1)
  • 收藏
  • 关注

原创 剑指offer_JZ6 从尾到头打印链表 JZ24 反转链表

代码】剑指offer_JZ6 从尾到头打印链表 JZ24 反转链表。

2022-08-09 15:39:29 300 1

原创 Leetcode101_广度优先搜索_1162地图分析 934最短的桥

什么鬼示例,题目读半天没读懂意思是求每个海洋到陆地节点的最小值,然后返回这些最小值里面的最大值BFS搜索。

2022-07-18 22:11:53 241

原创 Leetcode101_回溯法_51N皇后问题

注意判断是否冲突的条件即皇后是否能放在第i行第j列,要看每一列,左斜和右斜是否冲突。a[i]表示在第i-1行的皇后在第a[i]-1列。遍历每一列,确定每一行皇后的位置并回溯。

2022-07-18 19:19:15 254

原创 Leetcode101_回溯法_46全排列 77组合 39组合总和 79. 单词搜索

定义flag标记元素是否已访问。

2022-07-18 17:12:52 248

原创 Leetcode101_深度优先搜索_547省份数量 417太平洋大西洋水流问题

深度优先搜索的思路是很直观的。遍历所有城市,对于每个城市,如果该城市尚未被访问过,则从该城市开始深度优先搜索,通过矩阵\textit{isConnected}isConnected得到与该城市直接相连的城市有哪些,这些城市和该城市属于同一个连通分量,然后对这些城市继续深度优先搜索,直到同一个连通分量的所有城市都被访问到,即可得到一个省份。遍历完全部城市以后,即可得到连通分量的总数,即省份的总数。...

2022-07-18 14:30:39 66

原创 Leetcode101_深度优先搜索_695岛屿的最大面积

给你一个大小为mxn的二进制矩阵grid。岛屿是由一些相邻的1(代表土地)构成的组合,这里的「相邻」要求两个1必须在水平或者竖直的四个方向上相邻。你可以假设grid的四个边缘都被0(代表水)包围着。岛屿的面积是岛上值为1的单元格的数目。计算并返回grid中最大的岛屿面积。如果没有岛屿,则返回面积为0。...

2022-07-18 11:01:42 95

原创 Leetcode101_排序算法_347前 K 个高频元素

用小根堆,创建优先队列。

2022-07-18 09:40:57 70

原创 Leetcode101_排序算法_912排序数组

比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。...

2022-07-17 21:33:29 73

原创 Leetcode101_二分查找_540有序数组中的单一元素

代码】Leetcode101_二分查找_540有序数组中的单一元素。

2022-07-17 12:03:05 77

原创 Leetcode101_二分查找_33.81.搜索旋转排序数组ⅠⅡ

先找出最小值,然后判断target和nums[0]的大小,来决定目标值在左边还是右边,然后二分查找,注意特殊情况是没有旋转的,单独判断。

2022-07-17 10:54:40 109

原创 Leetcode101_二分查找_34在排序数组中查找元素的第一个和最后一个位置

给你一个非负整数x,计算并返回x的算术平方根。由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。注意不允许使用任何内置指数函数和算符,例如pow(x,0.5)或者x**0.5。

2022-07-17 10:14:59 61

原创 Leetcode101_二分查找_153、154寻找旋转排序数组中的最小值ⅠⅡ

判断mid和最后一个元素的大小,由于数组中的元素互不相同,所以虽然是闭区间,但是让i

2022-07-17 10:14:36 117

原创 Leetcode101_二分查找_69x 的平方根

给你一个非负整数x,计算并返回x的算术平方根。由于返回类型是整数,结果只保留整数部分,小数部分将被舍去。注意不允许使用任何内置指数函数和算符,例如pow(x,0.5)或者x**0.5。

2022-07-16 18:38:43 67

原创 Leetcode101_双指针_340至多包含 K 个不同字符的最长子串

给定一个字符串s,找出至多包含k个不同字符的最长子串T。

2022-07-16 18:12:01 106

原创 Leetcode101_双指针_524通过删除字母匹配到字典里最长单词

给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。不难 就是比较复杂...

2022-07-16 16:57:12 210

原创 Leetcode101_双指针_680验证回文字符串 Ⅱ

给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。

2022-07-16 15:24:56 1484

原创 Leetcode101_双指针_633平方数之和

给定一个非负整数c,你要判断是否存在两个整数a和b,使得a2+b2=c。

2022-07-16 15:15:07 98

原创 Leetcode101_双指针_76最小覆盖子串

给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串“”。

2022-07-16 14:45:48 77

原创 Leetcode101_双指针_142.环形链表 II

给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。注意pos不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改链表。...

2022-07-16 13:57:39 54

原创 Leetcode101_双指针_88合并两个有序数组

publici++;}else{j++;p

2022-07-16 13:42:19 60

原创 Leetcode101_双指针_167两数之和 II - 输入有序数组

代码】Leetcode101_双指针_167两数之和II-输入有序数组。

2022-07-16 13:22:25 45

原创 leetcode算法题459——重复的子字符串 KMP算法实现

参考资料我觉得最主要是理解这个图,理解为什么要递归next[k]给定一个非空的字符串s,检查是否可以通过由它的一个子串重复多次构成。

2022-07-16 11:05:47 1394

原创 leetcode算法题30——350两个数组的交集 II

给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。记录第一个数组中每个元素出现的次数,遍历第二个数组,查找在哈希表中该元素出现次数是否大于0,如果大于0,说明该元素是交集,并把次数减一2.双指针排序后遍历如果两个数组是有序的,则可以使用双指针的方法得到两个数组的交集。首先对两个数组进行排序,然后使用两个指针遍历两个数组。初始时,两个指针分别

2022-07-14 16:52:32 118

原创 Leetcode101_贪心算法_665非递减数列

输入: nums = [4,2,3]输出: true解释: 你可以通过把第一个 4 变成 1 来使得它成为一个非递减数列。题解捏吗第一次看着题,直接比较一下不就行了吗??自信满满写出代码,发现直接WA,裂开了不通过的案例是 【3 4 2 3】,发现确实只比较是不可取的,所以在比较完之后额外增加一个判断,把非递减的改成递减的,然后再比较后面的class Solution {public: bool checkPossibility(vector<int>& ..

2022-03-22 20:50:13 131

原创 Leetcode101_贪心算法_406根据身高重建队列

输入:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]输出:[[5,0],[7,0],[5,2],[6,1],[4,4],[7,1]]解释:编号为 0 的人身高为 5 ,没有身高更高或者相同的人排在他前面。编号为 1 的人身高为 7 ,没有身高更高或者相同的人排在他前面。编号为 2 的人身高为 5 ,有 2 个身高更高或者相同的人排在他前面,即编号为 0 和 1 的人。编号为 3 的人身高为 6 ,有 1 个身高更高或者相同的人排在他前面,即编号为..

2022-03-22 20:45:17 131

原创 Leetcode101_贪心算法_122买卖股票得最佳时机Ⅱ

输入: prices = [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。题解题解一 回溯用dfs回溯虽然会超时,但是可以用这个题练一练dfs的思路class Solution {public: int res..

2022-03-22 20:40:41 125

原创 Leetcode101_贪心算法_763划分字母区间

输入:S = “ababcbacadefegdehijhklij”输出:[9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字母最多出现在一个片段中。像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。题解找出每个字符最后出现的位置,划分区间时设置开始位置start和结束位置end,然后比较每一次出现的字符的最后出现位置和end的大小,取最大值(取最大值是因为这个字符只能出现在一个片..

2022-03-22 20:33:12 109

原创 Leetcode101_贪心算法_452用最少数量的箭引爆气球

输入:points = [[10,16],[2,8],[1,6],[7,12]]输出:2解释:对于该样例,x = 6 可以射爆 [2,8],[1,6] 两个气球,以及 x = 11 射爆另外两个气球题解这个题和435无重叠区间很像,想要弓箭越少,则表明每一支弓箭要射爆的气球越多,因此可以先找出每次区间重叠最多的时候的气球数目,先按照结尾从小到大排序,每次都用下一组的开头和上一组的结尾进行比较,如果小于,说明这俩气球有重叠的区间,就可以用一根弓箭射爆,如果大于,说明这俩气球要用两根弓箭才能射爆,..

2022-03-22 20:25:58 115

原创 Leetcode101_贪心算法_605种花问题

输入:flowerbed = [1,0,0,0,1], n = 1输出:true题解参考了大佬的跳格子方法注意当index到最后一位时需要特殊判断一下class Solution {public: bool canPlaceFlowers(vector<int>& flowerbed, int n) { for(int i = 0; i <flowerbed.size();){ if(flowerbed[i] == .

2022-03-22 20:17:44 418

原创 Leetcode101_贪心算法_435无重叠区间

输入: intervals = [[1,2],[2,3],[3,4],[1,3]]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。解题经典题目没啥说的,按照结尾排序,每次保留结尾最小且不与上一个区间重叠的区间即可class Solution {public: int eraseOverlapIntervals(vector<vector<int>>& intervals) { if (intervals.empty()) ..

2022-03-22 20:13:02 52

原创 Leetcode101_贪心算法_135发糖果

输入:ratings = [1,0,2]输出:5解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。题解这道题看题解是需要遍历两遍,先从左往右遍历,如果右边孩子的评分比左边的高,则右边孩子的糖果数更新为左边孩子的糖果数加 1;再从右往左遍历一遍,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖果数加 1。关于为什么要遍历两遍,我是这么理解的:比如数组为ratings = [1 2 3 4 3 2 1]如果只..

2022-03-22 20:07:26 102

原创 Leetcode101_贪心算法_455分配饼干

找工作不得不开始刷题了,发现之前刷的题如果不记录一下 过一段时间就忘了,所以还是写到博客里面记录一下吧输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。所以你应该输出1。解题数组g表示每个孩子的饥饿值,按照贪心策略的思想,每一次都满足饥饿度最小,也就是胃口最小的孩子,并分配到的最小的满足胃口的饼干,这样可以把更大的饼干分配给胃口更大的孩子

2022-03-22 19:58:14 106

原创 基于MFC实现TCP的socket编程

一.实验目的了解Socket通信原理,实现以太网双节点通讯。二.实验要求了解三次握手的原理。编程实现以太网双节点通讯。了解端口与IP的关系和差异。三.实验原理基于TCP(面向连接)的socket编程,分为客户端和服务器端。客户端的流程如下:(1)创建套接字(socket)(2)向服务器发出连接请求(connect)(3)和服务器端进行通信(send/recv)(4)关闭套接字服务器端的流程如下:(1)创建套接字(socket)(2)将套接字绑定到一个本地地址和端口上(bind)

2020-11-01 16:45:30 2211 2

原创 leetcode算法题29——两数相除

两数相除(中等)给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例解题这个题很坑的地方在于 因为输入的都是 int 型,比如被除数是 -2147483648,在 int 范围内,当除数是 -1 时,结果就超出了

2020-10-18 22:44:26 230

原创 leetcode算法题28——实现 strStr()

实现 strStr()(简单)实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例解题用两个for循环进行遍历查找即可class Solution {public: int strStr(string haystack, string needle) { if(needle.empty()) return 0

2020-10-18 21:04:33 134

原创 leetcode算法题27——移除元素

移除元素(简单)给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例解题这个题好简单,没有啥好说的,定义一个变量来记录移除元素后数组的位数在这里插入代码片,当nums[i]的值与val不同时,就让该变量对应数组位置的值变为nums[i],然后让变量+1,最后返回变量即可。class So

2020-10-18 16:55:53 123

原创 leetcode算法题26——删除排序数组中的重复项

删除排序数组中的重复项(简单)给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例解题采用双指针,让j指向已经覆盖到的没有重复的数组位置,然后移动i,比较i和j对应位置的值,如果不同,则让nums[++j]位置赋为nums[i]即可,最后注意返回值是判断数组是否为空。class Solution {public: int removeD

2020-10-17 16:46:59 148

原创 leetcode算法题25——K个一组翻转链表

K个一组翻转链表(困难)给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例解题思路一:这个题与之前两两交换链表中的节点很像,只是这次不再是相邻结点交换了,但思路都差不多一样,也是用三个指针来做,思路是先让pre指针指向头节点dummy,然后根据k的值对链表遍历,让cur指针指向第k个结点的下一个结点,比如对于-1->1->2->3->4-&

2020-10-17 16:01:16 129

原创 基于RSA和AES的混合加密算法实现----2020年西北工业大学网络空间安全学院夏令营大作业

文章目录一、设计内容二、基本思路实现三、设计原理与流程3.1. 建立socket套接字连接3.1.1建立socket连接原理:3.1.2建立socket连接的流程图如下:3.2. RSA算法实现密钥加密分发3.2.1 RSA算法加密原理:3.2.2 RSA算法加密流程图:3.3. AES算法实现数据加密传输3.3.1 AES算法加密原理:3.3.2 AES算法加密解密流程图:四、实验过程与运行结果4.1. 网络传输连接的建立4.2. RSA算法的实现与加密解密4.3. AES的实现与加密解密4.4. 运行总

2020-10-16 15:33:51 2981 12

原创 leetcode算法题24——两两交换链表中的节点

两两交换链表中的节点(中等)给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例输入:head = [1,2,3,4]输出:[2,1,4,3]输入:head = []输出:[]输入:head = [1]输出:[1]解题思路一:这个题是基本的链表操作题,可以采取迭代的方法实现,先建立 dummy 节点作为头节点,让dummy的next指向head,然后定义cur、p、q三个指针,分别指向头节点和第一第二两

2020-10-16 15:13:22 167

GLUT工具包.zip

配置opengl所需的工具包

2021-04-28

空空如也

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

TA关注的人

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