- 博客(36)
- 收藏
- 关注
原创 useCallback使用注意
useCallback的作用时基于依赖项缓存函数,但是这个缓存时取值缓存而不是按照地址缓存,这导致了如果缓存的函数使用的值依赖外部某个变量,这个变量只会取第一次用到的值。
2023-06-02 16:05:20 173
原创 应届生前段学习路线
绪论前段曾经是被戏称为游戏语言,但是现在用途也越来越多了,多的也不赘余,我比较推荐应届生学习路线和学习内容就写在下面,毕竟是第一次写,写的不够严谨,笔者一直都是看官方文档没有报名过一些培训课程,所以有些东西也讲不清楚,哪些课程其实值得一看。补充一下,前段的内容很多很杂,很多东西需要平时多看博客和别人的文章进行积累,当然如果您是大牛已经把MDN烂熟于心那我此言就是妄语了。需要看的书/博客/网站:菜鸟教程|html这个东西不多赘余,主要需要看html+css+js,当然这些内容都只是基础,必须会但
2021-03-03 14:38:23 247
原创 JS扩展运算符(...)进行数组的深拷贝
let temp = [1,1,1,1,1,1,1]; let temp2 = [1,1,1,1,1,1,1]; function del(array){ array[3] = 4; } function del2(array){ array[2] = 4; } del(temp);
2020-10-08 16:58:54 1382
原创 栈迷宫-Javascript实现
运行截图实现原理这里寻找的走出迷宫的路径并不是最短路径而是可行路径,采用的思想就是暴力搜索,将所有的走法都尝试一下,走到最后就是可行的路径,所以会采用栈这个先进后出的数据结构,因为这样就可以利用栈进行依次回溯数据结构PosType只是为了方便的记录x,y的坐标位置,栈中存储的是SElemType这个数据结构,作用是栈顶的元素就是当前的位置,里面的direction就是要走的方向function PosType() { this.x = null; this.y = nul
2020-08-16 12:10:49 280
原创 扫雷简易版-Javascript实现(新手向超简单)
使用截图代码讲解初始数据 var MAPSIZE = 10; var BOMBNUM = 1; var BOMBPOSITION = {}; var SQUAERPOSITION = {}; var SQUARECHECK = {}; var end = false;初始化地图(CreateMap())用BOMBPOSITION这个hash表记录雷的位置,然后生成地图长*地图宽数量的div块然后完成定位,然后用
2020-08-14 17:35:48 538 2
原创 Floyed算法-Javascript实现
原理Floyed算法是典型的暴力搜索,不过用到了动态规划的思想,整体的使用过程是,我们会考虑中间点的作用,简单的说,对于任何一个点i到j我们考虑下是i直接到j短还是i先到k再到j短,哪个短选哪个,所以我们在使用的时候就可以把每个点都作为中间点看其他点是否要经过自身所以就有了这个算法。对于动态规划就是dp[i][j] = Math.min(dp[i][j],dp[i][k] + dp[k][j]);代码数据var NumNodes = 9; var NumEdges = 16;
2020-08-12 20:26:12 166
原创 单源最短路径-迪杰斯特拉算法(Javascript实现)
原理迪杰斯特拉算法是一个单源点最短路径算法,即该算法会求得从指定一个顶点(源点)到其余所有顶点的最短路径。这里用到一个想法是一个问题的最优解一定包含子问题的最优解,以找最短路为例子,如果从起点出发,选择抵达下个点用的代价最小的点,然后按照这个原则依次选择下一个点,那么抵达终点前所选择的路径一定是最短的这里实现的没有去检测是否存在负权路径,也没有检测图本身是否为强连通,总之就是这个实现的只能对存在最短路径且无负权路径的图求单源最短路径与最小生成树Prim算法的区别最大的区别 最小生成树所构建的
2020-08-12 18:43:21 512
原创 最小生成树-Kruskal_Prim算法实现(Javascript实现)
最小生成树说明这里不会对原理进行详细的分析讲解,只说构建的过程这里假设所有的图的所有节点都是连通了,不会是非最小生成树的构建过程最关键的就是对于成环的判断使用的图Kruskal算法边集合数据结构//边集合edges = []//边集合中元素function node(start, end, weight) { this.start = start; this.end = end; this.weight = weight;
2020-08-09 19:02:59 413 2
原创 哈夫曼树讲解(js实现,举例说明)
引言哈夫曼树记住一点,有n个需要编码的,那么节点就是2*n - 1个,然后整个运算过程,在数据池找两个权重最小的作为左孩子和右孩子然后权重和生成一个父节点加入到数据池,作为左右孩子的节点就从数据池删除掉,直到最后池子里就一个点了,这时候就是最小生成树原理哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的 路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)计算公式树的带权路径长度记为WPL=(W1L1+W2L
2020-08-06 22:32:42 480
原创 Javascript实现俄罗斯方块
前文完成俄罗斯方块所需要完成的流程想起来比较简单,但是要考虑的事情并不算很少,边界的判断,到达底部的判断,消除的判断,消除后的处理都需要考虑在里面,一开始自己写的时候其实思维是很容易混乱的,所以这时候你要自己去捋顺了思路,画一个简易的流程图是很有必要的,同时要保证能够实现函数之间的低耦合高内聚,通俗的说,你要让自己的函数尽量只实现一个功能.实现的功能截图流程图说明:这里每个生成的模型的移动是通过16宫格位置和模型相对16宫格位置重新定位实现的,里面有些英语单词拼错了,罪恶罪恶,sublime
2020-07-31 22:46:56 2434 4
原创 leet_code有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。就是用一个栈/** * @param {string} s * @return {boolean} */var isValid = function(s) { if(s.length == 0){ return true; }else{
2020-06-15 13:17:51 120
原创 leet_code-爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?经过观察0阶 1种1阶 1种2阶 2种3阶 3种4阶 5种这是一个典型的斐波那契数列第一种方法:循环解决/** * @param {number} n * @return {number} */var climbStairs = function(n) { let temp = []; temp[0] = 1; temp[1] =
2020-06-14 22:02:47 206
原创 leetcode-转变数组后最接近目标值的数组和
给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。/** * @param {number[]} arr * @param {number} target * @return {number} */var findB
2020-06-14 22:01:00 152
原创 19删除链表倒数第几个字母
/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } *//** * @param {ListNode} head * @param {number} n * @return {ListNode} */var removeNthFromEnd = function(head, n) { let t
2020-05-18 22:57:36 125
原创 16最接近三数合
/** * @param {number[]} nums * @param {number} target * @return {number} */var threeSumClosest = function(nums, target) { //先排序找最大值 nums.sort() let min1 = Math.abs(nums[nums.length - 1]*3) + Math.abs(target) let min2 = 0 for(let i
2020-05-18 21:12:29 155
原创 最长公共前缀
创建一个字符串,相同字符就添加进去,不相同就向后移动,这里的i,j都可以移动,因为有一个在记录了/** * @param {string[]} strs * @return {string} */var longestCommonPrefix = function(strs) { if(strs.length == 0) return ""; let ans = strs[0]; for(let i =1;i<strs.length;i++) {
2020-05-18 20:45:58 111
原创 罗马数字转整数
这个比整数转罗马数字简单的多。。/** * @param {string} s * @return {number} */var romanToInt = function(s) { let sum = 0 let id = 0 let nums=[1000,900,500,400,100,90,50,40,10,9,5,4,1], chars=['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I
2020-05-18 19:52:54 139
原创 整数转罗马数字
/** * @param {number} num * @return {string} */var intToRoman = function(num) { //创建自己的字典然后依次减下去 let nums=[1000,900,500,400,100,90,50,40,10,9,5,4,1], chars=['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I']; let result='';
2020-05-18 17:44:13 152
原创 11.盛最多水的容器
第一种办法-暴力/** * @param {number[]} height * @return {number} */var maxArea = function(height) { //暴力 let max = 0 for(let i = 0; i < height.length; i++){ for(let j = i + 1; j < height.length; j++){ if(Math.min(height[
2020-05-18 17:33:37 84
原创 atoi
利用自带函数/** * @param {string} str * @return {number} */var myAtoi = function(str) { const number = parseInt(str); if(isNaN(number)) { return 0; } else if (number < Math.pow(-2, 31) || number > Math.pow(2, 31) - 1) { re
2020-05-18 16:54:22 102
原创 整数反转
/** * @param {number} x * @return {number} */var reverse = function(x) { let num = parseInt(Math.abs(x).toString().split("").reverse().join("")) if(x < 0){ return num <= Math.pow(2,31)?-num:0 }else{ return num < Mat
2020-05-18 15:59:48 71
原创 Z字符变换
维护一个长度为numRows的数组/** * @param {string} s * @param {number} numRows * @return {string} */var convert = function(s, numRows) { if(numRows == 1) return s; const len = Math.min(s.length, numRows); const rows = []; for(let i = 0;
2020-05-18 15:42:40 254
原创 最长回文子串
直接暴力/** * @param {string} s * @return {string} */function palindrome_check(mystring){//这个绝对没问题 for(let i = 0,j = mystring.length - 1; i <= j; i++,j--){ if(mystring[i] != mystring[j]){ return false } } return
2020-05-17 22:13:27 74
原创 寻找两个正序数组中位数
/** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number} */var findMedianSortedArrays = function(nums1, nums2) { //构造新的数组 let mynum = [] let i = 0, j = 0,temp = 0 for(;i < nums1.length; i++){ if(j == nums2.
2020-05-17 19:09:28 255
原创 无重复字符的最长长度
第一种方法暴力搜索var lengthOfLongestSubstring = function(s) { let arr = [], max = 0 for(let i = 0; i < s.length; i++) { let index = arr.indexOf(s[i]) if(index !== -1) { arr.splice(0, index+1); } arr.push(s.ch
2020-05-17 16:43:21 104
原创 两数相加
一开始想的先变成数字去处理,但是存在一个问题,数值过大,链表过长/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } *//** * @param {ListNode} l1 * @param {ListNode} l2 * @return {ListNode} */var addTwoNumbers
2020-05-16 22:53:48 108
原创 leet_code_02_三数之和
暴力搜索var threeSum = function(nums) { let res = [] for(let i = 0; i < nums.length; i++){ for(let ii = i + 1; ii < nums.length; ii++){ for(let iii = ii + 1; iii < nums.length; iii++){ if((nums[i] + nums[ii
2020-05-16 17:10:48 105
原创 LeetCode_练习_01_两数之和
1.暴力搜索/** * @param {number[]} nums * @param {number} target * @return {number[]} */var twoSum = function(nums, target) { var temp = []; for(var i = 0; i < nums.length; i++){ for(var ii = i + 1; ii < nums.length; ii++){
2020-05-16 15:57:28 91
原创 JS实现TTS语音播报
JS实现TTS语音播报function speckText(str){ //var request= new URLRequest(); var url = "http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&text=" + encodeURI(str); // baidu //url = "http://translate.google.cn/transl
2020-05-15 16:16:08 1888
原创 Python环境flask框架服务器可能出现的问题
Flask向前端传输数据方法以及出现编码问题解决return jsonify({'status': '0', 'errmsg': '登录成功!'})return json.dumps({'status': '0', 'errmsg': '登录成功!'},ensure_ascii=False)app.config['JSON_AS_ASCII'] = False跨域问题From f...
2020-04-01 19:03:30 399
原创 MySQL数据库配置
MySQL数据库配置下载安装包:下载地址:https://dev.mysql.com/downloads/mysql/配置环境变量a) 新建MYSQL_HOME,变量值就是解压之后文件的目录b) 在path内加入bin目录生成data文件,mysqld --initialize-insecure --user=mysql安装mysql,mysqld -install启动服务,net...
2020-04-01 19:00:46 167
原创 利用cv2库获取视频流关键帧
利用cv2库获取视频流关键帧import osimport threadingimport timeimport cv2# yolo v3对416*416图像识别是最佳状态# http://192.168.3.14:8080/videoextractImage = Nonedef ExtractVideoStream(videoPath='', ...
2020-04-01 18:52:29 1170
原创 JetBrain DataGrip+Mysql安装使用
JetBrain DataGrip+Mysql安装使用MySQL的安装这里采用最简单的安装方式下载安装包下载地址:https://dev.mysql.com/downloads/mysql/注意:这是在Orcal官网进行的下载,无账号注册即可,同理,使用JetBrain产品时直接去淘宝买账户就可,没必要非得破解版。配置环境变量配置环境变量a) 新建MYSQL_HOME...
2019-12-02 17:06:12 1190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人