- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 【刷题笔记12】算法反射弧
看到一道题,第一反应想到用什么方法解题?若dfs超时,可考虑动态规划,剪枝,可考虑是否可以二分答案。递归改动态规划,几个可变参数维护几维数组unordered_mp :哈希,key-val 的类型可以有很多种,key也可以是指针。哪些编码习惯,能降低时间复杂度vector的构造比 pair的耗时。queue<pair<int, int>> 时间复杂度优于queue<vector>new 的操作很耗时,程序代码不能循环newunordered_map&
2021-08-18 22:48:36 179
原创 【刷题笔记11】滑动窗口-双指针
// 904.水果成篮int totalFruit(vector<int>& tree, int K) { int n = tree.size(); int left = 0; int right = 0; vector<int> mp(n, 0); int ans = INT_MIN; int count = 0; while (right < n) { if (mp[tree[rig
2021-07-22 00:05:16 166
原创 【刷题笔记10】博弈、记忆化DFS、DP
// 小技巧:二进制位标记某个数是否被选择。(<32位的时候)// state = state | (1 << i)// (state & (1 << i)) != 0 // 表示位标记// 464. 我能赢吗? https://leetcode-cn.com/problems/can-i-win/// 记忆化dfs、博弈class Solution {public: map<pair<int, int>, bool> mp;
2021-07-16 23:59:15 185
原创 【刷题笔记9】拓扑排序 - 有向无环图
拓扑排序拓扑序:在图中从顶点u到顶点v有一条有向路径,则顶点u一定排在顶点v之前。满足这样的条件的顶点序列称为一个拓扑序。有向无环图:DAG - Directed Acyclic Graph入度:有向图的某个顶点作为终点的次数和。出度:有向图的某个顶点作为起点的次数和。class Solution {public: vector<int> findOrder(int numCourses, vector<vector<int>>& prereq
2021-07-13 00:05:50 198
原创 【刷题笔记8】二叉树 - DFS, 有些问题辅助使用map/set/vector
二叉树二叉树,优先想到DFS。可能遍历存储所有路径,可使用set/map存储需要删除的节点。二叉查找树:(Binary Search Tree) 二叉搜索树定义:任意节点的左子树中的键值都 小于 此节点的键值。任意节点的右子树中的键值都 大于 此节点的键值。任意节点的左子树和右子树都是二叉搜索树。// 判断是否是二叉查找树?bool IsBST(TreeNode* node, int minVal, int maxVal){ if (node == nullptr) {
2021-06-17 00:30:03 82
原创 【刷题笔记7】区间问题 - 覆盖,相交,不相交
区间问题 [start, end] 排序,start升序,end降序。 画图。 区间有几种情况:覆盖,相交、不相交 判断两个区间是否相交? [s1,e1] [s2, e2]int start = max(s1, e1);int end = min(s2, e2);if (start <= end) { // 有交集}// 1288.删除被覆盖区间class Solution {public: static bool cm...
2021-06-09 00:02:50 167
原创 【刷题笔记5】二分查找 - 注意边界值、数组有序
刷题笔记: 二分查找注意计算mid时的整形溢出边界值判断数组必须是有序的1. 基本二分查找局限性:无法查找target的左右侧边界int binarySearch(vector<int>& nums, int target){ int left = 0; int right = nums.size() - 1; while (left <= right) { int mid = (right - left) / 2 + left; if (nums[
2021-05-11 23:45:02 262
原创 【刷题笔记4】并查集 - 实现并查集类,求解连通性问题
并查集class UnionFind{private: vector<int> parent; vector<int> rank; int count; // 省份个数public: UnionFind(unsigned int size) { for (int i = 0; i < size; i++) { parent.push_back(i); // 自己的祖先是自己
2021-05-08 00:10:58 142
原创 【刷题笔记3】DFS-递归,遍历,求所有可能的解
DFS核心思想:递归数据结构:栈// dfs模板void dfs(路径,选择列表) { if (终止条件) { 存放结果; // 若只需要一个解,只需要检查dfs的返回值,直接返回即可 return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { // 如上下左右等,(有时,需按照题意,构造选择的集合) // 排除不合法的选择; // 做选择;同时将该选择从选择列表中移除
2021-05-06 23:44:34 296
原创 【刷题笔记6】前缀和 + 差分数组
前缀和的应用场景是,需要对某个区间[i…j]频繁查询累计和,避免每次查询都遍历这个区间。差分数组的应用场景是,需要对某个区间[i…j]频繁地加或减某一值,避免每次都遍历这个区间。前缀和:sums[i] = sums[ i - 1] + nums[i];差分数组:diff[i] = nums[i] - nums[i - 1]; 由diff反推前数组。eg, 要对[i,...,j]区间内的元素整体+3,则令diff[i] += 3, diff[j + 1] -= 3即可,复杂度O(1)。// 和为K
2021-03-17 23:59:01 176
原创 【刷题笔记1】单调栈 - 定位边界问题,快速寻找边界
单调栈:定位边界问题,快速寻找边界0 概念单调栈分为单调递增栈和单调递减栈单调递增栈即栈内元素保持单调递增的栈单调递减栈即栈内元素保持单调递减的栈1 操作规则(单调递增栈)如果新的元素比栈顶元素大,就入栈如果新的元素较小,那就一直把栈内元素弹出来,直到栈顶比新元素小加入这样一个规则之后,会有什么效果:栈内的元素是递增的当元素出栈时,说明这个新元素是出栈元素向后找第一个比其小的元素stack<int> st;for(int i = 0; i < nums
2020-11-29 18:34:40 162
原创 音视频封装 -- ffmpeg初识
1 FFmpeg 音视频编解码开源项目,堪称自由软件中最完备的一套多媒体支持库,几乎实现了所有当下常见的数据封装格式、多媒体传输协议以及音视频编解码器。FF: Fast Forward深入学习可参考雷神博客:http://blog.csdn.net/leixiaohua1020/article/details/15811977/2 FFMPEG从功能上划分为几个模块:核心工具(libavutils):提供公用的功能函数媒体格式(libavformat):实现多媒体文件的读包和写包编解码(l
2020-07-29 23:07:03 536
原创 设计原则和设计模式
定个小目标:一天一种设计模式 ------ 设计原则和设计模式【设计原则】【六大设计原则】 SOLID,稳定的。1、单一职责原则(Single Responsibility Principle - SRP) 一个类只负责一个功能领域中的相应职责,只有一个引起它变化的原因。 eg.业务对象,业务逻辑拆分。可以看做是低耦合,高内聚在面向对象原则上的引申。...
2019-12-23 22:27:13 266
原创 工厂模式(Factory Pattern)
定个小目标:一天一种设计模式 ------ 工厂模式(Factory Pattern)【什么是工厂模式】 工厂模式是设计模式中最常用的。主要是在创建对象的外面封装了一层。将具体过程(new 关键字和具体的构造器(初始化过程))隐藏起来。用一个工厂方法代替,暴露给用户。 工厂模式的结构是:用一个方法来代替new关键字和构造器。【为什么使用工厂...
2019-12-12 11:32:06 136
原创 单例模式(Singleton Pattern)
定个小目标:一天一种设计模式 ------ 单例模式(Singleton Pattern)【什么是单例模式】单例模式(Singleton Pattern)是设计模式中最简单的,主要是确保该类只有一个实例。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。【为什么使用单例模式】 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 ...
2019-12-04 22:55:20 182
原创 装饰器模式(Decorator Pattern)
定个小目标:一天一种设计模式 ---装饰器模式(Decorator Pattern)【什么是装饰器模式】装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。通俗来讲,就是对已经存在的某些类进行装饰,以此来扩展一些功能。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。【为什么使用装饰器模式】通常给对象添加功能有几种方式...
2019-12-03 23:54:10 258
原创 Audio Framework(1):框架结构概述
这章主要记录Android Audio系统的框架。参考:https://source.android.google.cn/devices/audio一、Audio Framework模块结构图1、Application层 音频相关的应用:音乐播放器,电话,声音设置, 播放器,录音器等。2、Frameworks Java层 Extractor...
2019-05-09 09:45:36 3327
原创 Android 自带自动化测试工具:monkey & monkeyrunner. -- Android Oreo
android 平台自带自动化测试工具:monkey & monkeyrunner.【monkey】Monkey工具直接运行在设备或模拟器的adb shell中,生成用户或系统的伪随机事件流(点击屏幕、滑动屏幕、各种无力按键等)。主要用于压力和可靠性测试,可以在规定的范围内,任意随机触发各种事件,来验证App的抗压性和稳定性。像猴子一样,疯狂的输入各种随机事件到设备上,像猴子一样疯狂的点击...
2018-04-18 17:59:00 610
原创 Android消息处理机制 -- native Handler -- Android Oreo
为什么使用handler?1、从UI的层面来看:屏幕的刷新频率是60HZ,约16ms 一次。为了保证UI的流畅性,不阻塞,需要耗时的操作异步执行,然后通过handler异步更新UI主线程。2、Android中的UI控件不是线程安全的,因此在多线程并发访问UI的时候会导致UI控件处于不可预期的状态。Google不通过锁的机制来处理这个问题是因为:引入锁会导致UI的操作变得复杂,导致UI的运行效率降低...
2018-04-18 17:36:52 824
原创 OpenMax总结(三)OpenMAX IL Control API
【OpenMAX IL Control API】OpenMax IL层的接口定义由若干个头文件组成,这也是实现它需要实现的内容,它们的基本描述如下所示。OMX_Types.h:OpenMax Il的数据类型定义OMX_Core.h:OpenMax IL核心的APIOMX_Component.h:OpenMax IL 组件相关的 APIOMX_Audio.h:音频相关的常量和数据结构OMX_IVCo...
2018-03-23 17:58:27 802
原创 OpenMax总结(二)OpenMax IL层结构
更详细内容见官方spechttps://www.khronos.org/openmax/【OpenMax IL层结构】图中的虚线中的内容是OpenMax IL层的内容,其主要实现了OpenMax IL中的各个组件(Component)。对下层,OpenMax IL可以调用OpenMax DL层的接口,也可以直接调用各种Codec实现。对上层,OpenMax IL可以给OpenMax AL 层等框架...
2018-03-23 17:40:15 2104 1
原创 OpenMAX总结(一)框架结构
【OpenMax简介】开放多媒体加速层,Open Media Acceleration,缩写OpenMAX。一个不需要授权、跨平台的软件抽象层,以C语言实现的软件接口,用来处理多媒体。它是由Khronos Group(也是OpenGL的制定者)提出的标准,也由他们来维持,目标在于创造一个统一的接口,加速大量多媒体资料的处理。【OpenMax作用】1、加速跨OS和silicon平台的多媒体组件的开发...
2018-03-23 17:14:01 2072
原创 Android N MediaPlayer(一) : MediaMetadataRetriever分析
MediaMetadataRetriever类的创建flow分析 用途:元数据(MetaData)获取 获取多媒体文件中的元信息(metadata),eg. Album、Artist、Title、Year等信息,显示在UI界面。
2017-08-16 17:21:19 2223
原创 DVB-IOPlugin & InputPlugin
Input & IO Plugin一、Video Playback OverView:Video Playback OverView: an example playback flow under StreamClass architecture. Flow Manager:流管理器是一个类,它作为过滤器和应用程序之间的网关。 The Flow Ma
2016-08-26 14:37:24 775
原创 DVB SI入门(一)—概念理解
DVB SI入门(一)——概念理解 一、数字电视和模拟电视节目选择的方式: 模拟电视:一个频道(一种频率)对应一个节目。 数字电视:一个物理频道(频率)对应一路码流(含多路节目),使用复用技术即可做到。要观看其中的某一路节目,还必须从传输流中提出该路节目的压缩包,然后再进行解码。 二、PSI与SI PSI:在mpeg-2的传输流(Ts
2016-08-25 17:00:35 1645
原创 Shell学习笔记
好后悔在学校里,大把时间浪费掉,现在用到了,才现学,希望还来得及。从基础开始。1、Shell简介 ①、Shell既是一种命令语言,又是一种程序设计语言。 作为命令语言,它交互式地解释和执行用户输入的命令; 作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
2016-08-18 17:37:09 483
原创 TMS320F28335程序设计之外设模块配置2---ePWM
二、ePWM所需配置流程与内容(每个周期进入一次中断)Step1:初始化GPIO-ePWM2 InitEPwm2Gpio();Step2:初始化PIE中断向量表,(使用中断方式接收上位机数据) EALLOW; //寄存器EALLOW保护 PieVectTable.EPWM2_INT= &PWM2TickIsr;//初始化PIE中断向量表 EDIS
2015-12-31 11:14:35 4298
原创 TMS320F28335程序设计之外设模块配置1---SCI串行通信接口设计
最近在做基于TMS320F28335的运动控制。其中用到了28335的一些外设模块:SCI、ePWM、eQEP/AD等。为了以后能够有个回顾的地方,将学习过程中一些流程记录下来。一、SCI串口通信相关配置流程与内容(中断方式)Step1:初始化GPIO InitSciGpio(); //只需设置SCIC和SCIBStep2:初始化PIE中断向量表,(使用中断方式接收上位机
2015-12-31 11:10:34 5856 5
原创 Socket_TcpClient学习开发中不经意的小问题。
基于Socket编程是网络编程的基础。一个完整的网络通信需要一个五元组来标识:协议、本地地址、本地端口号、远端地址、远端端口号。Socket编程有TCP和UDP两种,TCP是基于连接的,而UDP是无连接的。本次项目需要的是TCP客户端APP,故主要说明TCP。TCP是基于Client/Server通信模式的,在客户/服务器模式中我们将请求服务的一方称为客户(client),将提供某种服务的一方称为
2015-07-17 15:04:56 565
转载 Android Socket技术编程学习——TCP、UDP
一、Socket介绍它实际上是网络通信的一种接口,基于不同的协议,有各种不同的Socket,比如有基于TCP协议的Socket和基于UDP协议的Socket以及基于蓝牙协议的Socket,Android中使用的是Java的Socket模型。Socket在计算机行业通常称为”套接字“,用于描述IP地址和端口,是一个通信链的句柄。这是一个比较抽象的概念。计算机是拥有端口的,每一个端口都可以有一
2015-05-27 22:09:29 805
转载 android刷新或clean后R.java不见了
问题:之前因为在.XML文件中放置控件之后,R.Java中没有自动生成控件的ID。遵从网上的方法,Project->Clean步骤。然后R.Java就不见了,同时.XML文件报错。 原因及解决方法:R.java这个文件是会自动生成的。但是有时候你写错xml文件的时候,R.java是不会自动生成对应的值。这个时候我们会很习惯去clean一下这个项目,这个时候会
2015-05-20 11:00:10 562
转载 Andorid 中,错误“Unexpected namespace prefix "xmlns" found for tag LinearLayout”的解决方法
在工程导入新的android开发环境后,发现xml脚本出现错误“Unexpected namespace prefix "xmlns" found for tag LinearLayout”,原来是一个namespace声明只要在xml中出现一次就可以了,多次出现就报错。只保留第一个声明,后面的直接删除就OK了。 SO问题地址: http://stackover
2015-03-12 10:04:38 570
原创 MSP430F5529LP+CC3000学习过程(二)——与PC互传数据
准备:确保CC3000与AP已连接。execute the ping command .(过程见(一))。打开串口调试助手和网络调试助手。设置好参数。一、Send UDP Data:1、发送命令 03 ,串口返回DONE。2、发送命令 04051234502115cac1445d9。(指令解析如下)二、Recieve UDP Data:1、发送命令03,
2015-01-23 20:41:50 1846
原创 MSP430F5529LP+CC3000学习心得(一)——与AP的连接
设备:MSP430F5529LP+CC3000 BoosterPack EVMSDK:CC3000 SDK_V1.11 、android下smart Config APPPatch:PatchProgrammerMSP430F5529LP-7.11.7.13.19开发环境:CCS 5.4.0第一步:硬件连接。第二步:对F5529LP进行Patch programmer。导入
2015-01-21 10:52:05 4149
转载 让命令行执行完之后不自动消失
我们都有这样的体验,当在下双击运行命令行(DOS)下的,一旦程序执行完毕后命令行窗口就自动关闭,如果你想看运行结果的话就比较麻烦。自己写程序的话可以在程序结尾加暂停符号,但是如果运行别人编译好的程序,当然可以在命令提示符下输入程序所在路径运行,但是手工输入比较慢而且麻烦,尤其是在有中文路径的情况下,那如何来让程序运行完成以后把结果看得清楚呢?打开记事本,在其中输入如下内容:@echo off
2015-01-14 10:34:49 1866
原创 ARM Cortex M3系列 LM3S9B96开发的坎坷历程(一)
接触Cortex M3系列的LM3S9B96/LM3S9D96已经有两年了
2014-10-30 22:06:48 3418 3
CC3000+STM开发资源
2015-04-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人