LeetCode 解题思路 3(Hot 100)

devtools/2025/3/4 17:32:16/

在这里插入图片描述

解题思路:

  1. 初始化指针: 左指针指向数组起始位置,右指针指向数组末尾。
  2. 计算当前面积: 左右指针相遇前所围成的矩形面积。
  3. ​更新最大面积: 比较当前面积与已知最大面积。
  4. 移动指针: 移动较高指针无法获得更大面积,故移动较低指针。

Java代码:

class Solution {public int maxArea(int[] height) {int l = 0, r = height.length - 1;int ans = 0;while (l < r) {int area = Math.min(height[l], height[r]) * (r - l);ans = Math.max(ans, area);if (height[l] <= height[r]) {l++;} else {r--;}}return ans;}
}

复杂度分析:

  • 时间复杂度: 严格O(n),最多移动 n 次指针。
  • 空间复杂度: 所有额外使用的空间与输入规模无关,空间复杂度为O (1)。

在这里插入图片描述

解题思路:

  1. ​排序: 首先对数组进行排序,便于后续处理重复元素和双指针操作。
  2. ​遍历数组: 使用外层循环遍历数组,固定第一个元素 nums[i]。
  3. 双指针法: 对于每个固定的 nums[i],使用双指针 j(左指针)和 k(右指针)在剩余数组中寻找两个数,使得三数之和为0。
  4. 跳过重复元素:
    • 外层循环中,若当前元素与前一个元素相同,则跳过,避免重复的三元组。
    • 内层循环中,找到有效三元组后,跳过所有与当前指针值相同的元素,防止重复。

Java代码:

class Solution {public List<List<Integer>> threeSum(int[] nums) {List<List<Integer>> result = new ArrayList<>();if (nums == null || nums.length < 3) return result;Arrays.sort(nums);for (int i = 0; i < nums.length - 2; i++) {if (i > 0 && nums[i] == nums[i - 1]) continue;int j = i + 1;int k = nums.length - 1;while (j < k) {int sum = nums[i] + nums[j] + nums[k];if (sum < 0) {j++;} else if (sum > 0) {k--;} else {result.add(Arrays.asList(nums[i], nums[j], nums[k]));while (j < k && nums[j] == nums[j + 1]) j++;while (j < k && nums[k] == nums[k - 1]) k--;j++;k--;}}}return result;}
}

复杂度分析:

  • 时间复杂度: 排序时间复杂度为 O(nlogn),遍历与双指针:外层循环遍历 O(n) 次,内层双指针遍历 O(n) 次,总时间复杂度为 O( n 2 n^2 n2)。
  • 空间复杂度: 主要用于存储结果列表,最坏情况下空间复杂度为 O( n 2 n^2 n2),平均情况下为 O(1) 至 O(n)。

http://www.ppmy.cn/devtools/164046.html

相关文章

从头开始学SpringMVC—04文件处理拦截器异常处理执行流程

1&#xff09;文件上传和下载 2&#xff09;拦截器的使用 3&#xff09;异常处理器 4&#xff09;执行流程分析 目录 1.文件上传和下载 1.1文件下载 1.2文件上传 ①添加依赖&#xff1a; ②在SpringMVC的配置文件中添加配置&#xff1a; ③控制器方法&#xff1a; 2.拦截…

华为hcia——Datacom实验指南——STP工作基本原理及STP/RSTP基本功能配置

什么时候需要用到STP 在二层交换网络中&#xff0c;为了避免环路产生。 什么是STP STP生成树协议&#xff0c;是用来在冗余链路上消除二层环路。在众多交换机中&#xff0c;需要设置出一个根桥&#xff0c;其余的交换机称为非根桥&#xff0c;根桥是整个交换网络的核心&…

生成网页链接二维码

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>生成二维码</title><script src"http…

【Java项目】基于Spring Boot的旅游管理系统

【Java项目】基于Spring Boot的旅游管理系统 技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;旅游管理系统是一个基于Web的在线平台&#xff0c;主要分为前台和后台两大功能模块。前台功能模块包括&#xff08;1&#xff09;首…

蓝桥杯备赛-前缀和-可获得的最小取值

问题描述 妮妮学姐手头有一个长度为 nn 的数组 aa&#xff0c;她想进行 kk 次操作来取出数组中的元素。每次操作必须选择以下两种操作之一&#xff1a; 取出数组中的最大元素。取出数组中的最小元素和次小元素。 妮妮学姐希望在进行完 kk 次操作后&#xff0c;取出的数的和最…

网络安全员证书

软考网络安全员证书&#xff1a;信息安全领域的黄金标准 随着信息技术的飞速发展&#xff0c;网络安全问题日益凸显&#xff0c;网络安全员的需求也日益增加。软考网络安全员证书作为信息安全领域的黄金标准&#xff0c;对于网络安全从业者来说具有重要意义。本文将详细介绍…

行为型模式 - 观察者模式 (Publish/Subscribe)

行为型模式 - 观察者模式 (Publish/Subscribe) 又称作为订阅发布模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;在该模式中&#xff0c;发送者&#xff08;发布者&#xff09;不会直接将消息发送给特定的接收者&#xff08;订阅者&…

LVS+Keepalived高可用高性能负载实战

高可用集群&#xff08; High Availability Cluster, HA 集群&#xff09;&#xff0c;其中高可用的含义是最大限度地可以使用。从集群 的名字上可以看出&#xff0c;此类集群实现的功能是保障用户的应用程序持久、不间断地提供服务。 当应用程序出现故障或者系统硬件、网络出现…