算法
唯一3
这个作者很懒,什么都没留下…
展开
-
数据结构 树相关
一、非递归方法:所有的大背景:先判断head是否为空。1.先序遍历:把根节点放到栈中循环:(终止条件:栈为空)(1)栈中弹出一个节点(2)打印该节点的值(3)如果有右节点,把右节点压到栈里;如果有左节点,把左节点压到栈里思考:先打印头:【1】头先压右再压左:通过栈的方法调整顺序变为【2】左【3】右合并所有过程【1】头【2】左【3】右2.后序遍历 把根节点放到栈中循环:(终止条件:栈为空)(1)栈中弹出一个节点(...原创 2021-10-27 09:31:26 · 146 阅读 · 0 评论 -
数据结构 链表相关
1.判断链表是否成环:使用快慢指针,快指针一次走两步,慢指针一次走一步,当快指针不为null时,如果有环快慢指针必然在环内相遇,并且快指针与慢指针相遇时,慢指针在环内走不过两圈。2.返回入环节点:快慢指针相遇后,让快指针再指回链表头,此时快慢指针一次走一步,当两者第一次相遇时,此时快慢指针相遇的节点就是入环节点。...原创 2021-10-26 19:36:18 · 158 阅读 · 0 评论 -
数据结构格式相关
一.哈希表map.has(jian);// 找表里有没有这个键map.get(jian);// 获取表里键所对应的值map.set(jian,zhi);// 向表里添加键值对原创 2021-10-13 23:08:39 · 117 阅读 · 0 评论 -
排序算法总结
一.排序的稳定性排序的稳定性是指对于非基础类型的对象进行排序时,能否实现保留原来的相对位置,如果可以保留原来的位置则说明该类型具有稳定性。1.有稳定性:冒泡排序、插入排序2.无稳定性:选择排序...原创 2021-10-12 19:37:05 · 55 阅读 · 0 评论 -
JS 堆排序
function heapSort(arr) { if (arr == null || arr.length < 2) { return; } for (var i = 0; i < arr.length; i++) { // logN heapInsert(arr, i); // logN 新建大根堆 } ...原创 2021-10-09 21:01:33 · 97 阅读 · 0 评论 -
JS 快排
1.荷兰国旗问题2.快排1.0时间复杂度: 最坏O(N^2):每次都只有大于num的情况或只有小于num的情况最好O(N*logN):每次都打到中间位置,master公式<=num || >=num || num --> <=num || num >=num3.快排2.0(借荷兰国旗)进步之处:添加了==num的情况<num || ==num || >num || num --> ...原创 2021-10-09 18:46:10 · 195 阅读 · 0 评论 -
归并排序 merge sort
时间复杂度:O(N*log(N)) 对N个数排序,每个数logN,二分思想空间复杂度:O(N) 创建了一个长度为N的辅助空间节约了比较行为,让每一次的排序都为下一次排序提供了信息,避免了比较行为的浪费。 var time = 1; function process(arr, L, R) { if (L == R) { return; } var M = L原创 2021-10-09 11:27:56 · 64 阅读 · 0 评论