双指针技巧-数组题&解
参阅基础
双指针技巧秒杀七道数组题目
相关习题LeetCode 26.删除有序数组中的重复项题目来源:https://leetcode.cn/problems/remove-duplicates-from-sorted-array/难度:简单
我的题解思路:运用快慢指针技巧。设置fast引为1,slow索引为0,快指针在前面探路,找到一个不重复的就赋值给slow并让其前进一步去准备接受下一个不重复的值。
123456789101112131415161718/** * @param {number[]} nums * @return {number} */var removeDuplicates = function(nums) { let fast = 1; let slow = 0; while(fast < nums.length){ if(nums[fast] != nums[slow]){ slow++; nums[slow ...
双指针技巧-链表题&解
参阅基础
双指针技巧秒杀七道链表题目
enpei-双指针简介
简介双指针,指的是在遍历对象的过程中,不使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。
换言之,双指针法充分使用了数组(或链表)有序这一特征,从而在某些情况下能够简化一些运算。
对于单链来说,大部份技巧都属于快慢指针。
此外,链表算法题还有个很常见的「虚拟头结点」技巧。就是在实际的链表头前放一个 dummy 节点,作为占位符,可以避免处理空指针的情况,降低代码的复杂性。
相关习题LeedCode 21.合并两个有序链表题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
来源:https://leetcode.cn/problems/merge-two-sorted-lists/
示例 1:
12输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]
示例 2:
12输入:l1 = [], l2 = []输出:[]
示例 3:
12输入:l1 = [], l2 = ...
LinkedList 实现
参阅基础
学习 JavaScript 数据结构与算法(第六章-链表)
定义链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。
LinkedList 类第一步:创建LinkedList.js
职责:
push(element):向链表尾部添加一个新元素。
removeAt(position): 从链表的特定位置移出一个元素。
insert(element,postion): 向链表的特定位置插入一个新元素。
size(): 返回链表包含的元素个数。
isEmpty(): 如果链表中不包含任何元素,返回true,如果链表长度大于0则返回false。
getElementAt(index): 返回链表中特定位置的元素。如果链表中不存在这样的元素,则返回undefined。
indexOf(element): 返回元素在链表中的索引。如果链表中没有该元素则返回-1。
remove(element): 从链表中删除一个元素。
toString(): 返回表示整个链表的字符串。由于列表 ...
差分数组题&解
参阅基础
enpei-差分数组简介
小而美的算法技巧:差分数组
labuladong差分数组精讲-13min后
简介适用场景:频繁对原始数组的某个区间的元素进行增减。
差分数组抽象类1234567891011121314151617181920212223242526272829class Difference { constructor(nums) { this.diff = new Array(nums.length).fill(0); this.diff[0] = nums[0]; for (let i = 1; i <= nums.length - 1; i++) { this.diff[i] = nums[i] - nums[i - 1]; } } // 让用户去执行区间加减操作 increment(i, j, val) { this.diff[i] += val; if (this.d ...
前缀和数组算法题&解
参阅基础
学习 JavaScript 数据结构与算法(第三章-数组)
enpei-前缀和简介
小而美的算法技巧:前缀和数组
简介前缀和主要适用的场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和。
相关习题Leetcode 303. 区域和检索 - 数组不可变 (实例题)题目比方说,你们班上有若干同学,每个同学有一个期末考试的成绩(满分 100 分),那么请你实现一个 API,输入任意一个分数段,返回有多少同学的成绩在这个分数段内。
我的题解核心思路:根据一维数组的前缀和求解
123456789101112131415161718192021222324252627282930313233343536// 同学成绩let scores = [80, 90, 80, 60, 65, 70, 68, 50, 40, 100, 38, 17];/* 6-16行只在前缀和数组解法中使用 */// 试卷满分100分 (0-100)const count = new Array(101);count.fill(0);scores.forEach((score) => { ...
react16.8-17 & 全家桶学习 Q&A
在react学习中的一些Q&A记录...更新完毕⭐️
git or github 入门使用指南&技巧
在学习过程中总结更实用的 git or github 使用指南⭐️
Vue踩雷
在vue开发中踩过的一些坑的记录...持续更新⭐️







