- 博客(65)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 pyhton生成迷宫
pyhton生成迷宫效果图实现原理代码效果图实现原理原理是参照我之前的文章用的深度优先遍历代码import randomimport numpy as npimport matplotlib.pyplot as pltclass MazeDefine(object): WALL = 0 ROAD = 1 DIR = [ (1, 0), (0, 1), (-1, 0), (0, -1), ]class Maze(object): def __init
2020-12-14 17:31:24
418
原创 迷宫生成算法
迷宫生成算法随便聊点设计思路代码实现随便聊点关于迷宫算法其实我之前写过两篇文章,不过这两天突然需要用到了,看了两分钟自己的博客居然一时没怎么看懂。不过毕竟我之前研究过,花了点时间还是给重新写了出来,相比之下反而觉得以前写的代码有点累赘了,鉴于之前那篇文章点击率也蛮高的,删掉重写又怪可惜的,想想就顺便再水一篇吧。设计思路先来张效果图:我们可以把迷宫建立的过程想象成挖地道。首先,假设我们当前所在位置是(x,y),此时我们可以挖的方向分别是上下左右四个方向: 上(x-1,
2020-06-07 13:22:44
5495
18
原创 室内定位算法入门篇
室内定位算法入门篇前言你需要懂的基础知识平面坐标系概率欧氏距离算法惯性导航蓝牙定位定位融合指纹法前言貌似今年做室内定位的人多起来了,总有人问我一些非常基础问题,一方面有的人确实是零基础,另一方面我之前写的一些文章也确实没说的很详细,这里就弄个入门篇。这里写的算法和代码,我会尽量使用用最最简单的,可能在实际运用中并不是那么实用,但是可以帮助零基础的朋友快速入门。你需要懂的基础知识平面坐标系...
2020-03-18 17:51:50
3713
3
原创 说一说室内定位中的一些黑幕
文章目录说一说室内定位中的一些黑幕前言说一说室内定位中的一些黑幕前言首先自我介绍下,本人研究生学历,接触室内定位这个行业三年多,主要从事定位算法的研究。本人接触过的定位算法主要包括蓝牙、WIFI、地磁、惯性、灯光定位算法,据我所知这几种方式基本覆盖了市面上80%的室内定位公司。黑幕其实也说不上,主要是说说我这几年踩到的一些有意思的坑,顺便对有志入行的朋友提个醒。...
2020-01-20 08:57:16
988
8
原创 三维坐标旋转实现
三维坐标旋转实现推导二维坐标旋转问题代码实现推导三维坐标的旋转其实挺容易理解的。首先需要有个旋转中心O(x,y,z)O(x,y,z)O(x,y,z),其次是我们的旋转点P(x1,y1,z1)P(x_1,y_1,z_1)P(x1,y1,z1),那么可知旋转点PPP的相对坐标为P′(x1−x,y1−y,z1−z)P'(x_1-x,y_1-y,z_1-z)P′(x1−x,y1−y,z...
2019-11-08 23:37:16
5288
2
原创 快速求数组A[i]+A[j]+j-i的最大值
题目快手面试题,一个随机数数组A,求A[i]+A[j]+j-i的最大值。解题思路简单来说,我们可以把数组分为两部分。左边:A[0]-0 , A[1]-1 , A[i]-i , … , A[k]-k右边:A[k+1]+k+1 , A[k+2]+k+2 , … , A[j]+j , … , A[n-1]+n-1本质上就是在左右两边分别寻找最大值,然后加起来:int Fun(vecto...
2019-09-18 21:30:20
656
原创 数组循环右移衍生的N个问题
文章目录前提问题一问题二方法一前提将数组循环右移k位k=0 1 2 3 4 5k=1 5 1 2 3 4k=2 4 5 1 2 3...问题一给一正常数组和数字k,返回循环右移k位的数组方法很多,请看这篇文章。问题二有一升序数组,现循环右移了k位,求k的值。方法一...
2019-09-06 21:20:58
318
原创 数组循环右移的N种实现方式
题目将数组循环右移k位k=0 1 2 3 4 5k=1 5 1 2 3 4k=2 4 5 1 2 3...解决这道问题可以有多种实现方式,我挑几种比较有意思的写一写。方法一void Fun(vector<int> &nums,int k){ while(--k>=0){ nums.insert(nums.begin(),nu...
2019-09-05 16:44:45
3076
原创 2019面试编程题小结
文章目录猿辅导题目一题目二题目三猿辅导题目一有一个升序数组,向左移动了k位:1 2 3 4 k=04 1 2 3 k=13 4 1 2 k=2...现知道数组,返回k。//最简单的做法,找到那个不是升降排序的节点,返回即可int Fun(vector<int> nums){ for(int i=1;i<nums.size();++i...
2019-08-30 21:44:04
238
原创 运输萝卜问题——2019腾讯面试题
题目有一个商人骑着一头驴去卖萝卜,商人有3000个萝卜,但是驴最多只能带1000个萝卜,而且驴每走一公里要吃掉一根萝卜,请问商人最多能卖多少根萝卜。分析萝卜很多驴的负载有限思路思路就是,假设在一根萝卜都不浪费的情况下(没有剩下一根萝卜还留在原地),消耗一千个萝卜,最多能前进多远?假设商人带着萝卜前进X公里,由于驴每次只能搬运1000根萝卜,那么3000根萝卜至少搬运三个来回,一共...
2019-08-23 19:28:24
970
原创 Android面试题总结——持续更新
文章目录四大组件Activity生命周期Activity 四种场景Activity 中启动一个新的 Activity 生命周期变化四种启动方式为什么需要onNewIntent()onNewIntent()方法应用场景onSaveInstanceState() 和 onRestoreInstanceState()执行场景如何将一个 Activity 设置成窗口的样式?如何退出APP并关闭所有Acti...
2019-08-19 11:20:56
422
原创 2019面试网络知识整理
文章目录TCP/IPTCP全双工TCP三次握手为什么不能两次握手建立连接TCP四次挥手为什么建立连接的时候是三次握手,而关闭连接的时候是四次为什么客户端发送完确认请求后进入TIME_WAIT要等待2MSLTCP 和 UDP 的区别HTTP 和 HTTPSHTTPHTTPSSSL加密方式Get 和 Post 区别DNSCookie/Session技术#网络TCP/IPTCP/IP协议(传输控制...
2019-08-18 20:37:42
318
原创 面试操作系统小结
文章目录进程进程通信线程一个进程能够创建多少线程上下文切换并发和并行的区别并发并行进程和线程区别内存分配为什么要多线程而不是多进程死锁产生原因解决方法破坏“请求和保持”条件破坏“不可剥夺”条件破坏“循环等待”条件死锁的检测死锁的解除#操作系统进程进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程通信管...
2019-08-18 17:24:13
154
原创 2019 Java面试基础知识整理——持续更新
JavaHashMaphash碰撞解决方法(1) 开放定址法Hash碰撞之后就向下寻找空的存储空间(2) 链地址法(拉链法)数组和链表结合,碰撞之后就插入链表(静态数组和动态数组的结合)(3)在hash法碰撞之后就再生成一hash表HashMap扩容(1)为什么要扩容,随着哈希表插入的数据越来越多,查找效率越来越低(哈希碰撞越来越多)(2)直接扩大,重新生成新的最大值,重新生...
2019-08-17 14:42:42
374
原创 八大排序的实现——学习笔记
八大排序的实现——学习笔记八大排序代码实现前言辅助算法数据交换快速排序归并排序冒泡排序插入排序希尔排序选择排序基数排序堆排序八大排序代码实现前言个人学习记录,都是经典的算法,网上也有很多介绍,就没有写每个排序算法的实现逻辑了,尽量写的简洁明了,欢迎指正。辅助算法数据交换void swap(int &x1, int &x2) { int temp = x1; x1 =...
2019-08-01 10:22:18
149
原创 搭建一个简单的神经网络——学习笔记
搭建一个简单的神经网络——学习笔记前言代码前言搭建一个简单二分类神经网络。一个简单的三层网络,包括输入层,隐层,输出层。反向传播迭代更新。软件:PyCharmPython version:3.7代码import numpy as npclass NeuralNetwork: def __init__(self): pass ##实现sigmode...
2019-06-18 17:36:41
542
1
原创 蓝牙定位中遇到的问题和解决思路
蓝牙定位中遇到的一些问题和解决思路前言补充点小知识ibeacon和蓝牙算法的意义主流算法问题与解决思路蓝牙问题算法问题设备适配总结前言又到一年毕业季。蓝牙定位也断断续续做了快一年多了,以后可能不会再做这一块了,趁记忆还新的时候把遇到的一些问题稍微总结一下,帮助后来的朋友少走一点弯路。补充点小知识ibeacon和蓝牙Ibeacon是一项低耗能蓝牙技术技术,工作原理类似之前的蓝牙技术。iB...
2019-06-10 13:14:32
2875
3
原创 多点定位法之最小二乘法快速求解——蓝牙定位
多点定位法之最小二乘法快速求解——蓝牙定位前言思路实现前言三点定位法是蓝牙定位中非常实用的算法,但是实际使用的时候,我们可能会遇到超过三点的情况,那么此时一种可取的方式就是只取最强的三个信号,也可以通过最小二乘法来对多点进行快速求解。思路如何把信号转换为矩阵呢?我们假设有一组蓝牙坐标P{(x1,y1),(x2,y2),...,(xn,yn)}P\{(x_1,y_1),(x_2,y_2),...
2019-04-03 22:05:27
6321
2
原创 机器学习基础概率论知识——学习笔记
机器学习基本概率论知识——学习笔记期望方差期望方差协方差常用概率分布高斯分布均匀分布二项分布伯努利分布条件概率贝叶斯公式最大似然估计期望方差期望E(x)=∑xip(xi)E(\boldsymbol x)=\sum x_ip(x_i)E(x)=∑xip(xi)E(x)=∫−∞∞xf(x)dxE(x)=\int_{-\infty}^{\infty}xf(x)dxE(x)=∫−∞∞xf(x...
2019-03-14 14:12:18
240
原创 蓝牙定位算法融合惯性导航
蓝牙定位算法融合惯性导航算法前言思路C++实现前言做了蓝牙定位有一段时间了,蓝牙定位算法想要做到高精度是非常困难的,目前流行的指纹法也很难。纯蓝牙定位的效果很难做到理想状态,所以加上惯性导航来进行辅助。思路蓝牙融合惯性导航的难点在于谁的权重更大,我该相信谁多一点。在两种定位方式精度都不太高的时候,我们要有取舍。蓝牙的优势在于在大范围内的精度是相对靠谱的,而惯性导航的优势则在是小范围下相对准...
2019-03-09 14:37:46
3089
3
原创 商用蓝牙定位算法剖析
商用蓝牙定位算法剖析前言XXX公司定位算法运用资源定位算法逻辑实体蓝牙布置优点和缺点XXXX公司定位算法运用资源定位算法逻辑实体蓝牙布置优点和缺点前言目前在做蓝牙定位,找了成都两家目前已经在医院商用的蓝牙定位公司,今天花了一天时间跑了一圈,把两家公司的定位算法摸了一遍。这篇文章对于有蓝牙定位经验,而且希望提高蓝牙定位精度和用户体验的朋友来说会有一定的帮助。有兴趣的朋友可以在下面留言探讨。XX...
2019-03-09 13:10:30
2671
原创 三点定位法原理及实现——蓝牙定位
三点定位法原理及C语言实现前言原理两圆相交两圆不相交代码实现前言最近在做蓝牙室内定位,蓝牙定位用到的一个非常经典的算法就是三点定位法。原理三点定位法,顾名思义首先有三个圆点,同时我们也知道这三个圆的半径,最终求得三圆的交点,达到定位效果。如图:我们的目的是求得O点,利用毕达哥拉斯定理我们可以快速求得O点坐标。不过事与愿违,现实情况并不总是如人意,而是这样:甚至有的情况其中两个圆或者...
2019-02-19 15:58:04
35251
19
原创 Java实现矩阵运算
Java实现矩阵运算前言代码例子前言Matlab中简单的矩阵运算,想要自己实现的话还要花一番功夫。矩阵运算的原理就不多解释了,忘记朋友们可以回头翻翻课本。代码public class MatrixCalculate { //矩阵加法 C=A+B public static double[][] MatrixAdd(double[][] m1,double[][] m2){...
2019-01-25 17:01:37
14902
3
原创 二叉树非递归遍历的实现(2)——学习笔记
二叉树非递归遍历的实现(2)——学习笔记前言思路代码前言在Leetcode上发现一个非常实用而且简单的算法,分享给各位。算法的优点在于如递归遍历一般,只需要简单调整代码的顺序,就可以轻松实现前、中、后序遍历。思路算法思路如下:先建立一个堆栈。针对堆栈中的每个节点,我们给它一个标签,false代表未遍历,true代表已遍历。出栈时遇到标记为false的节点,将其左右节点分别标记为f...
2019-01-16 16:09:20
145
原创 3Sum问题——学习笔记
3Sum问题——学习笔记题目思路代码扩展题目Leetcode上面的3Sum问题。从给定的数组中找三个数,使得三数之和等于目标数值(target)思路首先我们可以把3Sum问题转化为2Sum问题。对于数组中的每一个数num,我们只需要找到另外两个数,使得这两个数的和等于(target - num)。这样的做法会有个小问题,假如此时有两个或多个相同的数,那么这些数会得到相同的结果,如此一来...
2019-01-14 14:42:55
611
原创 利用任意两种遍历方式重建二叉树
利用任意两种遍历方式重建二叉树前言找规律前序遍历与中序遍历中序遍历与后序遍历前序遍历与后序遍历前言学习了如何利用前序遍历和中序遍历来重建二叉树,我就在思考是否知道了任意两种遍历方式,都能将二叉树重构出来呢?仔细研究了一晚,果然如此。找规律先看三种遍历方式struct Tree{ int val; Tree *left; Tree *right;};void ...
2019-01-05 13:55:44
651
3
原创 利用前序遍历和中序遍历重建二叉树
利用前序遍历和中序遍历重建二叉树前言算法思路代码实现前言遇到这么一道题,现在知道二叉树前序遍历和后序遍历,如何通过这些信息来重构二叉树。咋一看估计还有点懵,把数据拿出来细细一分析就知道,其实也还挺简单的。算法思路现在有如下数据:前序遍历 : 3 2 1 5 4 8 7 9中序遍历 : 1 2 3 4 5 7 8 9根据前序遍历的规律我们知道,前序遍历的第一位数据是根节点的数据,...
2019-01-04 20:55:16
721
原创 简单五子棋算法——初级篇
五子棋博弈算法探究(1)前言前言最近对五子棋产生了一点兴趣,想来研究研究,我原本觉得简简单单的五子棋,其实还是有很多学问的。五子是中国古老的棋类之一,是老少咸宜的娱乐项目,...
2018-12-26 17:20:17
21125
原创 Dijkstra算法——学习笔记
Dijkstra算法前言算法例子程序扩展前言Dijkstra算法是典型的求最短路径算法,常用于计算两点之间最短路径。算法算法具体思路是由起始点开始,层层递进向外搜索,直到找到终点为止。可设起点v0v_0v0,终点v1v_1v1,点集合V={v0}V=\{v_0\}V={v0},两点距离dv1,v2d_{v_1,v_2}dv1,v2,具体算法思路如下:1. 在集合VVV的所...
2018-12-10 15:49:30
223
原创 Android计步器算法实现(2)
Android计步器算法实现(2)前言算法实现的意义现实原因优缺点算法原理运动状态判断计步原理步长计算原理Java实现前言在之前我也写过两篇关于计步器的博客,一篇介绍原理,一篇给出封装好的类型。这里是新算法Android工程github地址。之前的那套算法自己平时玩玩其实还是没问题的,但是在大工程里面运用遇到了一些不得不优化的问题:定时器太耗资源每次计算的时间间隔短(几十毫秒)但计算...
2018-11-19 21:59:33
4700
23
原创 线性回归之最小二乘法推导及python实现
线性回归学习笔记前言本文章为个人的学习笔记。学习书籍《机器学习》(周志华著,俗称西瓜书)。线性模型基本形式首先是最基本的线性模型:f(x)=w1x1+w2x2+w3x3+...+wnxn+b f( \textbf{x} )=w_1x_1+w_2x_2+w_3x_3+...+w_nx_n+bf(x)=w1x1+w2x2+w3x3+...+wnxn+b化简成向量形式f(x...
2018-11-07 22:52:39
1814
1
原创 二维空间点到直线垂足计算公式推导及Java实现——学习笔记
二维空间点到直线垂足计算公式推导及Java实现前言公式推导代码实现画蛇添足前言简单的公式推导,大概是高中程度的知识了。不管以前学的好不好,很久不用的东西,一上手还是有点懵的。推导一遍也是为了加深记忆。公式推导首先我们知道直线上两点p1,p2:p1:(x1,y1) p_1:(x_1,y_1)p1:(x1,y1)p2:(x2,y2) p_2:(x_2,y_2)p2:(x2,y2)...
2018-11-07 20:13:17
3423
3
原创 快速判断一个数是否为2的幂——学习笔记
2的幂有一个特点,就是其二进制数中只有一位为1,其余位均为0.1 : 000014 : 000108 : 0010016:0100032:10000…根据这个性质我们可以找到一个性质num&amp;amp;(num-1)==0负数由于有符号位,通过上面的判断即可排除。而当num=0时,由于0不是2的幂又满足上式,则需要单独排除。排除0以后,函数就写成这样:bool isPowe...
2018-10-30 10:04:57
447
原创 k-means算法的Java实现
前言k-means算法是一种基于样本间相似性度量的间接聚类方法,属于非监督学习方法。通过指定k值将数据自动迭代分成k组,实现数据分类,然后可对分类好的数据进行进一步的研究。算法原理1.在数据中随机选取k个数据作为聚类中心2.计算其他数据到k个聚类中心的距离(这个距离可以是欧氏距离或者其他距离)3.根据到聚类中心的最小距离将数据分为k类4.更新聚类中心的坐标(对分类好的数据求均值)5...
2018-10-29 20:37:33
2646
原创 二叉树非递归遍历的实现——学习笔记
二叉树非递归遍历的实现——学习笔记前言树的结构体前序遍历中序遍历后序遍历前言学过二叉树的同学一定对二叉树的三种遍历方式印象深刻。前序遍历,中序遍历,后序遍历,用递归来实现不仅代码简单而且结构优美,令人心情舒畅。那么假如我们不用递归,用循环来实现又如何呢?一起来看看。树的结构体学过树的都知道,最简单的树结构struct Tree{ int val; Tree* left;...
2018-10-26 23:49:44
733
原创 手机方向传感器的缺点及解决方法探究
方向传感器是算法生成的传感器之一,主要借助于磁场传感器的数据。Android系统自带了方向传感器,不过系统5.0之后方法就被废除了(我们还是可以使用的,只是谷歌不推荐继续使用了)。谷歌提供了一套新的算法来作为替代,运用磁场传感器和加速度传感器来计算方向(可自行搜索调用方法)。两种方法之间的优劣暂时无法判定,当然我们希望新方法的效果更好。由于没有具体研究两个算法之间的区别,根据我个人使用经验...
2018-10-18 16:05:02
3161
原创 如何在GitHub上搭建自己的博客
想搭建自己的博客吗?但是买域名、服务器又有点心疼(对于学生党来说)。GitHub提供GitHub Pages的功能,有300M空间供用户搭建自己的博客,分分钟的教程带你建立自己的博客。 1.在GitHub上注册 2.新建仓库(GitHub登陆以后,点击右上角的“+”号,选择New repository) 3.新建仓库名称要写成 username.github.io(us...
2018-10-11 23:46:51
364
原创 随机迷宫生成算法——递归分割算法
迷宫生成三大算法,Prime算法、深度优先算法、递归分割算法,其中递归分割算法最简单,效率也最高,不过生成的迷宫也最简单,看图:原理很简单,首先假设迷宫全是路,在里面画四面墙,把迷宫分割成四个新区域,如下:随机选择三面墙打通,这时原本隔开的四个区域又被打通了。以此类推,在四个新区域内继续设墙分割区域,然后把墙打通,直到不能继续分割才结束。 好嘞,看代码:#includ...
2018-09-29 18:41:30
8084
1
原创 随机迷宫生成算法——prime算法
本以为Prime迷宫生成算法和图论的Prime算法有什么关联,貌似并没有。Prime迷宫生成算法的原理:(1)初始地图所有位置均设为墙(2)任意插入一个墙体进墙队列(3)判断此时墙体是否可以设置为路(判断依据在于上下左右四个位置是否只有一个位置是路)(4)若设置为路,则将该位置周围(上下左右)的所有墙插入队列,接着执行(5);若无法设置为路,直接执行(5)(5)从墙队列...
2018-09-28 23:13:36
11192
4
原创 Prime算法——学习笔记
Prime算法是图论中的经典算法,用于在图中寻找最小生成树。Prime算法的原理在于:(0)首先假设有点队列V和边队列E,两个队列初始都为空(1)任取一点加入点队列V(2)在满足一端点在点队列V中,一端点(新节点)不在队列中的所有边中寻找最短边(3)把新节点加入点队列V中,把新边加入边队列E(4)重新执行(2)直到所有点都加入点队列以上图(图片搜索自百度图片)为例(...
2018-09-28 18:18:55
7005
1
迷宫生成算法C++实现文件
2020-07-10
Android关于相机快速拍照问题
2017-09-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人