JS刷题总结

大哥们有没有人讲详细点的我想问下,JS刷题总结
最新回答
爱情的模样

2026-10-22 07:26:26

JS刷题总结

关于缩减代码

  • 善用JS中的函数或特性:

    迭代、解构、Set等特性可简化代码。例如使用解构赋值快速提取对象属性,Set可快速去重。

  • 善用位运算:

    位运算效率高,适用于特定场景。如判断奇偶用num & 1,交换变量值a ^= b; b ^= a; a ^= b。

  • 善用正则表达式:

    字符串题目优先考虑正则。掌握正则的exec、test方法,以及字符串的search、match、replace、split方法。例如用replace(/[^0-9]/g, '')提取数字。

  • 少写函数:

    刷题以通过为目标,无需封装重用。减少函数可避免参数传递的思考,提高解题速度。

  • 递归函数:

    递归需写函数,但建议用循环搭配栈/队列替代,降低空间复杂度。如二叉树遍历可用循环实现。

关于刷题方法

  • 审题先判断陷阱:

    关注时间复杂度(如大数问题需优化算法)、空间复杂度(如递归改循环)。优先掌握动态规划,因其可解决多数贪心问题。

  • 联想:

    字符串问题→正则;链表/数组问题→双指针;数组问题→利用下标或额外数组;多维数组问题→降维;复杂问题→动态规划;排列问题→递归/回溯;数论问题→找规律/动态规划;树问题→递归/遍历(栈/队列);次数问题→哈希表(JS用{});大小值问题→栈/队列/哈希表;反向思考简化问题。

  • 必须掌握的算法:

    排序与查找:快排、归并排序、二分查找(能手撕代码)。

    遍历:深度优先遍历(DFS)、广度优先遍历(BFS)。

    动态规划与回溯:动态规划用于优化问题,回溯法用于排列组合问题。

  • 多画图:

    链表、二叉树等数据结构题画图辅助理解;概率问题画圈圈表示交并补;点线问题画坐标系。

  • 多举例:

    复杂问题举小例子分析步骤;数论问题举例子找规律;不会做时通过举例生成测试用例,部分测试用例可能通过部分测试点。

  • 智力题:

    剩余可能淘汰的是智力题,需额外准备。