- 博客(49)
- 资源 (6)
- 收藏
- 关注
原创 实现一个发布-订阅模式
订阅/发布者模式订阅发布模式:一对多的关系,让多个观察者同时监听某一个主题对象,这个主题对象的状态发生改变时就会通知所有观察者对象,中间通过一个调度中心来发布通知function Dep(){ this.subs = [];}Dep.prototype.addSub = function(sub){ this.subs.push(sub);}Dep.prototype.notify = function(){ this.subs.forEach(sub =>
2020-09-14 14:16:04 597
原创 前端面试题:不借助数组实现一个栈结构
js中的数组本身就有队列和栈的性质,因此不借助数组,实现一个栈结构// 不用数组,实现栈结构(对象,双向链表)function ListNode(val){ let node = {} node.val = val; node.pre = null; node.next = null; return node;}function dbLinkedL...
2020-06-01 22:45:55 17
原创 CSS两栏布局的实现
一、浮动二、flex布局三、绝对定位<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <...
2020-04-28 22:15:49 281
原创 斐波那契实现(闭包、动态规划、递归、计算当前项是由多少个第一项第二项构成)
实现斐波那契数列,可以通过递归和动态规划的方式实现,现在要求把计算过的变量存储起来,之后用到的时候不必重复计算,此处就用到了闭包// 0, 1, 1, 2, 3, 5, 8...var fib = (function() { var arr = [0, 1, 1];// 也必须得是3个 return function(n){ var res = arr[n];...
2020-04-28 21:39:32 402
原创 javascript实现继承的七种方式(from 红宝书)
继承是面向对象语言的基础概念,一般OO语言支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际的方法。ECMAScript中函数没有签名,因此无法实现接口继承。ECMAScript只支持实现继承,而其实现继承主要是靠原型链来实现。一、原型链原型链作为实现继承的主要方法,其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。利用原型链的思想实现继承的简...
2020-04-28 21:08:43 814 1
原创 js--实现一个instanceof
var _instanceof = function(a, b){ // 判断a是否在b的原型链上 if (a.__proto__ === b.prototype) return true;// 找到Object.prototype停止 if (a.__proto__ === null) return false; // if (a === null) re...
2020-04-21 19:07:00 1600 1
原创 算法题:输出DOM结构
console.log(output(document.documentElement))function output(el) { let result_list = [] do_output(el, 0, result_list) return result_list.join('\n');}function do_output(el, level, res...
2020-04-21 18:01:00 863 2
原创 js-实现一个new函数
javascript中在new一个对象时发生了什么?1.创建一个新对象2.将新对象的__proto__指向构造函数原型,也就是将新对象链接到原型链上3.将构造函数中的this指向新对象4.构造函数中若有返回值,就直接返回;否则返回新对象function Person(name, age){ this.name = name; this.age = age;}...
2020-04-18 14:16:06 1234
原创 面试题:实现一个add函数
//实现一个add功能function add(a) { let fn = function(b) { a = a + b; return fn; } fn.toString = function() { return a; } return fn;}add(1); // 1add(1...
2020-04-09 17:08:46 1859
原创 setInterval、setTimeout、requestAnimationframe对比
定时器方法:setTimeout(): 设定时间后执行函数setInterval(): 每隔一段时间执行一次函数requestAnimationFrame(): 与屏幕的刷新频率保持一致三者对比:setTimeout和setInterval为异步事件,内在运行机制决定了时间间隔参数实际上只是指定了把动画代码添加到浏览器任务队列中等待执行的时间;如果任务队列中有其它事件,那么要等...
2020-04-06 17:33:17 317
原创 http状态码和缓存机制
http状态码含义,缓存失效的状态码是多少http缓存机制,对应的状态码缓存失效的状态码是2002XX203 Non-Authoritative Information,服务器已成功处理了请求,但返回的实体头部元信息不是在原始服务器上有效的确定集合,而是来自本地或者第三方的拷贝由于正在使用的是文档副本所以某些响应头信息可能不正确。这是 HTTP 1.1中新加入的。204...
2020-03-31 17:46:01 791
原创 浏览器有哪些进程?浏览器进程,渲染进程,网络进程,渲染进程有哪些线程?
浏览器进程,渲染进程有哪些线程参考:https://segmentfault.com/a/1190000012925872
2020-03-31 16:40:49 3148 1
原创 javascript--类数组转为数组
// 类数组:通常把拥有数值length属性和对应非负整数属性的对象看成一种类型的数组// 常见的类数组:arguments和DOM方法返回的元素筛选(getElementsByTagName, getElementsByClassName)// 方法一:最原始的方法:借用一个空数组,遍历// var eles = document.getElementsByTagName('di...
2020-03-26 19:06:31 129
原创 javascript数组去重的方法
// 方法一:indexOfarr = [2,3,4,5,3,4,2,6,4]function removeDup(arr) { arrNew = [] for(let item of arr) { if (arrNew.indexOf(item) === -1) { arrNew.push(item) } }...
2020-03-22 20:31:56 124
原创 猿辅导--课程质量建设
辅导课堂在推进质量建设,需要分析每堂直播课的用户报障数量。当连续多个课堂的报障数量之和大于一个数s的时候,系统发出警报,计算最长连续的没有触发警报的课程数量。输入描述:第一行两个整数: n, s第二行n的整数: 每个整数ai表示该课堂的报障数量对于10%的数据,满足1<=n<2*10^3对于100%的数据,满足1<=n<=2*10^6, 1<=...
2019-12-24 10:25:59 557
原创 剑指Offer62: 圆圈中最后剩下的数字(约瑟夫环问题)
题目: 0,1,...,n-1等n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,最后剩下的数字是3.删除过程:loop 1: 删除从0开始的第三个位置上的数字2loop 2: 重新编号,从3开始计数,第三个数字...
2019-12-16 19:34:26 384
原创 剑指offer18--删除链表中重复的结点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5//删除链表中重复的结点public static ListNode deleteDuplication(ListNode pHead){ if (pHead =...
2019-12-13 20:31:46 294
原创 判断链表是否有环 如果有,那么找出环的入口
常见的面试题,除了会写代码之外,还要会数学推导,也就是深入理解原理,下面进行说明1 判断链表是否有环设置两个指针,一个快指针和一个慢指针,快指针每次向前移动2步,慢指针每次移动1步,由于快指针的移动速度快于慢指针,所以链表如果无环,快指针会先到达末尾,也就是NULL的位置;链表如果有环,快指针会先进入环内,之后会一直在环内移动,快慢指针最终在环内的某个位置相遇。慢指针p;快指针q;环的...
2019-12-13 19:41:02 207
原创 剑指offer45--把数组排成最小的数
描述:输入一个正整数数组,把数组的数字拼接,使得该数是所有拼接数字中最小的一个比如输入{3,32,321}, 则输出321323思路: 对于两个数字m,n,其拼接数字mn, nm, 若mn > nm, 则认为m > n; 若mn < nm, 则m < n根据这一规则对数组升序排序,最后将数字按序拼接,即可实现public static boolean is...
2019-12-13 12:27:48 239
原创 剑指offer46--把数字翻译成字符串--java代码
题目: 给定一个数字,按照如下规则翻译为字符串: 0->'a', 1->'b',......, 11->'l', ......, 25->'z'。一个数字可能有多个翻译,比如12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi", "mzi". 编写一个函数,计算一个数字有多少种不同的翻译方法//剑指offer46publi...
2019-12-13 11:08:46 311
原创 剑指offer53-查找数字在数组中出现的次数
剑指offer53-查找数字在排序数组中出现的次数题目描述问题分析题目描述统计一个数字在排序数组中出现的次数。比如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于数字3在数组中出现了4次,因此输出4.问题分析1.暴力求解,遍历数组,统计数字k出现的次数,时间复杂度O(n)肯定不是最优解,没有用到排序的条件2.二分查找,确定数字k在数组中的位置,然后从子数组从左向右和从...
2019-11-19 18:57:41 402
原创 动态规划之股票交易问题
动态规划_股票问题详解动态规划之股票的买卖_简书Table of ContentsBest Time to Buy and Sell Stock IBest Time to Buy and Sell Stock IIBest Time to Buy and Sell Stock IIIBest Time to Buy and Sell Stock IVBest Time...
2019-11-19 17:46:24 626
原创 个人笔记-循环队列实现[循环队列、双端循环队列]
622.Design Circular Queue641.Design Circular Deque
2019-11-03 21:00:31 116
原创 交换两个数字的四种方法
第一种: 借助第三个变量(常用方式)代码略第二种: 先加和,再减去其中一个数值b,赋值给b,最后再从和中减去b得到apublic static void main(String[] args) { int a = 3, b = 4; System.out.println("交换之前:"); System.out.println(String.format("a...
2019-10-10 21:37:48 825
原创 macOS升级到10.15,qt5编译不通过的问题
The platform SDK has been changed from version 10.14 to version 10.15. This requires a fresh build. Please wipe the build directory completely, including any .qmake.stash and .qmake.cache files gener...
2019-09-24 18:13:14 2167 1
原创 单链表反转_递归
//递归链表反转public static ListNode reverseList(ListNode head) { if (head == null || head.next == null) { return head; } ListNode newHead = reverseList(head.next);//倒数第二个节点 head.n...
2019-09-19 16:35:28 98
原创 Java_打印回行数组
public static void spiralArray(int[][] arr,int m, int n){ for(int i = 0; i < m; i++){ for(int j = 0; j < n; j++){ System.out.print(arr[i][j]+" "); } S...
2019-09-08 16:03:58 537
原创 leetcode刷题记录_DP_II
1143. Longest Common Subsequence// https://leetcode.com/problems/longest-common-subsequence/最长公共子序列状态转移方程:if (s[i] == t[j]){ dp[i][j] = dp[i-1][j-1] + 1;}else { dp[i][j] = Math.max(d...
2019-09-04 09:31:35 119
原创 leetcode刷题记录_动态规划_I
leetcode_62_unique path动态规划: 声明二维数组,首行首列初始化为1,之后元素=上方值+左方值level: simple63. Unique Paths II//每一行/列的值与前一个状态有关,与uniquePath_I初始化不同for(i=1;i<m;i++){//为第一列元素赋值 if(obstacleGrid[i][0] == 0){...
2019-09-02 10:27:10 123
转载 matlab中的find函数
参考博客:https://www.cnblogs.com/anzhiwu815/p/5907033.htmlfind函数返回非0元素的索引返回元素在原矩阵/向量中的索引(矩阵中的元素是一列一列存储的)%%%%%%%%%%%%%%%%%%numel(A) -- 返回矩阵或向量中的元素总数图像分割_绘制超像素边界%完整代码im=imread('130014.jpg');...
2019-06-25 17:10:52 260
转载 matlab 连通分量去除孤立点
src_img_name = 'haixing.png';img = imread(src_img_name);% get binary imagegray_img = rgb2gray(img);T = graythresh(gray_img);bw_img = imbinarize(gray_img, T);% find the largest connected regio...
2019-06-25 17:09:27 4511
原创 最长递增子序列
最长递增子序列是很经典的算法题1. 转化为最长公共子序列问题(LCS)对原数组进行排序,原数组与排序数组的最长公共子序列长度即为所求。但是存在一个问题:当数组中存在相同元素时,需要单独处理def lengthOfLIS(nums): """ 最长子序列 """ dnums = sorted(nums) l = len(nums) dp ...
2019-05-27 21:36:10 171
原创 leetcode_264 nthUglyNumber
大神的写法, beats 100%def nthUglyNumber(n): if n <= 0: return 0 if n == 1: return 1 k = [1] t2 = 0 t3 = 0 t5 = 0 for i in range(1, n+1): tmp = min...
2019-05-08 16:01:47 178
原创 leetcode -- 647. Palindromic Substrings
题目描述:给定一个字符串,判断字符串的子串中的回文串个数Example 1:Input: "abc"Output: 3Explanation: Three palindromic strings: "a", "b", "c". Example 2:Input: "aaa"Output: 6Explanation: Six palindromic strings: "a"...
2019-04-26 16:13:25 159
转载 图像处理之纹理特征提取
旋转不变性:图像旋转时,所选特征不随图像的旋转而发生变化LBP参考:LBP纹理特征提取灰度不变性-旋转不变性import numpy as npfrom PIL import Imageimport math def LBP(src): ''' :param src:灰度图像 :rtype:灰度图像 ''' src = np.ar...
2019-04-24 17:42:29 5610
原创 动态规划之背包问题
0-1背包问题(含代码)0-1背包问题入门详解动态规划常见面试题总结【动态规划】01背包问题(通俗易懂,超基础讲解)动态规划之完全背包详解Table of Contents题型一(01背包)题型二(01背包)题型三(完全背包)题型四(多重背包)背包问题是典型的动态规划问题,不同类型的背包问题有不同的解题思路01背包:N件物品,每件物品有一个完全背包:...
2019-04-22 21:21:16 471
原创 leetcode378 Kbh Smallest Element in a Sorted Matrix
给定一个n*n的矩阵,矩阵中的每一行、每一列元素按升序排序,找出矩阵中第k小的元素Example:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,return 13.注意:你可以认为k总是有效的,1<=k<=n^2利用python的函数库完成算法def kthSmal...
2019-04-21 10:45:03 117
原创 MacOS Xcode openCV环境搭建
opencv4.0.1+xcode10_1+macOS Mojave version10.14.4安装步骤可以参考一下博文:https://blog.csdn.net/sinat_38221796/article/details/80230645终于搭好了opencv的环境,激动鸭。。。我安装的步骤是参考了多个博客的,具体哪几个也记不太清了。。。可以参考官方文档最后一步就是在新...
2019-04-16 16:57:41 295 3
原创 MacOS中使用Xcode调试matlab中的mex文件
按照官方文档进行设置:https://ww2.mathworks.cn/help/matlab/matlab_external/debugging-on-mac-platforms.html#d117e29110调试的步骤:1. 将要调试的cpp文件拖到xcode中的最左侧一栏中,任意设置一个断点2. 点击xcode中启动调试3. 新建一个matlab运行实例(右键dock中已...
2019-04-11 21:31:22 2131
图像分割和边缘检测-BSDS500数据集
2019-01-22
BSDS300-human
2019-01-22
The Berkeley Segmentation Dataset and Benchmark-BSDS300
2019-01-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人