![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
手写练习
七彩冰淇淋与藕汤
这个作者很懒,什么都没留下…
展开
-
随机打印1-100,事件复杂度O(n)
我们可以考虑偌随机出来的不是直接是1-100的数,而是数组的下标是否可以实现随机数不重复。 例如: int array[100],a[0] 到a[99]分别是1-100 random(0,99),得到一个随机数x,打印出a[x],然后将a[x]与a[99]交换 下次随机函数random(0,98),这样无论这次随机值是多少,a[x]都不在可得值的范围内了,如此循环100次即可let arr=new Array(100).fill(0)let i=1arr=arr.map(()=>{ .原创 2022-04-15 12:42:55 · 203 阅读 · 0 评论 -
实现一个MVVM
想弄明白MVVM具体是怎么实现的,于是查找到这一篇,也可以去github上看源码。详解Vue中的MVVM原理和实现方法 - H5W3我们要实现一个类MVVM简单版本的Vue框架,就需要实现一下几点:1、实现一个数据监听Observer,对数据对象的所有属性进行监听,数据发生变化可以获取到最新值通知订阅者。2、实现一个解析器Compile解析页面节点指令,初始化视图。3、实现一个观察者Watcher,订阅数据变化同时绑定相关更新函数。并且将自己放入观察者集合Dep中。Dep是Obser原创 2022-04-11 16:46:58 · 1998 阅读 · 0 评论 -
promise文档解读
Promise.resolve()有时需要将现有对象转为Promise对象,Promise.resolve方法就起到这个作用。Promise.resolve等价于下面的写法。Promise.resolve('foo')// 等价于new Promise(resolve => resolve('foo'))Promise.resolve方法的参数分成四种情况。(1)参数是一个Promise实例如果参数是Promise实例,那么Promise.resolve将不做任何修改、原原创 2022-04-11 14:42:23 · 429 阅读 · 0 评论 -
setTimeOut、setInterval互相实现
setTimeOut实现setInterval:递归调用timerFn()function timerFn(){ console.log("1")//要执行的代码 var timer=setTimeout(() => {//间隔一定时间递归执行一次 timerFn() clearInterval(timer) }, 1000);}setInterval实现setTimeOut:内部清除定时器var timer=setIn原创 2022-04-05 16:37:04 · 298 阅读 · 0 评论 -
快速排序、冒泡排序、数组全排列
快速排序let a=[1,3,0,2,1,1,4] function _sort(arr,l,r){ //传入三个参数:数组,左右边界 if(l>=r)return //!!递归返回条件 let i=l,j=r,p=arr[l] //新建两个移动指针 while(i<j){ while(i<j&&arr[j]>=p)r-- //先从右->左,找到第一个比p小的,赋值给门卫p arr[i原创 2022-04-05 16:10:25 · 458 阅读 · 0 评论 -
和大于m的最短子序列、数值的整数次方、股票最大利润
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。 示例: 输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 。解释:子数组 [4,3] 是该条件下的长度最小的子数组。动态规划:var arr=[2,3,1,2,4,3]var m=7let res=arr.length,i=0,j=0,sum=arr[0]while(j<arr.length){原创 2022-04-05 13:18:50 · 322 阅读 · 0 评论 -
约瑟夫环,报数为m删掉,只留最后一个数
1.正向操作,报数为m的删掉,最后只留一个function reverse(n, m) { let arr = [] for (let i = 1; i <= n; i++) { arr.push(i) }//1-n存入数组 let t = 1, i = 0 while (arr.length > 1) { if (t == m) {//报数m,在数组中去掉这个数,t从1开始数,注意i不用+1,因为splice删除次数,后面自动向前填补,i自动为下一个原创 2022-04-04 21:38:36 · 368 阅读 · 0 评论 -
Promise编码练习
1.实现一个timeout函数,fn在seconds秒内执行则成功function fn(){ return new Promise( (resolve, reject) => { setTimeout( () => { console.log('fn执行') resolve('success') },2000)//2000会失败,500会成功 })}function f(){ r原创 2022-04-01 13:12:36 · 350 阅读 · 0 评论 -
给定一个由n个正整数组成数组,并指定一个结果m,求出将n个正整数通过相加或者相减的方式,得到结果m的组合方式有多少种?分别是什么?
种数let map=new Map([])let res=0function dp(arr,sum,num){ if(arr.length==1){ if(sum+arr[0]==num) res++ if(sum-arr[0]==num) res++ return } dp(arr.slice(1,arr.length),sum+arr[0],num) dp(arr.slice(1,原创 2022-03-31 20:32:47 · 1021 阅读 · 0 评论