实现盛最多水的容器算法的示例代码
class Solution {
public int maxArea(int[] height) {
// 对高度数组进行排序
height.sort((a, b) => b - a);
// 初始化容器的水位为0
int maxArea = 0;
// 遍历高度数组,计算容器的水位
for (let i = 0; i < height.length; i++) {
// 当前高度超过容器的水位,更新容器的水位
if (height[i] > maxArea) {
maxArea = height[i];
}
}
return maxArea;
}
}
定义了一个 Solution 类,用于实现盛最多水的容器算法。在类中,我们定义了一个 maxArea 方法,用于计算容器的最大面积。在方法中,我们首先对高度数组进行排序,然后初始化容器的水位为0,遍历高度数组,如果当前高度超过容器的水位,则更新容器的水位
实现最接近的三数之和算法的示例代码
function closestThreeSum(nums: number[], target: number): number {
// 对数组进行排序
nums.sort((a, b) => b - a);
// 初始化最小值和最大值
let min = Infinity;
let max = -Infinity;
// 遍历数组,找到最接近的三个数
for (let i = 0; i < nums.length; i++) {
let currentSum = nums[i];
if (currentSum < min) {
min = currentSum;
} else if (currentSum > max) {
max = currentSum;
}
}
// 返回最接近的三个数的和
return Math.min(min, max) + 1;
}
// 示例用法
const nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4];
const target = -6;
console.log(closestThreeSum(nums, target)); // 输出 5
closestThreeSum 的函数,用于计算数组 nums 中最接近 target 的三个数的和。在函数中,我们首先对数组进行排序,然后初始化最小值和最大值为 Infinity 和 -Infinity,分别表示数组中的最小值和最大值。接着,我们遍历数组,找到最接近的三个数,并计算它们的和
实现删除链表的倒数第 N 个节点的算法
function removeNthFromEnd(head: number[], n: number): number[] {
if (!head || n <= 0) {
return head;
}
let prev = null;
let current = head;
let count = 0;
// 如果链表只有一个节点,则不需要删除节点
if (!n && current.next) {
prev = current.next;
current.next = null;
return prev;
}
// 如果要删除的节点是头节点,则直接返回原链表
if (current.next) {
prev = current.next;
current.next = null;
return prev;
}
// 遍历链表,找到第一个等于n的节点
while (current) {
if (current.value === n) {
prev.next = current.next;
current.next = null;
return prev;
}
current = current.next;
}
// 如果没有找到等于n的节点,则返回原链表
return head;
}
removeNthFromEnd 的函数,用于删除链表的倒数第 N 个节点。在函数中,我们首先判断链表是否为空或者要删除的节点是否为头节点,如果是则直接返回原链表。否则,我们遍历链表,找到第一个等于 n 的节点,将其前一个节点作为要删除节点的前一个节点,然后将要删除节点的指针设置为 nul。
需要注意在删除链表的倒数第 N 个节点的算法时,考虑链表为空或者要删除的节点为头节点的情况,并进行相应的处理