自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [计算机网络]IP、UDP、TCP和HTTP报文格式总结

IPIP数据报格式IP数据报分为两个部分,首部和数据部分(TCP、UDP),首部分为固定部分和可变部分。IP数据报分片IPv4IPv6UDPTCPHTTP

2021-08-13 09:58:53 842

原创 [计算机网络]TCP特点及TCP报文段首部格式(图解)

2021-07-08 21:27:09 191 1

原创 [C++]七大经典排序算法详解(代码实现+解析)

各种排序算法动图解析请参考各种排序算法复杂度对比冒泡排序法冒泡排序是所有排序算法中相对简单且容易理解的算法,它的核心思想:通过for循环不断遍历需要排序的元素,依次比较相邻的两个元素,若不满足指定的顺序(可以从大到小排序,也可以反过来),就交换两个元素,直至完成排序。1.比较相邻的元素。如果第一个比第二个大,就交换它们两个;2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;3.针对所有的元素重复以上的步骤,除了最后一个;4.重复步骤1~3,直

2021-03-17 11:06:15 3523 1

原创 [C++]Leetcode超高效刷题顺序及题目详解笔记(持续更新中)

一.引言博主最近在LeetCode上用C++练习。一路走来踩过一些坑,做了一些总结和笔记,分享给需要的人。LeetCode网址:https://leetcode.com/LeetCode中文版:https://leetcode-cn.com/二.刷题指南LeetCode 是一个非常棒的平台,收集了许多公司的面试题目。相对其他平台而言,有着下面的几个优点:题目全部来自业内大公司的真实面试不用处理输入输出精力全放在解决具体问题上题目有丰富的讨论可以参考别人的思路精确了解自己代码在所有提交代码中

2020-09-27 13:10:53 14112 1

原创 C++中1e9(初始化、无穷大)解析

(对新手友好,简单易于理解)**前言:**C++初学者遇到1e9时,可能会很好奇,这个表示什么意思?有什么用?遇到的一些问题为什么要这么处理?以下是个人的一些理解。1.什么是1e9通常来说这是计算机中一种科学计数法的表示形式:1e9 = 110^9 = 1000000000;例如:9e8 = 910^8 = 900000000;e表示10,e后面的数字表示次方,e的多少次方。2.C++中的1e9int num1 = 1e9;int num1 = 1e10;输出的结果为:num1 = 1

2020-08-12 16:11:42 41643 4

原创 Segmentation-baseddeep-learningapproachforsurface-defect detection

**前言:**这篇文章提出了一种**基于分割的深度学习体系结构**,该体系和结构旨在**检测和分割表面异常**。 由于对图像存在的异常进行分类比对缺陷进行精确定位更为重要,所以这篇文章将表面异常检测进一步归为二进制图像分类问题。为了克服在深度学习中出现的少量样本的问题,文章采用了**两阶段的设计**。 这篇文章主要优势为:只需要25-30个有缺陷的样本就可完成分类,所用样本极少。它提出了一个two-stage的模型,具有精度高、所需标注样本少、计算量小的特性。并且其提供了表面缺陷的...

2020-08-05 14:16:40 2579

原创 Matlab中edge函数的使用方法

引言:Matlab图像处理中edge函数通常用于提取边缘。BW = edge(I)返回包含1的二进制图像BW,其中函数在输入图像I中找到边缘,而在其他位置找到0。默认情况下,edge使用Sobel边缘检测方法。BW = edge(I,method)使用方法指定的边缘检测算法检测图像I中的边缘BW = edge(I,method,threshold)返回所有比阈值强的边缘。BW = edge...

2020-04-26 17:54:48 45756 1

原创 [C++]LeetCode714

714 . 买卖股票的最佳时机含手续费题目:给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。示例 1:输入: prices = [1, 3, 2, 8, 4, 9], fee = 2输出: 8解

2022-01-06 16:53:17 328

原创 [C++]LeetCode123

123. 买卖股票的最佳时机 III题目:给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3 。随后,在第 7 天(股票价格 = 1)的时候买

2022-01-06 16:52:54 293

原创 [C++]Leetcode188

188. 买卖股票的最佳时机 IV题目:给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入:k = 2, prices = [2,4,1]输出:2解释:在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 =

2022-01-06 16:52:02 312

原创 [C++]LeetCode309

309. 最佳买卖股票时机含冷冻期题目:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]class Solution {public:

2022-01-06 16:51:38 110

原创 [C++]LeetCode260. 只出现一次的数字 III

260. 只出现一次的数字 III题目:给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。示例 :输入: [1,2,1,3,2,5]输出: [3,5]思路:遍历nums,通过异或操作,得到结果 s = a ^ b(a, b为恰好只出现一次的元素) 保留s的最后为1的那位保留,其余位置设置为0 ,存入在 k 里面 (如:k = 0000 0100) 3.把 k 和nums中的每一个元素进行 & 操作,可以把nums中所有元素,划分

2022-01-06 16:50:24 141

原创 [C++]LeetCode231. 2的幂

231. 2的幂思路:2的幂:n & (n-1) 为 0题目:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false思路:那么对于所有2的幂,我们将它与它-1后的数做一次与运算,就会将其唯一一位1消去,最后等于0。class Solution {public: bool isPowerOfTwo(int

2022-01-06 16:49:57 166

原创 [C++]LeetCode342. 4的幂

342. 4的幂题目:给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x示例 1:输入:n = 16输出:true示例 2:输入:n = 5输出:false示例 3:输入:n = 1输出:true思路:4的次方数一定是2的次方数,但2的次方数不一定是4的次方数,通过4的次方数二进制可以发现4的次方数二进制中1只出现在奇数位。因此可以通过于奇数位都是1,偶数为都是

2022-01-06 16:49:32 177

原创 [C++]LeetCode371. 两整数之和

371. 两整数之和思路:a ^ b可以得到两数相加不进位的加法结果 (a & b) << 1可以得到两数相加产生的进位。While循环条件为:进位标志位是否为空题目:不使用运算符 + 和 - ,计算两整数 a 、b 之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1解题思路:a ^ b可以得到两数相加不进位的加法结果(a & b) << 1可以得到两数相加产生的进位将不进位的加法结

2022-01-06 16:49:12 194

原创 [C++]LeetCode338. 比特位计数

338. 比特位计数思路:二进数不断右移(得到范围里的每个数字),并且与1相“与”题目:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1

2022-01-06 16:48:51 158 1

原创 [C++]LeetCode318. 最大单词长度乘积

318. 最大单词长度乘积题目:给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。示例 1:输入: [“abcw”,“baz”,“foo”,“bar”,“xtfn”,“abcdef”]输出: 16解释: 这两个单词为 “abcw”, “xtfn”。示例 2:输入: [“a”,“ab”,“abc”,“d”,“cd”,“bcd”,“a

2021-12-17 15:59:48 142

原创 [C++]LeetCode476. 数字的补数

476. 数字的补数思路:全1的数字与原二进制数异或,即为取反操作。题目:给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。示例 1:输入: 5 输出: 2解释: 5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。示例 2:输入: 1 输出: 0解释: 1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。class Solution {public: int findComplement(int num) {

2021-12-17 15:59:37 180

原创 [C++]LeetCode693. 交替位二进制数

693. 交替位二进制数题目:给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。示例 1:输入:n = 5输出:true解释:5 的二进制表示是:101示例 2:输入:n = 7输出:false解释:7 的二进制表示是:111.示例 3:输入:n = 11输出:false解释:11 的二进制表示是:1011.示例 4:输入:n = 10输出:true解释:10 的二进制表示是:1010.class Solut

2021-12-17 15:59:26 160

原创 [C++]LeetCode190. 颠倒二进制位

190. 颠倒二进制位类似于十进制数的颠倒题目:颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。示例 2:

2021-12-17 15:59:16 122

原创 [C++]LeetCode204.计数质数

204.计数质数思路:初始化所有质数都为0,for循环遍历所有数,如果当前数为true,count累加并排除掉所有当前数的倍数。统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0解法一:超时 暴力解法(对所有小于自己的数取余不为零,则为质数)class Solution {public: int coun

2021-12-17 15:58:21 153

原创 [C++]LeetCode72. 编辑距离

72. 编辑距离题目:给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符、删除一个字符、替换一个字符示例 1:输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros (删除 ‘e’)示例 2:输入:word1 =

2021-12-17 15:58:12 81

原创 [C++]LeetCode583. 两个字符串的删除操作

583. 两个字符串的删除操作给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。示例:输入: “sea”, “eat”输出: 2解释: 第一步将"sea"变为"ea",第二步将"eat"变为"ea"等价于求最长公共子序列class Solution {public: int minDistance(string word1, string word2) { int n1= wor

2021-12-17 15:58:02 152

原创 [C++]LeetCode416.分割等和子集

416.分割等和子集题目:给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集class Solution {public: bool canParti

2021-12-17 15:57:41 155

原创 [C++]LeetCode1143. 最长公共子序列

1143. 最长公共子序列题目:给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:输入:text1 = “abcd

2021-12-17 15:57:31 116

原创 [C++]LeetCode64.最小路径和

64.最小路径和题目:给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。class Solution {public: int minPathSum(vector<vector<int>>& grid) { int m

2021-12-17 15:57:09 124

原创 [C++]LeetCode268. 丢失的数字

268. 丢失的数字题目:给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?示例 1:输入:nums = [3,0,1]输出:2解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。示例 2:输入:nums = [0,1]输出:2解释:n = 2,因为有 2 个数字,所以所有的数字都

2021-12-14 17:12:28 501

原创 [C++]LeetCode136. 只出现一次的数字

只出现一次的数字思路:相同的值异或为0题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路:假设数组中有 2m+12m+1 个数,其中有 mm 个数各出现两次,一个数出现一次。令a1、a2、…、am为出现两次的m个数,am+1为出现一次的数。根据性质 3,数组中的全.

2021-12-14 17:12:18 139

原创 [C++]LeetCode461. 汉明距离

461. 汉明距离思路:先进行‘与’操作,再通过while循环来累加结果题目:两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0)↑ ↑上面的箭头指出了对应二进制位不同的位置。思路:位操作是效率最高的汉明距离的实质是把两个32位数里的相同位置处的不同数字的个数,数出来

2021-12-14 17:12:06 259

原创 [C++]LeetCode169.多数元素

169.多数元素题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1: 输入: [3,2,3] 输出: 3示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2class Solution {public: int majorityElement(vector<int>& nums) { unordered_

2021-12-14 17:11:43 108

原创 [C++]LeetCode462. 最少移动次数使数组元素相等 II

462. 最少移动次数使数组元素相等 II题目:给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1。 您可以假设数组的长度最多为10000。例如:输入:[1,2,3]输出:2说明:只有两个动作是必要的(记得每一步仅可使其中一个元素加1或减1):[1,2,3] => [2,2,3] => [2,2,2]class Solution {public: int minMoves2(vector<int&gt

2021-12-14 17:11:29 284

原创 [C++]LeetCode67. 二进制求和

67. 二进制求和题目:给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”class Solution {public: string addBinary(string a, string b) { int asize = a.size(); int

2021-12-14 16:38:12 105

原创 [C++]LeetCode172. 阶乘后的零

172. 阶乘后的零题目:给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.解法一:N!有多少个后缀0,即N!有多少个质因数5。N!有多少个质因数5,即N可以划分成多少组5个数字一组,加上划分成多少组25个数字一组,加上划分多少组成125个数字一组,等等。即Ans = N/5 + N/(5^2) + N/(5^3) + …class So

2021-12-14 16:38:00 101

原创 [C++]LeetCode168. Excel表列名称

168. Excel表列名称题目:给定一个正整数,返回它在 Excel 表中相对应的列名称。例如,1 -> A2 -> B3 -> C…26 -> Z27 -> AA28 -> AB…示例 1:输入: 1输出: “A”示例 2:输入: 28输出: “AB”示例 3:输入: 701输出: “ZY”class Solution {public: string convertToTitle(int n) { st

2021-12-14 16:37:50 155

原创 [C++]LeetCode405. 数字转换为十六进制数

405. 数字转换为十六进制数题目:给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。示例 1:输入:26输出:“1a”示例 2:输入:-1输出:

2021-12-14 16:37:34 183

原创 [C++]LeetCode504. 七进制数

504. 七进制数题目:给定一个整数,将其转化为7进制,并以字符串形式输出。示例 1:输入: 100输出: “202”示例 2:输入: -7输出: “-10”class Solution {public: string convertToBase7(int num) { string s; int flag = 0; if(num < 0) { num = 0 - num;

2021-12-14 16:37:21 81

原创 [C++]LeetCode376.摆动序列

376.摆动序列题目:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子序列的长度。 通过从原始序列中删除一

2021-12-06 16:25:00 187

原创 [C++]LeetCode646.最长数对链

646.最长数对链题目:给出 n 个数对。 在每一个数对中,第一个数字总是比第二个数字小。现在,我们定义一种跟随关系,当且仅当 b < c 时,数对(c, d) 才可以跟在 (a, b) 后面。我们用这种形式来构造一个数对链。给定一个对数集合,找出能够形成的最长数对链的长度。你不需要用到所有的数对,你可以以任何顺序选择其中的一些数对来构造。示例 :输入: [[1,2], [2,3], [3,4]]输出: 2解释: 最长的数对链是 [1,2] -> [3,4]class Solut

2021-12-06 16:24:48 92

原创 [C++]LeetCode300.最长上升子序列

300.最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。class Solution {public: int lengthOfLIS(vector<int>& nums) { int

2021-12-06 16:24:36 95

原创 [C++]LeetCode91.解码方法

91.解码方法题目:一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。题目数据保证答案肯定是一个 32 位的整数示例 1:输入:“12”输出:2解释:它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入:“226”输出:3解释:它可以解码为 “BZ” (2 26), “VF” (22 6), 或者 “BBF” (2 2 6) 。示例 3

2021-12-06 16:24:21 111

空空如也

空空如也

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

TA关注的人

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