自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 通信接口:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB

1. UART UART(通用异步收发器)指的是一种物理接口形式(硬件)。 UART是异步,全双工串口总线。它比同步串口复杂很多。有两根线,一根TXD用于发送,一根RXD用于接收。 UART的串行数据传输不需要使用时钟信号来同步传输,而是依赖于发送设备和接收设备之间预定义的配置。 对于发送设备和接收设备来说,两者的串行通信配置应该设置为完全相同。 起始位:表示数据传输的开始,电平逻辑为“0” 。 数据位:可能值有5、6、7、8、9,表示传输这几个bit 位数据。一般取值为8,因为一个A...

2021-07-07 17:24:04 11203

转载 如何快速转载CSDN中的博客

前言   对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然有人会说我们可以收藏博客啊,就不需要转载,(⊙o⊙)… 也对。。 实现   因为我自己当初想转载的时候却不知道该怎么转载,所以学会了之后就把方法写出来,帮助那些想转载却不知道该怎么转载的人(大神勿笑)。   我们首先打开要转载的博客,然后鼠标右键就会出现下面的菜单: ...

2021-06-24 10:13:30 191

原创 【C/C++业务】十六进制与ASCII码互相转换

十六进制转ASCII码unsigned char HexToChar(unsigned char bChar){ if ((bChar >= 0x30) && (bChar <= 0x39)) { bChar -= 0x30; } else if ((bChar >= 0x41) && (bChar <= 0x46)) // 大写 { bChar -= 0x37; }

2021-06-09 18:11:12 3320

原创 【C/C++业务】linux线程退出

线程退出线程退出的核心点就是要保证线程退出的时候不会获取了某些临界资源而无法释放【1】接口一pthread_cancel(pthread_t thread);功能是给线程发送取消信号,使线程从取消点退出。取消点:根据POSIX标准,pthread_join()、pthread_testcancel()、pthread_cond_wait()、pthread_cond_timedwait()、sem_wait()、sigwait()等函数以及read()、write()等会引起阻塞的系统调用都是C

2021-04-14 13:41:19 346

原创 【C/C++业务】cJSON总结与使用

cJSONcJSON的下载和安装源码下载:地址一:git clone https://github.com/DaveGamble/cJSON.git //安装和编译 mkdir build cd build cmake .. make sudo make install地址二:https://sourceforge.net/projects/cjson/解压 unzip XXX.zip将cJson.c,cJSON.h拷贝到自定义的目录编译:

2021-03-02 15:54:47 871

原创 【读书笔记】把时间当做朋友

0 困境越是勤奋的人越输不起,越是输不起的人越勤奋。做人要勤奋,做人要执着,但做事不一定要图快。我们无法管理时间,我们真正能够管理的,是我们自己。只有接受这个简单的事实,才能有解决问题的希望。人们很难接受与已有知识和经验相左的信息和观念,因为一个人已有的知识和观念都是经历过反复筛选的。这本书的主旨非常简单:时间是不可能被管理的。必须开启心智,看清楚,想明⽩:问题出在我们自己身上。而我们所面临的问题,与时间、管理或时间管理都没有多大的关系。解决方案只有⼀个,那...

2021-02-23 22:34:43 893 2

原创 【C/C++业务】多进程同时读写同一个文件

文件锁#include <sys/file.h>int flock(int fd, int operation);参数说明:LOCK_SH 建立共享锁定。多个进程可同时对同一个文件作共享锁定。LOCK_EX 建立互斥锁定。一个文件同时只有一个互斥锁定。LOCK_UN 解除文件锁定状态。LOCK_NB 无法建立锁定时,此操作可不被阻断,马上返回进程。通常与LOCK_SH或LOCK_EX 做OR(|)组合。单一文件无法同时建立共享锁定和互斥锁定,而当使用dup()或fork()时

2021-02-04 11:13:34 8997 2

原创 【C/C++业务】ini配置文件函数解析库

概述ini配置文件有三要素parameters,sections和comments1.parameters指一条配置,就像key = value这样的。2.sectionssections是parameters的集合,sections必须独占一行并且用[]括起来。sections没有明显的结束方式,一个sections的开始就是另一个sections的结束。3.comments指INI配置文件的注释,以 ; 开头。示例; 注释文字[port]Portname=COM4Port=4

2020-12-25 22:26:08 1311

原创 【C/C++业务】UNIX时间戳与正常时间相互转换

正常时间转UNIX时间 与 UNIX时间转正常时间#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#include <string>#include <iostream>using namespace std;//str : 20201030int time2unix(string str){ struct t

2020-11-27 09:08:19 1448

原创 【C++基础】文件流读写操作

向文本文件写入数据int arr[] = {1,2,3,4,5};//定义文件流对象ofstream ofile;//打开文件ofile.open("test.txt", ios::out);if(!ofile){ cerr << "open file fail" << endl; exit(1);}//把内容写入文件for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++){ ofile

2020-10-31 21:17:05 618

原创 【C业务】按行读取文件并获取最大值和次大值

对一个文件实现按行读取数据,获取第二个字段的最大值以及次大值,以及各自对应的编号。测试文件内容如下:b5-00000001-00000303# 6b5-00000001-00000404# 12b5-00000001-00001003# 7b4-00000001-00000904# 91b5-00000001-00000a02# 1实现代码:#include "stdlib.h"#include "stdio.h"#include "string

2020-09-09 09:11:05 500

原创 【笔记总结】C陷阱与缺陷

第一章——词法“陷阱”=是赋值运算符,==是比较运算符;=赋值运算符的优先级要低于逻辑运算符|| ,!=和==的优先级要高于&运算符,==比较运算符的结果只可能是0或者1,不可能小于0字符是用单引号引起的实际代表一个整数,整数值对应于该字符在编译器采用的字符集的序列号如ASCII码;字符串是用双引号引起的实际代表的是一个指向无名数组的起始字符的指针,该数组被双引号之间的字符以及一个'\0'初始化。比如:'yes'表示一个整数值,由y、e、s所代表的整数值按照特定的编译器实现中定义的方式组

2020-08-30 10:06:51 2006

原创 LeetCode 283移动零

LeetCode 283移动零Easy题目简述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。输入:[0,1,0,3,12] 输出:[1,3,12,0,0]思路:双指针两次遍历(覆盖)重新定义用于下标刷新原数组,将非0值按顺序加入数组,最后根据下标值与原始数组长度差值加入0值class Solution {public: void moveZeroes(vecto

2020-06-25 17:56:44 134

原创 LeetCode 696计数二进制子串

LeetCode 696计数二进制子串Easy题目简述:给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。s.length 在1到50,000之间。s 只包含“0”或“1”字符。题目本质: 统计二进制字符串中连续 1 和连续 0 数量相同的子字符串个数输入:“00110011” 输出:6 解释:有6个子串:01,10,01,0011,1100,0011它们具有相同数量的

2020-06-25 17:14:00 138

原创 LeetCode 647回文子串

LeetCode 647回文子串Medium题目简述:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。输入的字符串长度不会超过1000。输入:“abc” 输出:3 解释:三个回文子串: “a”, “b”, “c”.输入:“aaa” 输出:6 解释:6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”.思路:中心扩展法O(n2)遍历字符串每次固定回文子串

2020-06-25 17:13:14 136

原创 LeetCode 205同构字符串

LeetCode 205同构字符串Easy题目简述:给定两个字符串 s和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。假设 s 和 t 具有相同的长度。输入:s = “egg”, t = “add” 输出:true输入:s = “foo”, t = “bar” 输出:false输入:s = “paper”

2020-06-25 17:11:42 175

原创 LeetCode 409最长回文串

LeetCode 409最长回文串Easy题目简述:给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。输入:“abccccdd” 输出:7 解释:构造的最长的回文串是"dccaccd", 它的长度是 7。思路:回文串允许中间的字符单独出现。用哈希表统计每个字符以及出现的次数,如果出现偶数次,则统计累加该次数;如果出现奇数次,则统计累加该次数减1次,并标记中心位。时间复杂度O(n)class

2020-06-25 17:09:40 195

原创 LeetCode242有效的字母异位词

LeetCode242有效的字母异位词Easy题目简述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。输入: s = “anagram”, t = “nagaram” 输出:true输入: s = “rat”, t = “car” 输出:false思路:题目本质是判断两个字符串包含的字符是否完全相同利用哈希表存储出现的字符和对应出现的次数,分别遍历两个字符串,对于 s 往哈希表中增加相应字母的

2020-06-25 17:08:51 117

原创 LeetCode 67二进制求和

LeetCode 67二进制求和Easy题目简述:给两个二进制字符串,返回它们的二进制和。输入为 非空 字符串且只包含数字 1 和 0。输入:a = “11”, b = “1” 输出:“100”输入:a = “1010”, b = “1011” 输出:“10101”思路:与十进制加法相同,两数相加,模拟竖式加法过程从低位到高位(字符串从后往前)逐位相加,如果和大于2,则保留个位数字,同时向前进位1要保证两个数的位数相同,若位数不同,短数最高位用0补足如果最高位有进位,则

2020-06-25 17:06:58 90

原创 LeetCode 901股票价格跨度

LeetCode 901股票价格跨度Medium题目简述:编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。输入:[“StockSpanner”,“next”,“next”,“next”,“next”,

2020-06-24 19:24:02 171

原创 LeetCode 84柱状图中最大矩形

LeetCode 84柱状图中最大矩形Hard题目简述:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。输入:heights = [2,1,5,6,2,3] 输出:10思路:单调栈O(n)找到每个柱子左边和右边离自己最近的比自己低的柱子,夹在中间的矩形面积就为所求,然后用矩形宽度乘以当前柱子高度作为备选答案。即找两边第一个小于它的值维护单调栈,如果当前元素下标i对应的柱子高度比栈顶元素对应

2020-06-24 18:33:51 357

原创 LeetCode 739每日温度

LeetCode 739每日温度Medium题目简述:请根据每日 气温列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。输入:temperatures = [73, 74, 75, 71, 69, 72, 76, 73] 输出:[1, 1, 4, 2, 1, 1, 0, 0]思路:利用递减单调栈找到右边大于栈顶的元素,弹出栈顶直到满足单调递减,同时记录弹出元素与当前i的距离,保存在res数组中即是答案。

2020-06-24 18:30:07 303

原创 LeetCode 503下一个更大元素II

LeetCode 503下一个更大元素IIMedium题目简述:给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。输入:[1,2,1] 输出:[2,-1,2] 解释:第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个 1 的下一个最大的数需要循环搜索,结果也是 2

2020-06-24 18:28:46 117

原创 LeetCode 496下一个更大元素I

LeetCode 496下一个更大元素IEasy题目简述:给定两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。输入:nums1 = [4,1,2], nums2 = [1,3,4,2]. 输出:[-1,3,-1]输入:nums1 =

2020-06-24 18:27:53 127

原创 LeetCode 232用栈实现队列

LeetCode 232用栈实现队列Easy题目简述:使用栈实现队列的下列操作push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。思路:入队实现:无条件将新元素加入栈A出队实现:判断栈B是否为空,如果为空,则将栈A中所有元素push进栈B;如果栈B不为空,栈B直接出栈。class MyQueue {public: /** Initialize your dat

2020-06-23 12:03:03 122

原创 LeetCode 225用队列实现栈

LeetCode 225用队列实现栈Easy题目简述:使用队列实现栈的下列操作push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空思路:双队列实现栈入栈实现:无条件将新元素加入队列A出栈实现:判断队列A中元素的个数是否为1,如果等于1,则出队列,否则将队列A中的元素依次出队列并放入队列B,直到队列A中的元素留下一个,然后队列A出队列,再把队列B中的元素出队列依次放入队列A中。循环往复。class MyS

2020-06-23 12:02:23 148

原创 LeetCode 725分隔链表

LeetCode 725分隔链表Medium题目简述:给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。**这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。**返回一个符合上述规则的链表的列表。root 的长度范围: [0, 1000].输入的每个节点的大小范围:[0, 999].k 的取值范围: [1, 50].

2020-06-22 15:58:52 148

原创 LeetCode 445两数相加II

LeetCode 445两数相加IIMedium题目简述:给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 8 -> 0 -> 7思路:反转链表后从低位到高位依次相加,最后再反转新求和链表并返回结果/** * Defi

2020-06-22 15:03:14 101

原创 LeetCode 328奇偶链表

LeetCode 328奇偶链表Medium题目简述:给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。应当保持奇数节点和偶数节点的相对顺序。链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。输入:1->2->3->4->5->NULL

2020-06-21 12:02:28 125

原创 LeetCode 24两两交换链表中的节点

LeetCode 24两两交换链表中的节点Easy题目简述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。输入:1->2->3->4 输出:2->1->4->3思路:迭代画图理解 p -> a -> b -> c创建虚拟头节点dummy,交换a、b节点的过程,首先将p的下一个指向b,其次a的下一个指向b的下一个,然后b的下一个指向a,最后将p的位置向

2020-06-21 12:01:50 111

原创 LeetCode 83删除排序链表中的重复元素

LeetCode 83删除排序链表中的重复元素Easy题目简述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。输入: 1->1->2 输出:1->2输入:1->1->2->3->3 输出:1->2->3思路:从前往后扫描整个链表,如果一个节点和其后继节点相同,则直接删除后继节点,否则指针移动到后继节点。/** * Definition for sing

2020-06-21 12:00:42 107

原创 LeetCode 160相交链表

LeetCode 160相交链表Easy题目简述:编写一个程序,找到两个单链表相交的起始节点。如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。输入:listA = [4,1,8,4,5] listB = [5,0,1,8,4,5] 输出:8输入:listA = [0,9,1,2,4] listB = [3,2,4] 输出

2020-06-20 16:26:29 105

原创 LeetCode 128最长连续序列

LeetCode 128最长连续序列Hard题目简述:给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。输入:[100, 4, 200, 1, 3, 2] 输出:4 解释:最长连续序列是 [1, 2, 3, 4]思路:双指针算法首先对未排序的数组进行排序,并将双指针都指向开始位置只要r指向的数字等于r-1指向的数字或者比r-1指向的数字大1,那么r指针就向右移动扩大窗口,在移动过程中,当r指向的数字等于r-1指向的数字时,长度不变;当r指向的数字大r-1

2020-06-20 15:26:40 120

原创 LeetCode 594最长和谐子序列

LeetCode 594最长和谐子序列Easy题目简述:和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。输入:[1,3,2,2,5,2,3,7] 输出:5 解释:最长的和谐数组是:[3,2,2,2,3].思路:先用哈希表存储每个数字出现的次数,然后对于哈希表里面的每个键,查看是否存在(该键+1),如果存在,计算该和谐子序列是否为最长的序列。class Solution {public: int

2020-06-19 15:52:10 174

原创 LeetCode 217存在重复元素

LeetCode 217存在重复元素题目简述:给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。输入:[1,2,3,1] 输出:true输入:[1,2,3,4] 输出:false思路:哈希表存储遍历到的每个数组元素并记录其出现次数class Solution {public: bool containsDuplicate(vector<int&g

2020-06-19 15:13:54 185

原创 LeetCode 1277统计全为1的正方形矩阵

LeetCode 1277统计全为1的正方形矩阵题目简述:给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。1 <= arr.length <= 3001 <= arr[0].length <= 3000 <= arr[i][j] <= 1示例:输入:[011111110111]\left[\begin{matrix}0 & 1 & 1 & 1 \\1

2020-06-18 14:00:31 319

原创 LeetCode 221最大正方形

LeetCode 221最大正方形题目简述:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:[10100101111111110010]\left[\begin{matrix}1 & 0 & 1 & 0 & 0 \\1 & 0 & 1 & 1 & 1 \\1 & 1 & 1 & 1 & 1\\1 & 0 & 0 & 1 &am

2020-06-18 13:59:16 175

原创 LeetCode 118杨辉三角

LeetCode 118杨辉三角题目简述:给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。输入:5 输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]思路:递推,时间复杂度O(n2)定义答案,用第一行的1初始化,然后从上倒下依次计算每一行首先将要计算的当前每一行首部的1单独加入数组,然后依次利用上一行的数组计算中间的数

2020-06-17 23:11:42 132

原创 LeetCode 300最长上升子序列

LeetCode 300最长上升子序列题目简述:给定一个无序的整数数组,找到其中最长上升子序列的长度。输入:[10,9,2,5,3,7,101,18] 输入:4 解释:最长的上升子序列是 [2,3,7,101],它的长度是 4。思路:动态规划状态表示:f[i]表示所有以i结尾的上升子序列状态属性:上升子序列的长度最大值状态计算:最后一个数都是第i个数,倒数第二个数为分类依据,可以分成i类,按照倒数第二个数分别依次是null、0、1、2......i-1分类,再求倒数第二个数

2020-06-17 22:22:50 133

原创 LeetCode 198打家劫舍

LeetCode 198打家劫舍题目简述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。0 <= nums.length <= 1000 <= nums[i] <= 400输入:[1,2,3,1] 输出:4 解

2020-06-15 17:08:07 145

空空如也

空空如也

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

TA关注的人

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