1、做算法题前,一定要先弄清楚 时间复杂度;这样在解答时心里能明白 此方案 的时间复杂度是多少。
2、前端最重要的数据结构是“树”,所以 树的算法题 要多做,多理解
数据结构
1、链表
//常用遍历
while(head){
head = head.next
}
return head
//常加哨兵
let dummny ={
next: head
}
return dummny.next
2、数组
for(let i=;i<arr.length;i++){
arr[i]
}
3、树
前端最需要刷的数据结构!!!
如:(二叉树)
functon walk(treeNode){
//终止条件
if(treeNode==null){
return
}
处理treeNode //进入节点
walk(treeNode.left)
walk(treeNode.right)
walk(treeNode.left)
处理treeNode
walk(treeNode.right)
walk(treeNode.left)
walk(treeNode.right)
处理treeNode //离开节点
}
算法思想
1、双指针(快慢指针,头尾指针)
- 链表,数组
let fast