每日算法(第十一期)

news/2025/1/1 19:15:40/

先来回顾一下昨天的面试题及答案:

「盛最多水的容器」(Container With Most Water)

题目描述: 给定 n 个非负整数 a1,a2,...,an,代表坐标中的 n 个点 (i, ai)。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

解题思路: 这道题可以使用双指针的方法来解决。我们初始化左指针指向数组的起始位置,右指针指向数组的结束位置。然后,计算当前左右指针所指的两条垂直线构成的容器的面积。面积的计算公式是:面积 = (右指针 - 左指针) * min(左指针的高度, 右指针的高度)。接下来,我们移动指针的原则是:每次移动高度较小的指针,这样才有可能找到更高的垂直线,从而使容器的面积更大。我们不断移动指针,并更新最大的面积值,直到左右指针相遇。

算法实现(JavaScript):

function maxArea(height) {let maxArea = 0;let left = 0;let right = height.length - 1;while (left < right) {const minHeight = Math.min(height[left], height[right]);const area = (right - left) * minHeight;maxArea = Math.max(maxArea, area);if (height[left] < height[right]) {left++;} else {right--;}}return maxArea;
}

时间复杂度分析: 双指针移动的过程中,我们每次向内移动一个指针,直到左右指针相遇。因此,每个指针最多移动 n-1 次。所以总的时间复杂度为 O(n),其中 n 是数组的长度。

空间复杂度分析: 我们只使用了几个变量来存储指针的位置和当前的最大面积值,没有使用额外的数据结构。所以空间复杂度是 O(1)。

这道题目的关键在于理解如何移动指针来获取更大的面积,并利用双指针的方法将时间复杂度优化到 O(n)。

2023年5月30日

「两数之和」(Two Sum)。

题目描述: 给定一个整数数组 nums 和一个目标值 target,请在数组中找出两个数,它们的和等于目标值,并返回这两个数的索引。假设每种输入只会对应一个答案,而且同一个元素不能使用两次。

你可以按任意顺序返回答案。

上面问题的答案会在第二天的公众号推文中公布,大家可以关注公众号:程序员每日三问,第一时间获得推送内容。

学习不打烊,充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题(死磕自己,愉悦大家) 希望大家在这浮夸的程序员圈里保持冷静,每天坚持花20分钟来学习与思考,在千变万化,类库层出不穷的今天,不要等到找工作时才狂刷题,提倡每日学习。


http://www.ppmy.cn/news/105627.html

相关文章

嵌入式C语言-预编译命令(#define、#if、#ifdef、#ifndef、#undef)

#define 宏定义 #define机制包含了一个规定&#xff0c;允许把参数替换到文本中&#xff0c;这种实现通常称为宏定义。下面是宏的声明方式&#xff1a; #define name(parameter-list) stuff其中&#xff0c;parameter-list&#xff08;参数列表&#xff09;是由逗号分割的符…

stream操作写法

stream操作写法 代码从pdf复制过来&#xff0c;可能有问题&#xff0c;可下载附件查看 List<Map<String, Object>> numberData dataList.stream().map(obj -> { Map<String, Object> numberMap new HashMap<>(); numberMap.put("name",…

一文读懂kubernetes部署:网关部署

部署网关 如您需要创建SSL(HTTPS)站点请先参考SSL证书的创建创建好secret 修改Ingress配置域名 首先我们要先根据域名情况更改ingress配置情况&#xff1a; 非SSL站点 vi/opt/kubernetes/gateway/ingress.yaml SSL站点 创建secret kubectl-nns-javashopcreatesecrettlsxxx-se…

Spring事务和事务的传播机制

一、为什么需要事务 1.1事务定义 将一组操作封装成一个执行单元&#xff0c;要么全部成功要么全部失败。 1.2为什么要用事物 例如转账分为两个操作&#xff1a; 第⼀步操作&#xff1a;A 账户 -100 元。第⼆步操作&#xff1a;B 账户 100 元。 如果没有事务&#xff0c;第…

感谢你们为科技创新和社会进步做出的贡献

感谢你们为科技创新和社会进步做出的贡献 近日中国科技发展事件 据中国载人航天工程办公室消息&#xff0c;北京时间2023年5月30日6时42分&#xff0c;神舟十六号载人飞行任务航天员乘组出征仪式在酒泉卫星发射中心问天阁圆梦园广场举行。6时44分&#xff0c;中国载人航天工程…

如何在 Windows 10 上查找电脑型号

在Windows 10上,计算机型号在许多情况下都可以派上用场。例如,型号可以更容易地找到正确的硬件升级(如内存、存储驱动器、显示器和电源)。或者,如果你必须解决问题或联系技术支持。它还可以方便地将设备编目到库存中。 尽管制造商通常在笔记本电脑或台式机的机箱上使用贴…

Dapper存取Blob类型数据

&#x1f32e; Dapper存取Blob类型数据 前言&#xff1a; blob类型是数据库用于保存二进制文件的一种类型&#xff0c;可以将文件存储到数据库的表中。&#xff08;使用到的情况比较少&#xff0c;毕竟文件可以直接在服务器上保存并且访问为什么要放到数据库里。但如果你服务器…

CVPR 2023 | 去雨去噪去模糊,图像low-level任务,视觉AIGC系列

Learning A Sparse Transformer Network for Effective Image Deraining 基于Transformer的方法在图像去雨任务中取得了显著的性能&#xff0c;因为它们可以对重要的非局部信息进行建模&#xff0c;这对高质量的图像重建至关重要。本文发现大多数现有的Transformer通常使用查询…