2024-08-25
LEETCODE
00

目录

要点记录
快速的字符串数组与整型数组转换
长度不确定的数组问题
题解代码

问题传送门:https://leetcode.cn/problems/compare-version-numbers/description/

本题核心:划分,比较,长度差别考虑。

本题实际上难度不高,只是JS生疏了,记录一下一些简单的要点。

要点记录

快速的字符串数组与整型数组转换

当下有如下数组与代码:

JS
let sampleArray = ['123','456','789','000'] console.log(sampleArray)

其输出的结果为:

['123', '456', '789', '000']

如果使用map(type),可以进行自动的类型转换,如下所示:

JS
let sampleArray = ['123','456','789','000'] sampleArray = sampleArray.map(Number) console.log(sampleArray)

其输出的结果为:

[123, 456, 789, 0]

同理,将type设置成String,可以实现整型数组到字符串数组的转换。

长度不确定的数组问题

有时我们会面对长度不确定的数组问题,例如,你需要比较每一个数组,但你不知道哪个会比较长,直接使用length进行遍历可能会导致较短的数组的索引越界问题。

这个时候,我们可以尝试使用删除元素的方法。即:我们访问数组的第一个/最后一个元素,使用完成之后如果这个元素不会再被访问到,可以使用shift()pop()方法删除。

使用这种方法只需要一个while循环,在两个数组长度均不为0时持续判断并删除数组,直到有一个数组长度被遍历完,跳出循环,此时再对剩余长度进行判定,将剩余元素操作完成即可。

需要注意的是,Array.shift()删除数组的首个元素,Array.pop()删除数组的最后一个元素。这两种方法均在原数组上进行操作,会改变原数组的长度。返回值为删除掉的元素。

JS
let sampleArray = ['123','456','789','000'] console.log(sampleArray) sampleArray.shift() console.log(sampleArray) sampleArray.pop() console.log(sampleArray)

输出结果为:

['123', '456', '789', '000'] ['456', '789', '000'] ['456', '789']

题解代码

JS
/** * @param {string} version1 * @param {string} version2 * @return {number} */ var compareVersion = function(version1, version2) { let array_v1 = version1.split('.').map(Number) let array_v2 = version2.split('.').map(Number) while (array_v1.length !== 0 && array_v2.length !== 0) { if (array_v1[0] === array_v2[0]) { array_v1.shift() array_v2.shift() continue } if (array_v1[0] > array_v2[0]) { return 1 } else { return -1 } } if (array_v1.length !== 0) { for (let i = 0; i < array_v1.length; i++) { if (array_v1[i] !== 0) { return 1 } } return 0 } if (array_v2.length !== 0) { for (let i = 0; i < array_v2.length; i++) { if (array_v2[i] !== 0) { return -1 } } return 0 } return 0 };

本文作者:Jeff Wu

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!