From 01e824486494030b436f9300daa1f3a545f52214 Mon Sep 17 00:00:00 2001 From: = <--gbloal> Date: Sun, 26 May 2024 15:14:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=A0=E9=99=A4=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E9=87=8D=E5=A4=8D=E9=A1=B9(26)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- leetcode/简单/删除有序数组中的重复项.js | 65 +++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 leetcode/简单/删除有序数组中的重复项.js diff --git a/leetcode/简单/删除有序数组中的重复项.js b/leetcode/简单/删除有序数组中的重复项.js new file mode 100644 index 0000000..3411170 --- /dev/null +++ b/leetcode/简单/删除有序数组中的重复项.js @@ -0,0 +1,65 @@ +/* +26. 删除有序数组中的重复项 +已解答 +简单 + +相关标签 +相关企业 + +提示 +给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 + +考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过: + +更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。 +返回 k 。 +判题标准: + +系统会用下面的代码来测试你的题解: + +int[] nums = [...]; // 输入数组 +int[] expectedNums = [...]; // 长度正确的期望答案 + +int k = removeDuplicates(nums); // 调用 + +assert k == expectedNums.length; +for (int i = 0; i < k; i++) { + assert nums[i] == expectedNums[i]; +} +如果所有断言都通过,那么您的题解将被 通过。 + +示例 1: + +输入:nums = [1,1,2] +输出:2, nums = [1,2,_] +解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。 +示例 2: + +输入:nums = [0,0,1,1,1,2,2,3,3,4] +输出:5, nums = [0,1,2,3,4] +解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4 。不需要考虑数组中超出新长度后面的元素。 + +提示: + +1 <= nums.length <= 3 * 104 +-104 <= nums[i] <= 104 +nums 已按 非严格递增 排列 +*/ + +/** + * @param {number[]} nums + * @return {number} + */ +const removeDuplicates = function (nums) { + const len = nums.length; + let i = 1; + for (let j = 1; j < len; j++) { + if (nums[i] !== nums[j]) { + nums[i++] = nums[j]; + } + } + return ++i; +}; +const nums = [0, 0, 1, 1, 1, 2, 2, 3, 3, 4]; +console.log(removeDuplicates(nums)); +console.log(nums);