当前位置: 首页 > news >正文

LeetCode 解题思路 3(Hot 100)

在这里插入图片描述

解题思路:

  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)。

相关文章:

LeetCode 解题思路 3(Hot 100)

解题思路&#xff1a; 初始化指针&#xff1a; 左指针指向数组起始位置&#xff0c;右指针指向数组末尾。计算当前面积&#xff1a; 左右指针相遇前所围成的矩形面积。​更新最大面积&#xff1a; 比较当前面积与已知最大面积。​移动指针&#xff1a; 移动较高指针无法获得更…...

算法-二叉树篇11-左叶子之和

左叶子之和 力扣题目链接 题目描述 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 解题思路 层次遍历的时候&#xff0c;保留每层第一个节点并相加即可。 题解 class Solution { public:int sumOfLeftLeaves(TreeNode* root) {if(root NULL){return 0;}re…...

MaxKB上架至阿里云轻量应用服务器镜像市场

近日&#xff0c;MaxKB开源知识库问答系统已上架至阿里云轻量应用服务器镜像市场&#xff0c;目前是阿里云此类镜像市场中唯一推荐的AI应用镜像。 ▲图1 MaxKB已经上架至阿里云轻量应用服务器镜像市场 MaxKB是飞致云旗下开源项目&#xff0c;是一款基于大语言模型和RAG&…...

用户态和内核态是什么?

用户态&#xff08;User Mode&#xff09;和内核态&#xff08;Kernel Mode&#xff09;。这两个概念是理解操作系统工作原理的基础。 1. 什么是用户态和内核态&#xff1f; 1.1 用户态&#xff08;User Mode&#xff09; 用户态是操作系统为普通应用程序提供的运行模式。在这…...

2025年SCI一区智能优化算法:混沌进化优化算法(Chaotic Evolution Optimization, CEO),提供MATLAB代码

一、混沌进化优化算法 https://github.com/ITyuanshou/MATLABCode 1. 算法简介 混沌进化优化算法&#xff08;Chaotic Evolution Optimization, CEO&#xff09;是2025年提出的一种受混沌动力学启发的新型元启发式算法。该算法的主要灵感来源于二维离散忆阻映射的混沌进化过…...

普中单片机-51TFT-LCD显示屏(1.8寸 STM32)

普中官方论坛&#xff1a; http://www.prechin.cn/gongsixinwen/208.html 普中科技-各型号开发板资料链接&#xff1a;https://www.bilibili.com/read/cv23681775/?spm_id_from333.999.0.0 27-TFTLCD显示实验_哔哩哔哩_bilibili 2.程序烧录 2.1设置彩屏驱动 3.实验效果...

SGMII(Serial Gigabit Media Independent Interface)详解

一、SGMII的定义与作用 SGMII&#xff08;串行千兆介质无关接口&#xff09;是一种用于千兆以太网&#xff08;1Gbps&#xff09;的串行接口标准&#xff0c;旨在通过减少引脚数量和简化设计&#xff0c;实现MAC层与PHY芯片之间的高速通信。其核心作用包括&#xff1a; 引脚精…...

DeepSeek:我的AI助手之旅

★【前言】: 初次使用AI助手帮我写作,就像摸石头过河一样,一点点的前行。我在慢慢的摸索,慢慢的体会中,感悟出的一点个人心得体会现分享给大家。这也说明一个问题,网站上各种使用方法和技巧是对于已经使用过的人来说的方便和快捷,但对于刚刚接触的使用者来说,网上的各…...

图片批量去重---(均值哈希、插值哈希、感知哈希、三/单通道直方图)

一、整体步骤 本脚本中&#xff0c;关键步骤包括以下步骤&#xff1a; 1、图片加载&#xff1a; 脚本会遍历指定的图片目录&#xff0c;将所有图片加载到内存中。 2、图像预处理&#xff1a; 比较之前&#xff0c;通常需要对图片进行预处理&#xff0c;如调整大小、灰度化或直方…...

Linux:(3)

一&#xff1a;Linux和Linux互传&#xff08;压缩包&#xff09; scp:Linux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的&#xff0c;rcp 是不加密的&#xff0c;scp 是…...

vscode设置自动换行

vscode设置自动换行 方法 方法 点击文件->首选项->设置。搜索word wrap -> 选择 on 。 搜索Word Wrap&#xff0c;并把选项改为on。...

Instagram 隐私设置全面解析:如何保护你的个人数据?

Instagram 隐私设置全面解析&#xff1a;如何保护你的个人数据&#xff1f; 在这个数字化时代&#xff0c;社交媒体平台如 Instagram 已成为我们日常生活的一部分。然而&#xff0c;随着个人信息泄露和隐私侵犯事件的频发&#xff0c;保护个人数据变得尤为重要。本文将全面解析…...

Activiti 5 + Spring Boot全流程开发指南

目录 一、环境搭建&#xff08;Spring Boot 2.x&#xff09; 1.1 依赖配置 1.2 配置文件 二、流程定义与部署 2.1 创建BPMN文件&#xff08;leave.bpmn&#xff09; 2.2 流程部署服务 三、流程操作核心实现 3.1 启动流程实例 3.2 查询待办任务 四、审批流程处理 4.1 …...

spring结合mybatis多租户实现单库分表

实现单库分表 思路&#xff1a;student表数据量大&#xff0c;所以将其进行分表处理。一共有三个分表&#xff0c;分别是student0&#xff0c;student1&#xff0c;student2&#xff0c;在新增数据的时候&#xff0c;根据请求头中的meta-tenant参数决定数据存在哪张表表。 数…...

面向对象编程(OOP)基础:Java入门指南

引言 随着计算机技术的发展&#xff0c;软件的应用越来越复杂&#xff0c;单个程序的功能也逐渐增多。为了提高代码的复用性和可维护性&#xff0c;Java语言引入了**面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;**这一设计理念。 OOP是一种设计程序…...

day7作业

编写一个如下场景&#xff1a; 有一个英雄Hero类&#xff0c;私有成员&#xff0c;攻击&#xff08;Atx&#xff09;&#xff0c;防御&#xff08;Defense&#xff09;&#xff0c;速度&#xff08;Speed)&#xff0c;生命值&#xff08;Blood)&#xff0c;以及所有的set get 方…...

图像处理之图像边缘检测算法

目录 1 图像边缘检测算法简介 2 Sobel边缘检测 3 经典的Canny边缘检测算法 4 演示Demo 4.1 开发环境 4.2 功能介绍 4.3 下载地址 参考 1 图像边缘检测算法简介 图像边缘检测是计算机视觉和图像处理中的基本问题&#xff0c;主要目的是提取图像中明暗变化明显的边缘细节…...

第二十五 :搭建 pinia 环境

第一步&#xff1a;npm install pinia 第二步&#xff1a;操作src/main.ts import { createApp } from vue import App from ./App.vue ​ /* 引入createPinia&#xff0c;用于创建pinia */ import { createPinia } from pinia ​ /* 创建pinia */ const pinia createPinia(…...

学习Java数组操作:从基础到高级技巧详解

在Java编程中&#xff0c;数组是一种非常基础且常用的非 primitives 数据结构&#xff0c;它用于存储一组相同类型的值。无论是数据处理、遍历还是其他操作&#xff0c;数组都是一个不可或缺的工具。本文将从数组的基本概念开始&#xff0c;逐步介绍常用的操作方法&#xff0c;…...

算法题(79):两个数组的交集

审题&#xff1a; 本题需要我们查找两个给定数组的无重复数据交集&#xff0c;并以数组的形式返回 思路&#xff1a; 方法一&#xff1a;set 之前我们学习过unordered_set的使用&#xff0c;但是unordered_set是无序的&#xff0c;而这里我们的比对算法需要有序数据&#xff0c…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...