Leetcode Hot 100之四:283. 移动零+11. 盛最多水的容器
283.移动零
题目:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
示例 2:
输入: nums = [0]
输出: [0]
思路:
使用双指针i和j。第一遍遍历i从左到右遍历数组,遇到非零元素即赋值给j所在的位置。因为j的数量一方面等于非零元素的个数,另一方面等于最终形态数组的左边最后一个非零元素的下标-1。(相当于一个数组长度是4,最后一个元素的下标就是4-1,为3)
第二遍再从j下标开始遍历,一直到数组结尾,都赋值为0,即相当于从最终形态数组的左边最后一个非零元素的下一个,即零元素一直到数组结尾,都赋值为0.
java代码:
class Solution {public void moveZeroes(int[] nums) {int len=nums.length;if(nums == null||len==0) return;int j=0;for(int i=0;i<len;i++){if(nums[i]!=0){nums[j++]=nums[i];}}for(int i=j;i<len;i++)nums[i]=0;}
}
效率:
时间上为1ms,击败了99%的用户。不用再优化了。
11.盛最多水的容器
题目
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
说明:你不能倾斜容器。
n == height.length
2 <= n <= 10^5
0 <= height[i] <= 10^4
思路
暴力做法:从左到右遍历,每次都固定左边界,然后再从左边界开始遍历右边界。这样可以涵盖所有面积的情况。但是因为是双重循环,所以时间复杂度为O(N)。
双指针做法:针对这种两边边界都会移动的情况下,我们优化时首先需要考虑的就是双指针。暴力循环的做法,每次固定左边界,右边界移动,会让底和高同时变化。这样就让我们无法提前判断是否某些情况是无需遍历的,可以被优化的。基于此,我们要思考的就是如何移动,能只有一个因素影响面积。
我们发现,如果不是固定左边界,然后右边界从左边界处从左到右遍历。而是左右边界都各自放在坐标的左右边界,这样就确保了移动的过程中底是越来越小的,只有高变化时才有可能出现面积更大的可能。那么就只有一个因素影响面积。
接下来我们需要判断什么时候移动左边界,什么时候移动右边界。同理,我们只需要移动高度较小的那边。因为高度较小的那边限制了面积,只有移动他才有可能出现面积更大的情况。
这个题力扣官方讲解的很好,建议还是不明白的话去看下官方讲解视频。
java代码
class Solution {public int maxArea(int[] height) {int len=height.length;int ans=0;int i=0;int j=len-1;while(j>i){int mmin=Math.min(height[i], height[j])*(j-i);ans=Math.max(ans, mmin);//考虑移动左指针还是右指针//如果左指针的高度比右指针小,那么此时移动左指针才有可能找到面积更大的区域if(height[i]<height[j]){//移动左指针i++;}else j--;}return ans;}
}
效率
4ms,击败 61.80%使用 Java 的用户,还行,没啥需要优化的空间了。
相关文章:

Leetcode Hot 100之四:283. 移动零+11. 盛最多水的容器
283.移动零 题目: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] …...

景联文科技助力金融机构强化身份验证,提供高质量人像采集服务
随着社会的数字化和智能化进程的加速,人像采集在金融机构身份认证领域中发挥重要作用,为人们的生活带来更多便利和安全保障。 金融机构在身份验证上的痛点主要包括以下方面: 身份盗用和欺诈风险:传统身份验证方式可能存在漏洞&am…...

Spring Cloud LoadBalancer基础知识
LoadBalancer 概念常见的负载均衡策略使用随机选择的负载均衡策略创建随机选择负载均衡器配置 Nacos 权重负载均衡器创建 Nacos 负载均衡器配置 自定义负载均衡器(根据IP哈希策略选择)创建自定义负载均衡器封装自定义负载均衡器配置 缓存 概念 LoadBalancer(负载均衡器)是一种…...

剖析WPF模板机制的内部实现
剖析WPF模板机制的内部实现 众所周知,在WPF框架中,Visual类是可以提供渲染(render)支持的最顶层的类,所有可视化元素(包括UIElement、FrameworkElment、Control等)都直接或间接继承自Visual类。…...
计算机网络常见的名词解释
计算机网络常见的名词解释 1.应用层2.传输层3. 网络层4.链路层5. 无线网络和移动网络6.计算机网络中的安全 1.应用层 API (Application Programming Interface)应用程序编程接口HTTP (Hyper Text Transfer Protocol) 超文本传输协…...

Android Studio导入,删除第三方库
Android项目经常用到无私的程序员们提供的第三方类库。本篇博客就是实现第三方库的导入和删除。 一、导入第三方库 1、将需要的库下载到本地; 2、新建Moudle (1)File --- New Moudle (2)选择Android Library --- Next (3)填写Moudle名 --- Finish。一个新的Mou…...
生成指定长度的随机数字,用对方法精准提效数10倍!
生成指定长度的随机数字这一函数功能可能在以下情况下被使用: 密码生成:在需要生成随机密码时,可以使用该功能生成指定长度的随机数字作为密码。 随机数生成:在需要生成一定长度的随机数列时,可以使用该功能生成随机…...

Vue3 + Naive-ui Data Table 分页页码显示不全
当使用naive-ui 表格并且使用分页组件的时候 需要增加 remote...

机器学习中的决策阈值
什么是决策阈值? sklearn不允许我们直接设置决策阈值,但它允许我们访问用于进行预测的决策分数(决策函数o/p)。我们可以从决策函数输出中选择最佳得分并将其设置为决策阈值,并且将小于该决策阈值的所有那些决策得分值…...

mongodb导出聚合查询的数据
❗️❗️❗️在正文之前先要讲一个坑,就是mongoexport这个命令工具不支持导出聚合查询的数据,比如通过某某字段来分组 我查了一天关于mongoexport怎么来导出聚合查询的结果集,最终还是gpt给了我答案 😭 既然mongoexport不支持&…...

U-Mail信创邮件系统解决方案
近年来,在国家政策的大力引导和自身数字化转型需求驱动下,国产化成为国内数字化发展道路上的关键词,企业不断加强自主创新能力,进行信创建设,实现软硬件系统国产化替代,已成为大势所趋。邮件系统作为企业管…...

GUI:贪吃蛇
以上是准备工作 Data import javax.swing.*; import java.net.URL;public class Data {public static URL headerURLData.class.getResource("static/header.png");public static ImageIcon header new ImageIcon(headerURL);public static URL upURLData.class.getR…...

leaflet:个性化配置,利用Leaflet-Geoman绘制多种图形(136)
第136个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中个性化配置,利用Leaflet-Geoman绘制多种图形。 灵活地配置Leaflet-Geoman的属性,可以产生各种美妙的绘图效果。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方…...

【Shell脚本8】Shell printf 命令
Shell printf 命令 printf 命令模仿 C 程序库(library)里的 printf() 程序。 printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。 printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化…...
CSAPP第4章:RISC和CISC指令集
RISC和CISC指令集 IA32被称为复杂指令集计算机(CISC),与精简指令集计算机(RISC)相对。 从历史上看,先出现了CISC机器,计算机不断发展使指令集非常大。 RISC设计理念在80年代早期发展,使用更简单的指令集产生高效的代码。 许多加…...

【LeetCode】每日一题 2023_11_9 逃离火灾(bfs 练习)
文章目录 刷题前唠嗑题目:最长平衡子字符串题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode? 启动!!! 嗯?什么?今天是 hard?陷入沉思。。。先看看题吧 题目:最长平…...

flink1.18.0 自适应调度器 资源弹性缩放 flink帮你决定并行度
jobmanager.scheduler Elastic Scaling | Apache Flink 配置文件修改并重启flink后,webui上会显示调整并行度的按钮,他可以自己调整,你也可以通过webUI手动调整: 点击 之后: 调整完成后:...

如何设计vue项目的权限管理?
权限管理的重要性及必要性 数据安全:权限管理可以确保只有具有相应权限的用户能够访问和操作特定的数据。这可以保护敏感数据不被未授权的用户访问,从而提高数据的安全性。功能控制:权限管理可以根据用户的角色和权限设置,控制用户…...
HBase学习笔记(2)—— API使用
对HBase中常用的API操作进行简单的介绍 对应HBase学习笔记(1)—— 知识点总结-CSDN博客中介绍的HBase Shell常用操作 更多用法请参考官网:Apache HBase ™ Reference Guide 依赖导入 <dependencies><dependency><groupId>o…...

C/C++轻量级并发TCP服务器框架Zinx-游戏服务器开发004:游戏核心消息处理 - 玩家类的实现
文章目录 0 代码仓库1 需求2 AOI设计2.1 AOI算法简介2.2 AOI数据结构及实现2.2.1 玩家2.2.2 网格对象2.2.3 游戏世界矩形2.2.4 获取周围玩家的实现2.2.5 代码测试 2.3 GameRole结合AOI创建玩家2.3.1 创建游戏世界全局对象-GameRole继承AOIWorld的Player2.3.2 把玩家到游戏世界的…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...