题目 1:
问题描述: 给定一个整型数组 nums,编写一个函数,将数组中的所有奇数移动到数组的开头,所有偶数移动到数组的末尾,并保持它们的相对顺序。
/**
* @param {number[]} nums
* @return {void}
*/
function moveOddEven(nums) {
let left = 0;
let right = nums.length - 1;
while (left < right) {
while (nums[left] % 2 === 1) {
left++;
}
while (nums[right] % 2 === 0) {
right--;
}
if (left < right) {
[nums[left], nums[right]] = [nums[right], nums[left]];
}
}
}
// 示例输入和输出
const nums = [2, 3, 1, 4, 6, 5];
moveOddEven(nums);
console.log(nums); // 输出 [3, 1, 5, 2, 4, 6]
题目 2:
问题描述: 给定一个整型数组 nums,编写一个函数,找出数组中第 k 大的元素。
/**
* @param {number[]} nums
* @param {number} k
* @return {number}
*/
function findKthLargest(nums, k) {
nums.sort((a, b) => b - a);
return nums[k - 1];
}
// 示例输入和输出
const nums = [3, 2, 1, 5, 6, 4];
const k = 2;
console.log(findKthLargest(nums, k)); // 输出 5
题目 3:
问题描述: 给定一个整型数组 nums,编写一个函数,返回数组中最长的连续递增序列的长度。
/**
* @param {number[]} nums
* @return {number}
*/
function findLengthOfLCIS(nums) {
let maxLength = 0;
let currentLength = 0;
for (let i = 0; i < nums.length; i++) {
if (i === 0 || nums[i] > nums[i - 1]) {
currentLength++;
} else {
maxLength = Math.max(maxLength, currentLength);
currentLength = 1;
}
}
return Math.max(maxLength, currentLength);
}
// 示例输入和输出
const nums = [1, 3, 5, 4, 7];
console.log(findLengthOfLCIS(nums)); // 输出 3
题目 4:
问题描述: 给定一个整型数组 nums,编写一个函数,返回数组中的两个数字,使它们的和与给定的目标值 target 最接近。
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
function twoSumClosest(nums, target) {
nums.sort((a, b) => a - b);
let left = 0;
let right = nums.length - 1;
let closestSum = nums[left] + nums[right];
while (left < right) {
const sum = nums[left] + nums[right];
if (Math.abs(sum - target) < Math.abs(closestSum - target)) {
closestSum = sum;
}
if (sum < target) {
left++;
} else {
right--;
}
}
return closestSum;
}
// 示例输入和输出
const nums = [-1, 2, 1, -4];
const target = 1;
console.log(twoSumClosest(nums, target)); // 输出 2
题目 5:文章来源:https://www.toymoban.com/news/detail-829311.html
问题描述: 给定一个整型数组 nums,编写一个函数,返回数组中出现次数超过一半的元素。文章来源地址https://www.toymoban.com/news/detail-829311.html
/**
* @param {number[]} nums
* @return {number}
*/
function majorityElement(nums) {
let majority = nums[0];
let count = 1;
for (let i = 1; i < nums.length; i++) {
if (count === 0) {
majority = nums[i];
}
if (nums[i] === majority) {
count++;
} else {
count--;
}
}
return majority;
}
// 示例输入和输出
const nums = [3, 2, 3];
console.log(majorityElement(nums)); // 输出 3
到了这里,关于JavaScript 数组算法题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!