删除有序数组中的重复项
删除有序数组中的重复项题目
给你一个 非严格递增排列 的数组 nums ,请你** 原地** 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:
更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
返回 k 。
判题标准:
系统会用下面的代码来测试你的题解:
123456789int[] nums = [...]; // 输入数组int[] expectedNums = [...]; // 长度正确的期望答案int k = removeDuplicates(nums); // 调用assert k == expectedNums.length;for (int i = 0; i < k; i++) { assert nums[i] == expectedNums[i]; ...
移除元素
移除元素题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。
假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:
更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
返回 k。
用户评测:
评测机将使用以下代码测试您的解决方案:
123456789101112int[] nums = [...]; // 输入数组int val = ...; // 要移除的值int[] expectedNums = [...]; // 长度正确的预期答案。 // 它以不等于 val 的值排序。int k = removeElement(nums, val); // 调用你的实现assert k == expectedNums.length;sort(nums, 0, k); // 排序 nums 的前 k 个元素for ...
合并两个有序数组
合并两个有序数组题目给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。
请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
示例 1:
1234输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]解释:需要合并 [1,2,3] 和 [2,5,6] 。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。
示例 2:
1234输入:nums1 = [1], m = 1, nums2 = [], n = 0输出:[1]解释:需要合并 [1] 和 [] 。合并结果是 [1] 。
示例 3:
12345输入:nums1 ...
实现Pow(x, n)
实现Pow(x, n)题目实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。
示例 1:
12输入:x = 2.00000, n = 10输出:1024.00000
示例 2:
12输入:x = 2.10000, n = 3输出:9.26100
示例 3:
123输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25
提示:
-100.0 < x < 100.0
-231 <= n <= 231-1
n 是一个整数
要么 x 不为零,要么 n > 0 。
-104 <= xn <= 104
暴力解法12345678910111213141516171819202122function pow(x, n) { // 处理负指数 if (n < 0) { return 1 / pow(x, -n); } // 处理0次方的情况 if (n === 0 ...
自定义实现数组unshift效果
自定义实现数组unshift效果数组的unshift在JavaScript中,数组的unshift方法用于将一个或多个元素添加到数组的开始位置,并返回新数组的长度。
例如,如果你有一个数组arr,你可以使用unshift方法将一个新元素添加到数组的开始位置:
12345let arr = [2, 3, 4];let newLength = arr.unshift(1);console.log(arr); // 输出: [1, 2, 3, 4]console.log(newLength); // 输出: 4
你也可以同时添加多个元素:
12345let arr = [3, 4, 5];let newLength = arr.unshift(1, 2);console.log(arr); // 输出: [1, 2, 3, 4, 5]console.log(newLength); // 输出: 5
unshift方法可以用于向数组开头添加一个或多个元素,并返回新的数组长度。这是一个非常有用的方法,特别是在需要在数组中添加元素的场景中。
自定义实现:myUnshif ...
数组去重的方式
数组去重的方式现有如下数组:
12345678910111213141516171819let arr = [ {}, {}, '', '', 233, 233, '233', 'abc', undefined, undefined, null, null, NaN, NaN, [2], [2], [2, 3]]
将使用以下几种方式分别实现数组去重
使用Set数据结构123456Array.prototype.myUnique = function(){ return Array.from(new Set(this));}console.log(arr.myUnique());// 最终结果为:// [{}, {}, '', 233,'233', 'a ...
手写Promise
手写PromisePromise介绍1. 概念JavaScript中的Promise是一种用于处理异步操作的对象,它代表了一个尚未完成但最终会完成或失败的操作,目的是更加优雅地书写复杂的异步任务。
2. 状态
Promise有三种状态:pending(待定)、fulfilled(已成功)和rejected(已失败)。
当一个Promise被创建时,它处于pending状态。
当操作成功完成时,Promise会转换为fulfilled状态,并返回一个值。
当操作失败时,Promise会转换为rejected状态,并返回一个原因(通常是一个Error对象)。
3. 构造函数
Promise是通过构造函数创建的,其参数是一个执行器函数,该函数接受两个参数:resolve和reject。
resolve函数用于将Promise状态从pending转换为fulfilled,并传递一个值作为成功的结果。
reject函数用于将Promise状态从pending转换为rejected,并传递一个原因作为失败的结果。
4. then()
Promise对象具有then()方法,用于指定在Promi ...