刷题日常(移动零,盛最多水的容器,三数之和,无重复字符的最长子串)
移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。



俩种情况:
1.当nums[i]为0的时候 直接i++2.当nums[i]不为0的时候 此时 需要跟 nums[j]交换 因为nums[j]一直处于0的位置
并且j++,i++
class Solution {public void moveZeroes(int[] nums) {int i = 0 , j = 0;while( i < nums.length) {if(nums[i] == 0) {i++;} else {swap(nums,i++,j++);}}}public void swap(int[] nums,int i ,int j) {int tmp = nums[i];nums[i] = nums[j];nums[j] = tmp; }
}
盛最多水的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。

装多少水是由最短边决定的,为什么最短边移动,是因为如果长边移动,那么装的水可能会少,(因为由最短边决定,无论你长边移动后高度增加或者减少,都只能是装水量变少。)不可能会多。而如果移动最短边,那么有可能能够装更多的水。
class Solution {public int maxArea(int[] height) {int left = 0 ,right = height.length-1, ret=0;while(left<right) {int m = Math.min(height[left],height[right])*(right-left);ret = Math.max(m,ret);if(height[left] < height[right]) {left++;} else{right--;}}return ret;}
}
三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组


1.先进行排序 要找到三个数字和为0的一组数组 所有先给数组排序
如果数组首元素大于0 可以直接返回空
2.固定其中某个数字,然后在剩余的数组里面找到和为 -nums[i]的数组 ,就说明找到了
3.细节处理 : 因为数组中可能有重复的数字,所以我们要去“去重”,至于哪些要去重呢?
1)i 一定要去重,跳过重复元素,
2) left 和right 也要去重
class Solution {public List<List<Integer>> threeSum(int[] nums) {// 递增Arrays.sort(nums);// 定义返回的结果List<List<Integer>> ret = new ArrayList<>();for (int i = 0; i < nums.length;) {// 一个数为整数 不可能找到和为0的俩个数组 因为已经排序if (nums[i] > 0) {break;}// 定义在i后面的数组区间寻找int left = i + 1, right = nums.length - 1;// 找-nums[i]int k = -nums[i];// 开始寻找和为k的一对数组while (left < right) {if (nums[left] + nums[right] < k) {left++;} else if (nums[left] + nums[right] > k) {right--;} else {// 说明找到了ret.add(new ArrayList<>(Arrays.asList(nums[i], nums[left], nums[right])));left++;right--;// 去重while (left < right && nums[left] == nums[left - 1]) {left++;}while (left < right && nums[right] == nums[right + 1]) {right--;}}}i++;// 去重iwhile (i < nums.length && nums[i] == nums[i - 1] ) {i++;}}return ret;}
}
无重复字符的最长子串
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度

题目分析:

暴力解法:哈希表+遍历
明显这样写效率低,容易超时

使用一个哈希表 ,L记录无重复字符最长子串的起始 R记录无重复字符最长子串的尾巴
用R去遍历整个数组,每次遍历前判断哈希表是否存在此字符,
如果hash内不存在 直接添加到hash表中,并且计算此时的长度,不断更新最长的
如果hash内存在 重点来了:
一直判断L上的位置是否为存在的字符,如果不是,则一直弹出 直到没有重复的字符 ,然后加入到hash表中。计算此时的长度
class Solution {public int lengthOfLongestSubstring(String s) {Set<Character> hash = new HashSet<>();int right = 0,left = 0 , len=0;for(right = 0;right<s.length();right++) {char ch = s.charAt(right);while(left < right && hash.contains(ch)) {hash.remove(s.charAt(left));left++;}hash.add(ch);len = Math.max(len,right-left+1);}return len;}
}
24-25
结语: 写博客不仅仅是为了分享学习经历,同时这也有利于我巩固知识点,总结该知识点,由于作者水平有限,对文章有任何问题的还请指出,接受大家的批评,让我改进。同时也希望读者们不吝啬你们的点赞+收藏+关注,你们的鼓励是我创作的最大动力!
相关文章:
刷题日常(移动零,盛最多水的容器,三数之和,无重复字符的最长子串)
移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 俩种情况: 1.当nums[i]为0的时候 直接i 2.当nums[i]不为0的时候 此时 …...
深入了解决策树---机器学习中的经典算法
引言 决策树(Decision Tree)是一种重要的机器学习模型,以直观的分层决策方式和简单高效的特点成为分类和回归任务中广泛应用的工具。作为解释性和透明性强的算法,决策树不仅适用于小规模数据,也可作为复杂模型的基石&…...
Elasticsearch对于大数据量(上亿量级)的聚合如何实现?
大家好,我是锋哥。今天分享关于【Elasticsearch对于大数据量(上亿量级)的聚合如何实现?】面试题。希望对大家有帮助; Elasticsearch对于大数据量(上亿量级)的聚合如何实现? 1000道 …...
深度学习模型:循环神经网络(RNN)
一、引言 在深度学习的浩瀚海洋里,循环神经网络(RNN)宛如一颗独特的明珠,专门用于剖析序列数据,如文本、语音、时间序列等。无论是预测股票走势,还是理解自然语言,RNN 都发挥着举足轻重的作用。…...
前端---HTML(一)
HTML_网络的三大基石和html普通文本标签 1.我们要访问网络,需不需要知道,网络上的东西在哪? 为什么我们写,www.baidu.com就能找到百度了呢? 我一拼ping www.baidu.com 就拼到了ip地址: [119.75.218.70]…...
SQL 复杂查询
目录 复杂查询 一、目的和要求 二、实验内容 (1)查询出所有水果产品的类别及详情。 查询出编号为“00000001”的消费者用户的姓名及其所下订单。(分别采用子查询和连接方式实现) 查询出每个订单的消费者姓名及联系方式。 在…...
银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法
银河麒麟桌面系统——桌面鼠标变成x,窗口无关闭按钮的解决办法 1、支持环境2、详细操作说明步骤1:用root账户登录电脑步骤2:导航到kylin-wm-chooser目录步骤3:编辑default.conf文件步骤4:重启电脑 3、结语 Ὁ…...
抓包之使用chrome的network面板
写在前面 本文看下工作中非常非常常用的chrome的network面板功能。 官方介绍:地址。 1:前置 1.1:打开 右键-》检查,或者F12。 1.2:组成部分 2:控制器常用功能 详细如下图: 接着我们挑选其…...
避坑ffmpeg直接获取视频fps不准确
最近在做视频相关的任务,调试代码发现一个非常坑的点,就是直接用ffmpeg获取fps是有很大误差的,如下: # GPT4o generated import ffmpegprobe ffmpeg.probe(video_path, v"error", select_streams"v:0", sho…...
大数据新视界 -- 大数据大厂之 Hive 函数库:丰富函数助力数据处理(上)(11/ 30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
深入解析 Django 中数据删除的最佳实践:以动态管理镜像版本为例
文章目录 引言场景与模型设计场景描述 删除操作详解1. 删除单个 Tag2. 批量删除 Tags3. 删除前确认4. 日志记录 高阶优化与问题分析1. 外键约束与误删保护2. 并发删除的冲突处理3. 使用软删除 结合 Django Admin 的实现总结与实践思考 引言 在现代应用开发中,服务和…...
【java】sdkman-java多环境切换工具
#java #env #sdk #lcshand 首先我们来复习一下,可参考我原来的文章: python多个版本的切换可用pyenv nodejs多个版本的切换可用nvm 同样,java多个版本的切换可用sdkman和jenv,我偏重于使用sdkman,因为有时候我也需要…...
11.25c++继承、多态
练习: 编写一个 武器类 class Weapon{int atk; }编写3个武器派生类:短剑,斧头,长剑 class knife{int spd; }class axe{int hp; }class sword{int def; }编写一个英雄类 class Hero{int atk;int def;int spd;int hp; public:所有的…...
STM32F103外部中断配置
一、外部中断 在上一节我们介绍了STM32f103的嵌套向量中断控制器,其中包括中断的使能、失能、中断优先级分组以及中断优先级配置等内容。 1.1 外部中断/事件控制器 在STM32f103支持的60个可屏蔽中断中,有一些比较特殊的中断: 中断编号13 EXTI…...
阿里电商大整合,驶向价值竞争新航道
阿里一出手就是王炸。11月21日,阿里公布了最新动作:将国内和海外电商业务整合,成立新的电商事业群。这是阿里首次将所有电商业务整合到一起,也对电商行业未来发展有着借鉴意义。阿里为何要这么干?未来又将给行业带来哪…...
等保测评在云计算方面的应用讲解
等保测评(信息安全等级保护测评)在云计算方面的应用主要聚焦于如何满足等级保护相关要求,并确保云计算平台及其上运行的业务系统的安全性。以下是主要内容的讲解: 1. 云计算中的等保测评概述 等保测评是在我国网络安全等级保护制…...
QML TableView 实例演示 + 可能遇到的一些问题(Qt_6_5_3)
一、可能遇到的一些问题 Q1:如何禁用拖动? 在TableView下加一句代码即可: interactive: false 补充:这个属性并不专属于TableView,而是一个通用属性。很多Controls下的控件都可以使用,其主要作用就是控…...
SpringBoot(三十九)SpringBoot集成RabbitMQ实现流量削峰添谷
前边我们有具体的学习过RabbitMQ的安装和基本使用的情况。 但是呢,没有演示具体应用到项目中的实例。 这里使用RabbitMQ来实现流量的削峰添谷。 一:添加pom依赖 <!--rabbitmq-需要的 AMQP 依赖--> <dependency><groupId>org.springfr…...
前端 Vue 3 后端 Node.js 和Express 结合cursor常见提示词结构
cursor 提示词 后端提示词 请为我开发一个基于 Node.js 和Express 框架的 Todo List 后端项目。项目需要实现以下四个 RESTful API 接口: 查询所有待办事项 接口名: GET /api/get-todo功能: 从数据库的’list’集合中查询并返回所有待办事项参数: 无返回: 包含所…...
类和对象(下):点亮编程星河的类与对象进阶之光
再探构造函数 在实现构造函数时,对成员变量进行初始化主要有两种方式: 一种是常见的在函数体内赋值进行初始化;另一种则是通过初始化列表来完成初始化。 之前我们在构造函数中经常采用在函数体内对成员变量赋值的方式来给予它们初始值。例如&…...
Python办公自动化:用PyMuPDF+pdfplumber一键提取PDF文字/图片/表格(附完整代码)
Python办公自动化实战:PyMuPDF与pdfplumber高效提取PDF三要素 每天面对堆积如山的PDF文档,行政和财务人员最头疼的莫过于手动复制粘贴文字、截图保存图片、重新绘制表格。我曾见过一位财务同事为了处理200份供应商报价单,连续加班一周手工录入…...
Qwen3-4B写作大师实战:辅助程序员编写项目文档与技术方案
Qwen3-4B写作大师实战:辅助程序员编写项目文档与技术方案 1. 程序员文档写作的痛点与挑战 程序员在日常工作中需要编写大量技术文档,包括项目说明、API文档、技术方案、开发日志等。然而,许多开发者面临共同的写作难题: 技术思维与…...
Windows 11系统优化终极指南:一键清理预装软件与隐私保护
Windows 11系统优化终极指南:一键清理预装软件与隐私保护 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本,用于从Windows中移除预装的无用软件,禁用遥测,从Windows搜索中移除Bing,以及执行各种其他更改以简化…...
记录下在Windows中如何远程将当前Windows部署成PVE
背景: 做这件事实属无奈,公司另外一个分支的一个服务器(目前是Windows)需要跑多个平台的服务,目前Windows Server上部署虚拟机,直接装VMware workstation性能实在是糟糕,迫不得已考虑远程(无显示器、无KVM)将Windows …...
告别Keil?STM32CubeIDE环境搭建全记录:附JAVA安装与汉化资源指北
从Keil到STM32CubeIDE:嵌入式开发环境迁移实战指南 当ST官方逐渐将重心转向HAL库生态时,许多传统开发者正面临工具链升级的抉择。作为一款集成了STM32CubeMX功能的Eclipse-based IDE,STM32CubeIDE不仅代表着开发模式的转变,更预示…...
手把手教你给RK3588开发板添加RTL8188EUS USB无线网卡驱动(附完整配置流程)
RK3588开发板实战:RTL8188EUS无线网卡驱动移植全指南 在嵌入式开发领域,为特定硬件平台添加第三方外设驱动是开发者常遇到的挑战。本文将详细介绍如何在Rockchip RK3588开发板上为RTL8188EUS USB无线网卡移植驱动,从环境准备到功能验证&#…...
RK3568 Android12长按电源键无反应?三步搞定关机菜单恢复
RK3568 Android12电源键功能失效排查与深度修复指南 在RK3568平台上进行Android12系统定制时,电源键功能异常是开发者常遇到的典型问题。不同于简单的功能缺失,这背后涉及系统级行为配置、手势交互逻辑和硬件抽象层的多层级适配。本文将带您从现象溯源到…...
Claude Code安装保姆级教程!超简单上手就会!
Claude Code驾驶手册 文章目录 Claude Code驾驶手册0 前言1 Claude Code基本安装配置1.1 系统配置及安装1.2 启动Claude Code1.3 配置API 0 前言 AI Agent 称为智能体(或人工智能代理),本质是自动执行任务的程序,核心在于让模型不…...
MinIO文件存储避坑指南:SpringBoot整合中的5个常见错误及解决方案
MinIO文件存储避坑指南:SpringBoot整合中的5个常见错误及解决方案 在当今数据驱动的时代,文件存储和管理已成为企业应用开发中不可或缺的一环。MinIO作为一款高性能、开源的对象存储解决方案,因其轻量级、兼容S3协议以及与云原生生态的无缝集…...
60个AI核心概念,不背定义,全落到工作场景!老王手把手教你建知识库、搭Agent,附原型库+PRD模板
💡 Chunking 文档分块 你的 RAG 知识库上线了,用户问一个具体问题,系统返回了一段莫名其妙的内容。一查发现,检索到的文档片段被切在了一个句子中间,上半句话在一个块里,下半句在另一个块里。模型看到半句…...


