代码随想录算法训练营第3天|链表Part01

代码随想录算法训练营第3天|链表Part01

在刷到 LeetCode 707「设计链表」题目时,我借此机会深入复习了 JavaScript 中的类(class)机制。 过程中发现,class 语法表面看似简洁,但其底层原理与传统的函数构造器密切相关。 为了更加深刻地理解这一点,本文尝试从语法、机制和语言设计的角度系统梳理 JavaScript 中类的本质。

理解 JavaScript 类的本质:构造函数、语法糖与对象工厂

阅读更多

代码随想录算法训练营第2天|数组Part02

给定一个含有 n 个正整数的数组和一个正整数 target

找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0

  • 同样是双指针,滑动窗口是暴力解法的优化。
  • 通过 x === Infinityx === -Infinity 判断是否为无穷值。
  • 滑动窗口的时间复杂度:每个元素在滑动窗后进来操作一次,出去操作一次,所以时间复杂度是 2 × n 也就是O(n)。
阅读更多

代码随想录算法训练营第1天|数组Part01

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果 target 存在返回下标,否则返回 -1。 你必须编写一个具有 O(log n) 时间复杂度的算法。

二分查找的前提条件

  1. 数组有序
  2. 无重复元素

若存在重复元素,返回的下标可能不唯一,可能需要额外逻辑处理

阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×