自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 朴素贝叶斯

带你理解朴素贝叶斯分类算法

2022-02-22 20:13:59 270

原创 有限状态机(FSM) C++

由于有限状态机和状态模式有点像,我们先来复习一下状态模式。

2022-02-22 15:12:57 837

原创 Git缓存问题

使用git时,一般会缓存密码,验证等信息,方便pull push等操作。问题: 使用git时,仓库有权限,但是无法push代码,提示:解决:清理http缓存mac:git config --show-origin --get credential.helper找出缓存文件所在路径,把那个文件里的credential配置删掉linux:$ git config --unset --global “credential.helper”如果误删了.gitConfig文件,则需要:重新设置缓存

2022-02-17 11:57:41 953

原创 曲线插值法

原理:

2022-02-16 22:43:28 459

原创 人工势场法

原理:

2022-02-16 22:41:44 250

原创 Cmake执行Python脚本

在CMake中想要在编译target前执行python脚本,因此增加了如下custom target:add_custom_target(3rdPartyTarget COMMAND echo "3rdPartyTarget task start" COMMAND python ${CMAKE_SOURCE_DIR}/xxx.py -d ${CMAKE_SOURCE_DIR} -p win W

2022-02-16 14:28:55 3938 1

原创 蚁群算法(ACO)

算法原理

2022-02-15 09:54:09 4197

原创 马尔可夫决策,决策树算法

算法原理

2022-02-14 23:38:06 636

原创 MPC,PID,LQR,DDP算法

算法原理:

2022-02-14 23:37:16 1536

原创 ARA*算法

Anytime Reparing A*算法

2022-02-14 22:43:45 570

原创 D*(动态A*)算法

原理:

2022-02-14 22:42:13 913

原创 Floyd算法

Floyd最短路径算法Flody算法可以求图中任意两点的最短路径,边权可以为负,但是不可以有负环。#include <cstdio>using namespace std;const int MAXN = 30;const int INF = 0x3f3f3f3f;int A[MAXN][MAXN]; // 图的邻接矩阵表示int path[MAXN][MAXN]; // path[i][j]表示从i到j的最短路径上j的前一个顶点的序号int N; // 结点数//

2022-02-14 22:05:13 421

原创 Dijkstra算法

目录BFS DFS算法Dijkstra算法代码实现上节中介绍了图的两种表示方法:邻接表和邻接矩阵。本节将基于上面表示的图,求解路径规划问题。BFS DFS算法算法用途:遍历图的每个节点;求解无权图的最短路径算法思想:BFS 1、使用队列,从起点开始,不断将邻接点加入队列进行访问。DFS 1、使用栈,从起点开始,不断将邻接点入栈(递归进行)。Dijkstra算法算法用途:求解有权图(没有负权值)的最短路径规划问题算法思想: 1、维护两个list,一个openList(访问过的节点)

2022-02-14 21:42:59 523

原创 ROS在Windows上环境搭建(虚拟机)

1、安装vm虚拟机2、分配Linux系统虚拟空间3、在该空间上安装Linux发行系统

2022-02-09 14:36:17 858

原创 Unit Test

https://www.tsingfun.com/it/cpp/google_mock.html

2021-10-27 15:39:11 122

转载 C++使用Google V8 引擎集成JS脚本能力

V8 引擎简介Google V8 引擎使用 C++ 代码编写,实现了 ECMAScript 规范的第五版 ,可以运行在所有的主流操作系统中,甚至可以运行在移动终端 ( 基于 ARM 的处理器,如 HTC G7 等 )。V8 最早被开发用以嵌入到 Google 的开源浏览器 Chrome 中,但是 V8 是一个可以独立的模块,完全可以嵌入您自己的应用,著名的 Node.js( 一个异步的服务器框架,可以在服务端使用 JavaScript 写出高效的网络服务器 ) 就是基于 V8 引擎的。和其他 JavaS

2021-07-19 19:21:45 3023 1

原创 Node.js 事件循环

首先Node.js JavaScript 代码运行在单个线程上。 每次只处理一件事。任何花费太长时间才能将控制权返回给事件循环的 JavaScript 代码,都会阻塞页面中任何 JavaScript 代码的执行,甚至阻塞 UI 线程,并且用户无法单击浏览、滚动页面等。因此,编码过程中繁重的task应该异步处理。JavaScript 中几乎所有的 I/O 基元都是非阻塞的,如网络请求、文件系统操作等,这就是 JavaScript 如此之多基于回调(最近越来越多基于 promise 和 async/awai

2021-06-11 11:17:17 293 2

原创 前端

https://github.com/qianguyihao/Web

2021-05-31 17:54:57 197

原创 2021-05-17

获取某个 Mac 应用的 BundleIDhttps://hechen.xyz/post/reveal-bundleid-application/关于 Library 和 Frameworkhttps://hechen.xyz/post/library_framework/Build Processhttps://hechen.xyz/post/xcode-build-system/

2021-05-17 19:36:58 109

原创 常用工具安装配置、编译、链接等问题

vscode 安装 https://blog.youkuaiyun.com/HelloZEX/article/details/84029810python 安装opencv https://blog.youkuaiyun.com/u010921682/article/details/89675847

2021-02-25 15:00:34 289

原创 渲染引擎开发

https://blog.youkuaiyun.com/antma/article/details/86104068

2021-02-21 22:23:10 305

原创 Camera

OpenGL中Camera的相关控制

2021-02-08 17:17:45 168

原创 1、OpenGL窗口、环境配置相关问题

1、使用Qt库跨平台配置窗口2、使用GLFW库在Windows上配置3、使用GLFW库在Mac上配置4、使用Window.h原生窗口配置5、使用CMake编译Qt项目

2021-01-29 13:38:27 580

原创 QT事件循环

1.一般我们的事件循环都是由exec()来开启的,例如下面的例子:QCoreApplicaton::exec()QApplication::exec()QDialog::exec()QThread::exec()QDrag::exec()QMenu::exec()这些都开启了事件循环,事件循环首先是一个无限“循环”,程序在exec()里面无限循环,能让跟在exec()后面的代码得不到运行机会,直至程序从exec()跳出。从exec()跳出时,事件循环即被终止。QEventLoop::quit

2021-01-13 10:40:49 651 1

原创 QQuickPaintedItem实现涂鸦程序画板

QQuickPaintedItem实现涂鸦程序画板

2020-11-21 19:54:33 524

原创 LeetCode No.41. 缺失的第一个正数

提示:1、hash表2、原地hash

2020-09-08 19:04:07 107

原创 LeetCode No.168. Excel表列名称

class Solution {public: string convertToTitle(int n) { string ans = ""; while (n > 0) { n -= 1; //重点 ans.push_back('A' + (n % 26)); n /= 26; } reverse(ans.begin(), ans.end());

2020-09-08 18:54:16 136

原创 LeetCode No.34. 在排序数组中查找元素的第一个和最后一个位置

提示:查找target和查找target+1。

2020-09-08 14:04:56 154

原创 图的最小生成树

最小生成树在给定一张无向图,如果在它的子图中,任意两个顶点都是互相连通,并且是一个树结构,那么这棵树叫做生成树。当连接顶点之间的图有权重时,权重之和最小的树结构为最小生成树!在实际中,这种算法的应用非常广泛,比如我们需要在n个城市铺设电缆,则需要n-1条通信线路,那么我们如何铺设可以使得电缆最短呢?最小生成树就是为了解决这个问题而诞生的!1、Kruskal算法(克鲁斯卡算法)Kruskal算法是一种贪心算法,我们将图中的每个edge按照权重大小进行排序,每次从边集中取出权重最小且两个顶点都不在同一个

2020-09-08 13:56:30 2884

原创 LeetCode No.33. 搜索旋转排序数组

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。必然二分。关键是判断进入那一侧进行继续搜索(提示:某一侧必定有序,数组可以通过下标直接取到开头,结尾等值)。...

2020-09-08 13:20:57 122

原创 LeetCode No.31. 下一个排列

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1提示:找到第一个升序的位置,交换到正确的位置,再反转该位置后面的所有元素。...

2020-09-08 13:12:28 136

原创 LeetCode No.99. 恢复二叉搜索树

这道题难点,是找到那两个交换节点,把它交换过来就行了。这里我们二叉树搜索树的中序遍历(中序遍历遍历元素是递增的)class Solution { TreeNode firstNode = null; TreeNode secondNode = null; TreeNode preNode = new TreeNode(Integer.MIN_VALUE); public void recoverTree(TreeNode root) { in_orde

2020-09-07 17:16:09 108

原创 LeetCode No.95. 不同的二叉搜索树 II

给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。方法:递归(递归的精髓:假定子问题已经获取了正确解)

2020-09-07 16:32:41 194

原创 如何分析递归算法的时间复杂度

递归算法的时间复杂度?

2020-09-07 13:58:30 523

原创 LeetCode No.148. 排序链表

对链表进行插入,归并,快速排序

2020-09-07 11:14:43 103

原创 LeetCode No.236. 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

2020-09-07 11:09:48 106

原创 LeetCode No.235. 二叉搜索树的最近公共祖先

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。分别用递归和迭代。

2020-09-07 11:09:09 96

原创 剑指 Offer 04. 二维数组中的查找

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。...

2020-09-07 11:07:08 85

原创 LeetCode No.25. K 个一组翻转链表

链表类的题都是那几步比如断链、接链、反转、排序的操作而已。难题也只不过是简单题的组合或者几个简单的思路的组合而已。ListNode* reverseKGroup(ListNode* head, int k) { if (!head || !head->next || k == 1) return head; ListNode *dummyhead = new ListNode(-1); // 虚拟头节点 dummyhead->next = head; ListNode *pos = d

2020-09-04 17:39:35 134

原创 LeetCode No.21. 合并两个有序链表

ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1==nullptr) return l2; if(l2==nullptr ) return l1; ListNode* head=new ListNode(-1); //构造头节点 ListNode* tmp=head; while(l1!=nullptr || l2!=nullptr){

2020-09-04 16:32:14 118

空空如也

空空如也

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

TA关注的人

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