每日算法-250506
每日算法学习记录 - 250506
今天记录了三道算法题的解题过程和思路,分享给大家。
3192. 使二进制数组全部等于 1 的最少操作次数 II
题目
思路
贪心
解题过程
我们从左到右遍历数组。使用一个变量 ret
来记录已经执行的操作次数。
对于当前元素 nums[i]
,它的实际值会受到其左边(即索引小于 i
的位置)操作的影响。
- 如果
ret
是偶数,那么nums[i]
的实际值就是它本身nums[i]
。 - 如果
ret
是奇数,那么nums[i]
的实际值被翻转了 (0 变为 1, 1 变为 0),即1 - nums[i]
。
我们的目标是让 nums[i]
在考虑了之前 ret
次操作影响后的实际状态为 1。
如果 nums[i]
的当前实际状态是 0,我们就必须在 i
位置执行一次操作。这次操作会翻转从 nums[i]
到数组末尾的所有元素,从而确保 nums[i]
变为 1。同时,我们增加 ret
的计数。
判断逻辑可以总结为:
- 目标状态:1
- 当前原始值:
nums[i]
- 已有翻转次数:
ret
nums[i]
受已有翻转影响后的状态:current_val = (nums[i] + ret) % 2
(或者理解为:如果ret
是偶数,current_val = nums[i]
;如果ret
是奇数,current_val = 1 - nums[i]
)。- 如果
current_val
是 0,我们就需要执行一次操作,ret++
。
代码中的 if (x == flag)
,其中 x
是 nums[i]
,flag
是 ret % 2
:
- 如果
nums[i] == 0
且ret % 2 == 0
(偶数次翻转,nums[i]
实际是 0),则需要翻转,ret++
。 - 如果
nums[i] == 1
且ret % 2 == 1
(奇数次翻转,nums[i]
实际是 0),则需要翻转,ret++
。
这两种情况恰好是nums[i] == ret % 2
。
复杂度
- 时间复杂度: O ( N ) O(N) O(N)
- 空间复杂度: O ( 1 ) O(1) O(1)
Code
class Solution {public int minOperations(int[] nums) {int ret = 0;for (int x : nums) {int flag = ret % 2;if (x == flag) {ret++;}}return ret;}
}
2789. 合并后数组中的最大元素
题目
思路
贪心
解题过程
这道题的关键在于从右往左遍历数组。我们维护 curSum
表示从当前位置向右合并能得到的元素值(即当前正在构建的合并块的总和),同时用 maxVal
记录遍历过程中出现过的最大的 curSum
(即最大的可能合并块)。
- 从数组的最后一个元素
nums[n-1]
开始:curSum
初始化为nums[n-1]
。maxVal
初始化为nums[n-1]
。
- 然后从
nums[n-2]
向左遍历到nums[0]
:- 对于当前元素
nums[i]
:- 如果
nums[i] <= curSum
:说明nums[i]
可以和右边的curSum
代表的合并块进行合并(满足nums[i] <= nums[i+1]
的条件,其中nums[i+1]
实际上是curSum
)。我们将nums[i]
加到curSum
上,即curSum += nums[i]
。 - 如果
nums[i] > curSum
:说明nums[i]
不能和右边的curSum
合并,因为它比右边已经合并的块还要大。此时,nums[i]
成为一个新的、独立的合并块的起点(或者说它本身就是一个块),所以curSum
被重置为nums[i]
。
- 如果
- 每次更新
curSum
后,都用maxVal = Math.max(maxVal, curSum)
来更新全局记录的最大合并块值。
- 对于当前元素
- 遍历结束后,
maxVal
就是数组中能合并出的最大元素。
复杂度
- 时间复杂度: O ( N ) O(N) O(N)
- 空间复杂度: O ( 1 ) O(1) O(1)
Code
class Solution {public long maxArrayValue(int[] nums) {int n = nums.length;if (n == 1) {return nums[0];}long curSum = nums[n - 1];long maxVal = nums[n - 1];for (int i = n - 2; i >= 0; i--) {if (nums[i] <= curSum) {curSum += nums[i];} else {curSum = nums[i];}maxVal = Math.max(maxVal, curSum);}return maxVal;}
}
153. 寻找旋转排序数组中的最小值(复习)
题目
这是第二次写这道题了,写的还不错,基本上已经掌握了,就不再多说了。
详细题解见每日算法-250415
Code
class Solution {public int findMin(int[] nums) {int left = 0, rigth = nums.length - 1;int k = nums[rigth];while (left <= rigth) {int mid = left + (rigth - left) / 2;if (nums[mid] < k) {rigth = mid - 1;} else {left = mid + 1;}}return left >= nums.length ? nums[rigth] : nums[left];}
}
相关文章:
每日算法-250506
每日算法学习记录 - 250506 今天记录了三道算法题的解题过程和思路,分享给大家。 3192. 使二进制数组全部等于 1 的最少操作次数 II 题目 思路 贪心 解题过程 我们从左到右遍历数组。使用一个变量 ret 来记录已经执行的操作次数。 对于当前元素 nums[i]&#x…...
【免费试用】LattePanda Mu x86 计算模块套件,专为嵌入式开发、边缘计算与 AI 模型部署设计
本次活动为载板设计挑战,旨在激发创意与技术实践能力,鼓励电子工程师、创客、学生及开发者围绕指定LattePanda Mu进行功能丰富、应用多样的载板开发设计。参赛用户将有机会展示硬件设计能力,并通过作品解决实际问题或构建创新项目。本次挑战活…...
用于备份的git版本管理指令
一、先下载一个git服务器软件并安装,创建一个git服务器进行备份的版本管理。 下列指令用于git常用备份: 1、强制覆盖远程仓库: git push --force origin master 2、重新指向新仓库: git remote set-url origin http://192.168.1.2…...
STM32H743单片机实现ADC+DMA多通道检测
在stm32cubeMX上配置ADCDMA实现多通道检测功能 DMA配置 生成代码,HAL_ADC_Start_DMA开始DMA读取ADC值,HAL_ADC_Stop_DMA关闭DMA读取 void Start_ADC2_DMA(void) {/* 初始化后校准ADC */HAL_ADCEx_Calibration_Start(&hadc2, ADC_CALIB_OFFSET, ADC_…...
(提升)媒体投稿技能
1\前期策划与准备 精准定位目标受众,分析内容偏好与活跃媒体基于目标受众,确定发稿核心主题与内容方向 2\内容创作与素材 撰写稿件注重标题吸引力,确保内容逻辑清晰价值突出。素材整合准备高质量的配图、视频 3\内部审核与优化 对稿件内…...
2025年提交App到Appstore从审核被拒到通过的经历
今年3月份提交一个App到Appstore,感觉比以前要严格了很多,被拒了多次才通过。 如果周末提交审核会非常非常,所以最好选择周一之周四的中午提交。 第一次提交被拒,原因为 Guideline 2.1 - Performance - App Completeness Guidel…...
63.微服务保姆教程 (六) SkyWalking--分布式链路追踪系统/分布式的应用性能管理工具
SkyWalking—分布式链路追踪系统/分布式的应用性能管理工具(APM) 一、为什么要用SkyWalking 对于一个有很多个微服务组成的微服务架构系统,通常会遇到一些问题,比如: 如何串联整个调用链路,快速定位问题如何缕清各个微服务之间的依赖关系如何进行各个微服务接口的性能分…...
vue3 computed方法传参数
我们对computed的基础用法不陌生,比如前端项目中经常会遇到数据处理的情况,我们就会选择computed方法来实现。但大家在碰到某些特殊场景,比如在template模板中for循环遍历时想给自己的计算属性传参,这个该怎么实现呢,很…...
Linux中为某个进程临时指定tmp目录
起因: 在linux下编译k8s,由于编译的中间文件太多而系统的/tmp分区设置太小,导致编译失败,但自己不想或不能更改/tmp分区大小,所以只能通过其他方式解决。 现象: tmp分区大小: 解决方法&#x…...
Informer源码解析4——完整注意力机制解读
完整注意力机制 源码 class FullAttention(nn.Module):def __init__(self, mask_flagTrue, factor5, scaleNone, attention_dropout0.1, output_attentionFalse):"""实现完整的注意力机制,支持因果掩码和注意力权重输出。Args:mask_flag (bool): 是…...
第一节:Web3开发概述
一、什么是Web3? 如果把互联网比作一个「大超市」: Web1(1990年代):你只能看货架上的商品(比如新浪、搜狐这种只读网站)。Web2(现在):你不仅能看࿰…...
【愚公系列】《Manus极简入门》022-艺术创作顾问:“艺术灵感使者”
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! …...
k8s node 内存碎片化如何优化?
在 Kubernetes 集群中,内存碎片化(Memory Fragmentation)会导致系统无法分配连续的内存块,即使总内存充足,也可能触发 OOM(Out of Memory)或影响性能。以下是针对 k8s Node 内存碎片化的优化策略…...
当K8S容器没有bash时7种高阶排查手段
遇到容器没有bash甚至没有sh的情况,就像被困在没有门窗的房间。但真正的K8S运维高手,即使面对这种情况也能游刃有余。以下是我们在生产环境锤炼出的7大实战技巧: 一、基础三板斧(新手必学) 1. 日志捕获术——穿透重启…...
linux -c程序开发
目的是在linux中创建可执行的c语言程序的步骤 和gcc,make和git的简单运用 建立可执行程序的步骤: -1:预处理: --:头文件展开;--去掉注释;--宏替换;--条件编译 -2:编译 --:将预处理之后的c语言替换为汇编语言带阿米 --:语法分析,语义分析,代码生成 --:检查语法正确性并且优…...
LLM损失函数面试会问到的
介绍一下KL散度 KL(Kullback-Leibler散度衡量了两个概率分布之间的差异。其公式为: D K L ( P / / Q ) − ∑ x ∈ X P ( x ) log 1 P ( x ) ∑ x ∈ X P ( x ) log 1 Q ( x ) D_{KL}(P//Q)-\sum_{x\in X}P(x)\log\frac{1}{P(x)}\sum_{x\in X}…...
【redis】redis 手动切换主从
场景一: 测试需要,需要手动切换主从 在redis节点: $ redis-cli -h xx.xx.xx.xx -p XX -a XX shutdown 不要直接关闭redis进程,使用 shutdown ,能在进程关闭前持久化内存中的数据 待主从切换完毕后࿱…...
Webug4.0靶场通关笔记17- 第21关文件上传(htaccess)
目录 第21关 文件上传(htaccess) 1.打开靶场 2.源码分析 (1)右键源码 (2)源码分析 3.渗透实战 (1)配置环境 (2)构造脚本 (3)访问脚本 本文通过《webu…...
ASP.NET Core 中间件
文章目录 前言一、中间件的本质定义:类比: 二、作用场景:三、中间件的执行顺序四、中间件的配置方式1)委托形式(最常见):2)类形式: 五、核心方法六、注意事项七、中间件 …...
Linux:进程间通信---命名管道共享内存
文章目录 1.命名管道1.1 命名管道是什么1.2 如何创建命名管道1.3 如何通过命名管道实现进程间通信 2. 共享内存2.1 共享内存的原理2.2 共享内存的系统接口与接口的调用2.3 共享内存的挂接2.4 共享内存的特性 序:在上一章对用来进行进程间通信的匿名管道进行了详细的…...
一个基于Asp.Net Core + Angular + Bootstrap开源CMS系统
从零学习构建一个完整的系统 推荐一个功能强大、易于扩展、安全可靠的开源内容管理系统,适用于各种类型和规模的网站。 项目简介 MixCoreCMS是一个基于.NET Core框架的开源内容管理系统(CMS),提供了丰富的的基础功能和插件&…...
ECMAScript 6(ES6):JavaScript 现代化的革命性升级
1. 版本背景与发布 发布时间:2015 年 6 月,由 ECMA International 正式发布,标准编号为 ECMA-262 Edition 6(后称 ES2015)。历史意义: JavaScript 诞生 20 年后的革命性升级,首次引入类&#…...
基于WebUI的深度学习模型部署与应用实践
引言 随着深度学习技术的快速发展,如何将训练好的模型快速部署并提供友好的用户交互界面成为许多AI项目落地的关键。WebUI(Web User Interface)作为一种轻量级、跨平台的解决方案,正被广泛应用于各类AI模型的部署场景。本文将详细介绍基于Python生态构建WebUI的技术方案,包…...
MySQL表的增删查改
目录 一、MySQL表的增删查改二、Create单行数据全列插入多行数据 指定列插入插入否则更新替换数据 三、RetrieveSELECT 列WHERE 条件NULL的查询结果排序筛选分页结果 四、Update将孙悟空同学的数学成绩修改为80分将曹孟德同学的数学成绩修改为60分,语文成绩修改为7…...
Android第六次面试总结之Java设计模式(二)
一、适配器模式(Adapter Pattern) 1. ListView vs RecyclerView 的 Adapter 核心区别?为什么 RecyclerView 需要 ViewHolder? 解答: 核心区别: 特性ListView.Adapter(如 ArrayAdapter…...
QuecPython+腾讯云:快速连接腾讯云l0T平台
该模块提供腾讯 IoT 平台物联网套件客户端功能,目前的产品节点类型仅支持“设备”,设备认证方式支持“一机一密”和“动态注册认证”。 BC25PA系列不支持该功能。 初始化腾讯 IoT 平台 TXyun TXyun(productID, devicename, devicePsk, ProductSecret)配置腾讯 IoT…...
说下RabbitMQ的整体架构
RabbitMQ 是一个基于 AMQP(Advanced Message Queuing Protocol) 协议的开源消息中间件,RabbitMQ的整体架构围绕消息的生产、路由、存储和消费设计,旨在实现高效、可靠的消息传递,它由多个核心组件协同工作。 核心组件 …...
Qt Creator 网络编程----Socket客户端服务端
1、在Qt项目中的.pro中添加 network模块,用于Socket网络编程使用 QT network 2、相关Tcp网络通信协议头文件 #include <QtNetwork/QTcpServer> #include <QtNetwork/QTcpSocket> #include <QtNetwork/QHostAddress> 3、Qt socket运行实…...
《深度学习实践教程》[吴微] ch-5 3/5层全连接神经网络
一、练习课本上3层全连接神经网络识别手写数字。 答案代码: import torch from torch import nn, optim from torch.autograd import Variable from torch.utils.data import DataLoader from torchvision import datasets, transforms# 定义一些超参数 batch_size…...
OrcaFex11.5
OrcaFlex 11.5是一款专业的海洋工程动态分析软件 由英国Orcina公司开发 主要用于模拟和分析海洋结构物在复杂海洋环境中的动态响应 该软件广泛应用于海上油气开发 海上风电 海洋可再生能源等领域 OrcaFlex 11.5具有强大的建模和仿真能力 支持多种海洋结构物的模拟 包括船舶 …...
MUX-vlan
MUX-VLAN 理论环节 1. 定义与核心作用 Principal VLAN(主VLAN) 是 MUX VLAN(Multiplex VLAN)架构的核心组件,充当公共资源的访问枢纽,实现以下核心功能: 资源共享:允许所有从VLAN…...
vue3中解决 return‘ inside ‘finally‘ block报错的问题
vue3中解决 return’ inside ‘finally’ block报错的问题 这个错误信息通常表明你在使用Vue 3框架时,在finally块中不正确地使用了return语句。在JavaScript中,finally块是保证执行的最后一个代码块,用于释放资源或执行清理操作,…...
TestStand API 简介
TestStand API 简介 在自动化测试领域,TestStand 凭借其灵活的架构和强大的功能,成为众多开发者的首选工具。而 TestStand API(Application Programming Interface,应用程序编程接口)则是打开 TestStand 强大功能的 “…...
vue2+element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能
vue2element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能 文章目录 vue2element实现Table表格嵌套输入框、选择器、日期选择器、表单弹出窗组件的行内编辑功能前言一、准备工作二、行内编辑1.嵌入Input文本输入框1.1遇到问题1.文本框内容修改失…...
【Docker系列】使用格式化输出与排序技巧
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
针对面试-redis篇
1. 缓存穿透 什么是缓存穿透? 缓存穿透就是有人查询一个不存在的数据,数据库查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。 解决方案一:缓存空数据 当数据库中不存在该数据时,直接把查到的空数据给…...
HTML8:媒体元素
视频和音频 视频元素 video 音频 audio <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>媒体元素学习</title> </head> <body> <!--音频和视频 src:资源路径 controls:控制条…...
把其他conda的env复制到自己电脑的conda上
把其他conda的env复制到自己电脑的conda上 一 拷贝 将要拷贝的env环境拷贝到自己电脑的放置env环境的文件夹中 二 添加配置 找到.conda文件夹下的environments.txt文件,添加配置 三 测试 查看环境是否拷贝成功 激活环境 自此就拷贝成功了!&am…...
抖音热门视频评论数追踪爬虫获取
自动追踪抖音账号收藏夹视频的评论数变化 功能: 1、自动追踪特定抖音账号收藏夹视频热度变化,评论增速超过x,自动通知到钉钉或飞书 2、最新最先进的js逆向算法,无封号风险 3、支持私有化定制 4、可同时追踪500-5w个视频的热度…...
Hive优化秘籍:大数据处理加速之道
目录 一、认识 Hive 性能瓶颈 二、优化从基础开始:查询语句 2.1 列与分区裁剪 2.2 谓词下推 2.3 合理使用排序 三、解决数据倾斜难题 3.1 数据倾斜原因剖析 3.2 针对性优化策略 四、优化 join 操作 4.1 MapJoin 的应用 4.2 大表 join 优化技巧 五、调整 …...
机器学习例题——预测facebook签到位置(K近邻算法)和葡萄酒质量预测(线性回归)
一、预测facebook签到位置 代码展示: import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import…...
10B扩散文生图模型F-Lite技术报告速读
F Lite 技术报告解析 一、研究背景与目标 F Lite 是一个开源的 100 亿参数文本到图像的扩散变换器(DiT)模型。该研究的目标是探索在中等数据规模和计算资源条件下,大规模扩散模型的性能边界。F Lite 基于 Freepik 内部数据集训练࿰…...
源码分析之Leaflet中Marker
概述 Marker类用于创建一个标记点对象,可以用于在地图上添加标记点。Marker类继承自Layer类,提供了一些方法用于创建标记点对象。 源码分析 源码实现 Marker类实现如下: export var Marker Layer.extend({options: {icon: new IconDefault(), // 默认图标实例…...
从0开始学习大模型--Day2--大模型的工作流程以及初始Agent
大模型的工作流程 分词化(Tokenization)与词表映射 分词化(Tokenization)是自然语言处理(NLP)中的重要概念,它是将段落和句子分割成更小的分词(token)的过程。 将一个…...
P48-56 应用游戏标签
这一段课主要是把每种道具的游戏Tag进行了整理与应用 AuraAbilitySystemComponentBase.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "AbilitySystemComponent.h"…...
4.29 tag的完整实现和登录页面的初步搭建
解释了v-for中每个属性的作用: 打印当前route的信息:(里面会有path的信息)当前的路由信息吧! handleMenu() 菜单选择!点击左侧菜单的栏目就会显示在Home.vue的tag上 这个方法的作用是让Home.vue上出现对应的…...
【Vue.js】 插槽通信——具名插槽通信
目录 前景基本语法命名规则默认内容使用建议 具体实例父组件 index.vue子组件 Category.vue 效果 前景 下面的父子组件代码仍然在Vue.js演练平台直接运行 基本语法 在子组件中定义插槽 <!-- Category.vue --> <slot name"插槽名称">默认内容</slo…...
从设备交付到并网调试:CET中电技术分布式光伏全流程管控方案详解
四月的最后一个工作日,当分布式光伏电站并网指示灯依次亮起的瞬间,CET中电技术与客户共同交出了一份满意的答卷。面对430政策窗口期的考验,我们凭借可靠的技术和高效的团队协作,在系统调试与并网对接的每个步骤都展现出过硬能力&a…...
(十)深入了解AVFoundation-采集:录制视频功能的实现
引言 在前文章中,我们深入探讨了如何通过 AVCaptureSession 配置 iOS 中的捕捉输入及输出。并通过使用 AVCaptureDeviceInput 和 AVCapturePhotoOutput,我们实现了基础的照片捕获功能,并配置了 PHPreviewView 来显示实时预览。 在本篇中&am…...
数据分析汇报七步法:用结构化思维驱动决策
在当今数据驱动的商业环境中,高效的数据汇报不仅是信息传递的工具,更是撬动决策的杠杆。基于您提供的五张核心图示,我们提炼出一套「七步汇报框架」,将复杂的数据分析转化为清晰的行动指南。这套方法论通过「现状-诊断-预见…...