删除有序数组的重复元素 发表于 2022-01-13 更新于 2022-01-19 阅读量: Valine: 本文字数: 1.7k该类题目包含以下的四道题:删除有序数组中的重复项删除排序链表中的重复元素移除元素移动零删除有序数组中的重复项12345678910111213141516171819202122232425/** * @param {number[]} nums * @return {number} */var removeDuplicates = function (nums) { if (nums.length === 0) { return; } let slow, fast; slow = fast = 0; const len = nums.length; while (fast < len) { if (nums[fast] !== nums[slow]) { // 每次找到一个不重复的元素就告诉 slow 并让 slow 前进一步 // 然后给 slow 赋值 fast 所在位置的值 // 因为第一个元素必定不是重复元素,所以先移动 slow slow++; nums[slow] = nums[fast]; } fast++; } return slow + 1;};删除排序链表中的重复元素12345678910111213141516171819202122232425262728/** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } *//** * @param {ListNode} head * @return {ListNode} */var deleteDuplicates = function(head) { if (!head) { return head; } let slow, fast; slow = fast = head; while (fast) { if (fast.val !== slow.val) { slow.next = fast; slow = slow.next; } fast = fast.next; } // 与后面断开连接 slow.next = null; return head;};移除元素123456789101112131415161718/** * @param {number[]} nums * @param {number} val * @return {number} */var removeElement = function(nums, val) { let slow, fast; slow = fast = 0; while (fast < nums.length) { if (nums[fast] !== val) { // 第一个元素也可能等于 val,所以先赋值再移动 slow nums[slow] = nums[fast]; slow++; } fast++; } return slow;};移动零123456789101112131415/** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */var moveZeroes = function(nums) { let slow, fast; slow = fast = 0; while (fast < nums.length) { if (nums[fast] !== 0) { [nums[slow], nums[fast]] = [nums[fast], nums[slow]]; slow++; } fast++; }};参考题解:https://labuladong.gitee.io/algo/4/29/120/代码随想录本文标题:删除有序数组的重复元素文章作者:Flower-F发布时间:2022年01月13日 - 10:25最后更新:2022年01月19日 - 16:40-------------本文结束,感谢您的阅读-------------欢迎关注我的其它发布渠道 RSS