算法
moekosu
2014年6月毕业,统招本科软件工程专业,三年Java,四年前端,有好机会可以联系,外包勿扰
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【leetCode】全排列
###解题思路 经典回溯算法 ###代码 /** *@param{number[]}nums *@return{number[][]} */ varpermute=function(nums){ letsum=[] backtrack(nums,[],sum) returnsum }; functionbacktrack(nums,arr,sum){ if(arr.length===nums.length){ ...原创 2022-03-06 01:03:34 · 629 阅读 · 0 评论 -
【leetCode】快速排序
【实现思路】 快速排序就是每次取某一个数作为参考数,每一个与他进行对比,分成大于,小于,等于,三个数组,再对大于,小于的数组进行递归排序,直到所有排完 版本1.0 取最后一个数作为参考数,将数组分为大于,小于两个数组进行递归排序 版本2.0 取最后一个数作为参考数,将数组分为大于,小于,等于三个数组,等于这个数组不再次排序 版本3.0 取随机数作为参考数,后续一样,这样能保证不会一直遭遇到最差的情况 【实现代码】版本2.0 // 入口 function search(nums = [])...原创 2022-02-02 23:16:19 · 742 阅读 · 0 评论 -
【leetCode】归并排序
【题目】 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。 输入一个数组,求出这个数组中的逆序对的总数。 [7,5,6,4] => 5 【归并排序】 // 入口方法 function search(nums = []) { sort(nums, 0, nums.length - 1) return nums } // 归并排序中间方法,将数组分为两个数组,进行排序,排序完后再merge合在一起 function sort(nums, l, r) {原创 2022-02-01 18:32:39 · 2809 阅读 · 0 评论 -
Diff算法对比(Vue,React)
传统Diff算法 传统Diff算法使用的是循环递归每一个节点,不区分层级 即顶层节点循环遍历新vnode的每个节点,这样会导致复杂度能达到O(n^3) Vue的Diff算法(Vue2.0) vue的diff算法使用了patch函数,类似打补丁 使用的是4指针算法,在新旧节点头尾定义指针位置进行遍历 ps:Vue3.0的diff算法借鉴了ivi算法和inferno算法 React的Diff算法 react的Diff算法,将节点分为三种 1.tree diff 对整个树结构进行分层处理,同一原创 2022-01-17 21:49:45 · 1513 阅读 · 0 评论 -
【leetCode】二分查找
【题目】 给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1 【解题代码】 function search( nums , target ) { // write code here if (nums.length === 0) return -1 let p = 0 let q = nums.length - 1 while(p &l.原创 2021-07-27 18:35:09 · 127 阅读 · 0 评论 -
【leetCode】判断链表中是否有环
【题目】 给出一个链表,判断链表中是否存在环 【解题思路】 双指针,指针p前进一步,指针q前进两步,当没有环存在时,q会先一步到达null,当有环存在时,pq会相遇,while的判断条件只需要判断q,因为p是慢指针,走的节点q都已经走过了 【解题代码】 function hasCycle( head ) { // 双指针 let p = head let q = head let flag = false while (q !== null &&a原创 2021-07-26 15:48:39 · 249 阅读 · 0 评论 -
【leetCode】反转链表
【解题思路】 pre:指向反转后的链表的第一个位置,即在最开始是在1位置,后面逐渐移到最后,同时作为返回参数 cur:当前正在操作的节点,最开始在1位置,逐步后移 nex:保存正在操作的节点的下一个节点 【解题代码】 /*function ListNode(x){ this.val = x; this.next = null; }*/ function ReverseList(pHead) { // write code here let pre =...原创 2021-07-17 15:02:06 · 126 阅读 · 0 评论 -
【算法】基础算法:动态规划
【适用于动态规划的必备条件】 1.问题的最优解所包含的子问题的解也是最优的,具有最优子结构 2.某状态以后的过程不会影响以前的状态,只与当前状态有关 3.子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到 【使用动态规划分解问题】 1. 首先将问题分为多个步骤(子问题),每个步骤为最优解 2. 按顺序解,且下个步骤需要上一个步骤的解才能执行(不影响上一个步骤的解) 3. 多步骤间解可以降低大部分复杂度,同时进行空间优化 【经典案例】 一般使用场景最多的是树形结构或多维数...原创 2020-11-09 11:59:04 · 119 阅读 · 0 评论
分享