![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
幸幸有狗
这个作者很懒,什么都没留下…
展开
-
[Stm32]小车项目(三)-OLED的开发和笔记
通过前面的介绍已经可以正常的驱动小车进行各个方向的行走了,那么为了方便我们后面的开发方便,比如距离的显示、行进方向及状态的显示等,那么接下来就具体讲解下OLED的软件开发这部分的功能·目录1、OLED的驱动及开发1.1 OLED.c1.2 OLED.h2、OLED驱动的经验1、OLED的驱动及开发关于OLED的基本原理这里都不在赘述了,直接上干货比较实在。同样的进行了对OLED代码进行了封装,这都是为了我们后面做项目方便移植及修改。OLED一般分为SPI驱动(7线或6线),I原创 2022-02-26 19:24:35 · 6408 阅读 · 0 评论 -
默认命名空间namespace(c++)
1、默认命名空间(1)又叫全局命名空间(2)默认命名空间引用其他命名空间方法:之前三种namespace调用方法(3)默认命名空间引用自己的方法:函数名称加(),例如:func();(4)其他命名空间引用默认命名空间中的方法::f();#include <iostream>using namespace std;void func_default(void);namespace test{ void func1(void) { ::func_defaul原创 2021-09-08 18:14:00 · 878 阅读 · 0 评论 -
namespace(C++)三种调用方法
1、命名空间namespace2、namespace的关键点有两个: (1)、解决全局变量还有函数名的冲突问题 (2)、如何访问另一个文件的命名空间下面是test1.cpp#include <iostream>using namespace std;/*******************命令空间定义*****************/namespace test{ void func1(void) { cout<< "in test...原创 2021-09-08 17:41:04 · 2889 阅读 · 0 评论 -
动态规划简单的四步骤
//第一步确定状态:假设就是想要求得最后的amount是11,则要算得最后一枚硬币面值为j,则(11-j);//第二步转移方程:假设i是要凑成的金额;则f[i]=min{f[i-1]+1,f[i-2]+1,f[i-3]+1}这里算得的是amount;//第三部初始化条件和边界情况:1、首先如果f[i-1]小于0,则都返回正无穷,f[0]=0(算不出来的才要初始化);边界情况a[j]<=i才可以进行计算//第四部计算顺序f[1].....f[a...原创 2021-04-06 16:24:25 · 2434 阅读 · 0 评论 -
<leetcode>34. 在排序数组中查找元素的第一个和最后一个位置
这里r-l+1,是因为两个值的时候,除以2会停在左边,l = mid ,会造成死循环;class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { if (nums.empty()) return vector<int>{-1, -1}; ...原创 2021-04-03 21:01:33 · 74 阅读 · 0 评论 -
<leetcode>76最小覆盖字符串(滑动窗口)
题目描述给定两个字符串 S 和 T,求 S 中包含 T 所有字符的最短连续子字符串的长度,同时要求时间复杂度不得超过 O„n”。输入输出样例输入是两个字符串 S 和 T,输出是一个 S 字符串的子串。Input: S = "ADOBECODEBANC", T = "ABC"Output: "BANC"在这个样例中, S 中同时包含一个 A、一个 B、一个 C 的最短子字符串是“BANC”。题解本题使用滑动窗口求解,即两个指针 l 和 r 都是从最左端向最右端移动,且...原创 2021-04-03 13:24:08 · 265 阅读 · 0 评论 -
<leetcode>142 环形链表
题目描述给定一个链表,如果有环路,找出环路的开始点。3.5 滑动窗口 – 11/143 –输入输出样例输入是一个链表,输出是链表的一个节点。如果没有环路,返回一个空指针。图 3.1: 题目 142 - 输入样例在这个样例中,值为 2 的节点即为环路的开始点。如果没有特殊说明, LeetCode 采用如下的数据结构表示链表。struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), n...原创 2021-04-03 10:34:43 · 203 阅读 · 0 评论 -
<leetcode> 88 合并有序数组
题目描述给定两个有序数组,把两个数组合并为一个。输入输出样例输入是两个数组和它们分别的长度 m 和 n。其中第一个数组的长度被延长至 m + n,多出的n 位被 0 填补。题目要求把第二个数组归并到第一个数组上,不需要开辟额外空间。Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3Output: nums1 = [1,2,2,3,5,6]题解因为这两个数组已经排好序,我们可以把两个指针...原创 2021-04-03 09:47:46 · 104 阅读 · 0 评论 -
<leetcode>167两数之和
3.1 算法解释双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。也可以延伸到多个数组的多个指针。若两个指针指向同一数组,遍历方向相同且不会相交,则也称为滑动窗口(两个指针包围的区域即为当前的窗口),经常用于区间搜索。若两个指针指向同一数组,但是遍历方向相反,则可以用来进行搜索,待搜索的数组往往是排好序的。对于 C++ 语言,指针还可以玩出很多新的花样。一些常见的关于指针的操作如下。 指针与常量int x;int * p1 = &x...原创 2021-04-03 09:11:33 · 82 阅读 · 0 评论 -
<leetcode> 简单的冒泡排序算法
#include<iostream>#include<vector>using namespace std;void printArray(vector<int>&v)//用来打印排序的函数{ for(int i =0;i<v.size();i++) { cout<<" "<<v[i]; }}void bubble_sort(vector<int>&nu...原创 2021-04-03 08:35:27 · 125 阅读 · 0 评论 -
<leetcode>快速排序算法
#include<iostream>#include<vector>using namespace std;void printVector(vector<int>& v) {for (v...原创 2021-04-02 21:39:23 · 113 阅读 · 0 评论 -
<leecode> 435 无重叠区间
[](int x){return x %3 == 0;}//这与f3()的函数定义很像:bool f3(int x){return x % 3 == 0;}题解求最少的移除区间个数,等价于尽量多保留不重叠的区间。在选择要保留区间时,区间的结尾十分重要:选择的区间结尾越小,余留给其它区间的空间就越大,就越能保留更多的区间。因此,我们采取的贪心策略为,优先保留结尾小且不相交的区间。具体实现方法为,先把区间按照结尾的大小进行增序排序,每次选择结尾最小且和前一个选...原创 2021-04-02 20:19:19 · 91 阅读 · 0 评论 -
135 分发糖果
题解 做完了题目 455,你会不会认为存在比较关系的贪心策略一定需要排序或是选择?虽然这一道题也是运用贪心策略,但我们只需要简单的两次遍历即可:把所有孩子的糖果数初始化为 1;先从左往右遍历一遍,如果右边孩子的评分比左边的高,则右边孩子的糖果数更新为左边孩子的糖果数加 1;再从右往左遍历一遍,如果左边孩子的评分比右边的高,且左边孩子当前的糖果数不大于右边孩子的糖果数,则左边孩子的糖果数更新为右边孩子的糖果数加 1。通过这两次遍历,分配的糖果就可以满足题目要求了。这里的贪心策略即为,在每次遍..原创 2021-04-02 18:55:48 · 59 阅读 · 0 评论 -
455 分饼干
2.1 算法解释顾名思义, 贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。举一个最简单的例子:小明和小王喜欢吃苹果,小明可以吃五个,小王可以吃三个。已知苹果园里有吃不完的苹果,求小明和小王一共最多吃多少个苹果。在这个例子中,我们可以选用的贪心策略为,每个人吃自己能吃的最多数量的苹果,这在每个人身上都是局部最优的。又因为全局结果是局部结果的简单求和,且局部结果互不相干,因此局部最优的策略也同样是全局最优的策略。2.2 分配问题455. Assi原创 2021-04-02 18:13:00 · 122 阅读 · 0 评论