每日算法-250530

article/2025/7/4 21:10:51

每日算法 - 250530

记录一下今天完成的LeetCode算法题目,包含思路、解题过程、复杂度分析和代码实现。


3128. 直角三角形

题目
在这里插入图片描述

思路

数组

解题过程

显而易见的是,我们枚举中间的顶点最好计算。当我们的中间顶点是1时,它能够组成的直角三角形的个数就是这一行除了它以外的1的个数乘上这一列除了它以外的1的个数。

复杂度

  • 时间复杂度: O ( N M ) O(NM) O(NM)
  • 空间复杂度: O ( N + M ) O(N + M) O(N+M)

Code

class Solution {public long numberOfRightTriangles(int[][] grid) {long ret = 0;int r = grid.length;int c = grid[0].length;int[] r1 = new int[r];int[] c1 = new int[c];for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {if (grid[i][j] == 1) {r1[i]++;c1[j]++;}}}for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {if (grid[i][j] == 1) {ret += (long)(r1[i] - 1) * (c1[j] - 1);}}}return ret;}
}

303. 区域和检索 - 数组不可变

思路

前缀和

解题过程

我们可以在初始化的时候将nums预处理成一个前缀和数组dpdp[i]表示[0, i]区间的和。那么sumRange(left, right)方法只需返回 dp[right] - dp[left - 1] 就可以得到 [left, right] 区间的和了。
需要注意的是:当 left=0 时,dp[right] 就是 [0, right] 的和,此时不能减去 dp[left - 1],可以直接返回 dp[right]

复杂度

  • 时间复杂度: 初始化是 O ( N ) O(N) O(N)sumRange O ( 1 ) O(1) O(1)
  • 空间复杂度: O ( N ) O(N) O(N) (如果创建新的dp数组) 或 O ( 1 ) O(1) O(1) (如果在原数组上修改,不计输入数组本身)

Code

class NumArray {private int[] prefixSums;public NumArray(int[] nums) {prefixSums = new int[nums.length];prefixSums[0] = nums[0];for (int i = 1; i < nums.length; i++) {prefixSums[i] = prefixSums[i - 1] + nums[i];}}public int sumRange(int left, int right) {if (prefixSums.length == 0 || left < 0 || right >= prefixSums.length || left > right) {return 0; }if (left == 0) {return prefixSums[right];}return prefixSums[right] - prefixSums[left - 1];}
}/*** Your NumArray object will be instantiated and called as such:* NumArray obj = new NumArray(nums);* int param_1 = obj.sumRange(left,right);*/

3427. 变长子数组求和

题目
在这里插入图片描述

思路

前缀和

解题过程

  1. 首先,预处理得到前缀和数组 dp,其中 dp[i] 表示原数组 nums 中区间 [0, i] 的元素之和。
  2. 遍历数组 nums,对于每个索引 i
    • 题目描述指出,对于索引 i,子数组 nums[start...i] 的长度为 nums[i]
    • 这意味着 i - start + 1 = nums[i],所以 start = i - nums[i] + 1
    • 该子数组 nums[actualStart...i] 的和可以通过前缀和数组计算:dp[i] - (actualStart == 0 ? 0 : dp[actualStart - 1])
  3. 将所有这些子数组的和累加起来即为最终答案。

复杂度

  • 时间复杂度: O ( N ) O(N) O(N)
  • 空间复杂度: O ( N ) O(N) O(N)

Code

class Solution {public int subarraySum(int[] nums) {int sum = 0, n = nums.length;int[] dp = new int[n];dp[0] = nums[0];for (int i = 1; i < n; i++) {dp[i] = dp[i - 1] + nums[i];}for (int i = 0; i < n; i++) {int start = Math.max(0, i - nums[i]);sum += (start == 0) ? dp[i] : dp[i] - dp[start - 1];}return sum;}
}

2874. 有序三元组中的最大值 II(复习)

题目
在这里插入图片描述

这是第二次写这道题了,已经算是掌握了,就不再多说了,详细题解见每日算法-250527

代码

class Solution {public long maximumTripletValue(int[] nums) {long ret = 0;int n = nums.length;int[] suffixMax = new int[n];suffixMax[n - 1] = nums[n - 1];for (int i = n - 2; i >= 0; i--) {suffixMax[i] = Math.max(suffixMax[i + 1], nums[i]);}int privMax = nums[0];for (int i = 1; i < n - 1; i++) {ret = Math.max(ret, ((long) (privMax - nums[i]) * suffixMax[i + 1]));privMax = Math.max(privMax, nums[i]);}return ret;}
}

http://www.hkcw.cn/article/TERURBlrKb.shtml

相关文章

抽奖系统抽奖活动管理流程

抽奖系统大纲&#xff1a; 目录 抽奖系统大纲&#xff1a; 创建抽奖活动&#xff1a; 前端传入&#xff1a; 创建抽奖活动&#xff0c;需要圈选人员&#xff0c;圈选奖品&#xff0c;填写活动必要信息。 Controller层&#xff1a; 接收参数&#xff0c;调用服务层代码&a…

Grace《歌手》第三期第一 格瑞丝夺冠引领风潮

5月30日晚,《歌手2025》第三期播出,共有8名歌手参加比赛。排名如下:格瑞丝金斯勒获得第一名,单依纯位列第二,米奇盖顿排在第三,GAI周延第四,陈楚生第五,马嘉祺第六,白举纲第七。根据节目规则,若袭榜歌手获胜,本场竞演排名最末的在线歌手将暂别舞台。查理普斯作为首位…

郑钦文巴黎街头演唱《日不落》 甜蜜16强庆祝

北京时间5月30日,2025年法网进入第六个比赛日。中国球员郑钦文作为8号种子,以6比3、6比4战胜18岁的加拿大新星姆博科,顺利晋级16强,追平了她在法网的最佳战绩。赛后,郑钦文更新了多条动态,发布了一条微博:“甜蜜16强。”她还分享了一段视频,展示了自己在法国巴黎街头即…

华为OD机试真题——天然蓄水库(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《天然蓄水库》: 目录 题目…

基本数据指针的解读-C++

1、引言 笔者认为对于学习指针要弄清楚如下问题基本可以应付大部分的场景&#xff1a; ① 指针是什么&#xff1f; ② 指针的类型是什么&#xff1f; ③ 指针指向的类型是什么&#xff1f; ④ 指针指向了哪里&#xff1f; 2、如何使用指针 使用时的步骤如下&#xff1a; ① …

日志技术-LogBack、Logback快速入门、Logback配置文件、Logback日志级别

一. 日志技术 1. 程序中的日志&#xff0c;是用来记录应用程序的运行信息、状态信息、错误信息等。 2. JUL&#xff1a;(java.util.logging)这是JavaSE平台提供的官方日志框架&#xff0c;也被称为JUL。配置相对简单&#xff0c;但不够灵活&#xff0c;性能较差。 3.Logs4j&…

Nuxt多环境配置

前言 多环境配置对于特定环境新增、更新、删除配置相当重要&#x1f601;而且不需要人为去变更配置减少出错 实践 方案1&#xff08;官方推荐&#xff09; 升级依赖 升级Nuxt到最新版&#xff08;3.15.x只有开发和生产配置&#xff0c;不支持自定义环境&#xff09; npx n…

林志炫回应机能下降 唱功未减获支持

林志炫参加《歌手2025》,仅两期就被淘汰出局,成为第二位被淘汰的歌手。他在舞台上只唱了两首歌,却因此遭到质疑,很多人认为他的唱功严重下滑。尽管林志炫已年过半百,但他的唱功并未下降。林志炫在参加《我是歌手》期间曾透露,他非常注重嗓子的保养,平时饮食起居都会照顾…

这个中部大省 拼命“抢人” 系统性引才策略

又是一年毕业季。5月28日,长沙市青年人才创新创业政策推介活动在上海复旦大学举行,现场发布了长沙市青年人才创业“双肩包”行动计划,旨在为创业者提供从落地到上市的一条龙支持。这一行动背后是湖南省将大学生创业视为长远发展战略的一部分,通过系统性思维解决人才问题。不…

喜欢红帽子的马斯克 这次戴了黑帽子 DOGE成为“替罪羊”

美东时间5月30日,美国科技亿万富翁埃隆马斯克作为特朗普政府“特殊政府雇员”的任期结束。特朗普为他举行了一场在白宫椭圆形办公室的新闻发布会,并赠送了一把金色钥匙。马斯克戴着一顶印有“DOGE”字样的黑帽子参加了这场欢送会。在负责美国政府效率部(DOGE)运作的130天里…

联合国:全球住房危机影响近30亿人 亟需全球行动应对

当地时间5月29日至30日,第二届联合国人居大会续会在肯尼亚首都内罗毕召开。超过1000名代表参与会议,共同探讨全球住房危机,希望通过讨论、协作与政策规划来解决这一问题。联合国人类住区规划署执行主任阿纳克劳迪娅罗斯巴赫指出,据估计,全球有超过28亿人面临住房条件不达标…

拜登确诊癌症后首公开讲话:感觉很好 称病情发展良好

据美国广播公司和英国广播公司报道,自美国前总统拜登办公室5月18日宣布拜登被诊断患有侵袭性前列腺癌后,拜登于当地时间5月30日首次向记者发表公开讲话。他表示自己感觉很好。拜登说:“预计病情发展良好。我们正努力做好一切工作。一切都在进行中,所以我感觉很好。”他透露…

11月起新生产电池都将有“身份证” 实现全生命周期管控

为加强锂离子电池全生命周期的安全与质量管理,市场监管总局批准发布了《锂离子电池编码规则》国家标准,该标准将于2025年11月1日起实施。新标准赋予每个新生产的电池产品唯一身份编码,适用范围覆盖从单体电池到电池系统的全层级产品。通过“一池一码”可以实现从生产端到回收…

端午假期长江中下游有大暴雨 警惕次生灾害

端午假期期间,中东部地区将经历较大范围的降雨过程。长江中下游等地可能出现强降雨,部分地区甚至会有大暴雨,并伴有强对流天气。需警惕山体滑坡、泥石流等次生灾害。东北地区受冷空气影响将迎来降温,而华南多地则会出现高温,需注意防暑。昨天,中东部新一轮较大范围降雨过…

智慧港口电子通关系统引领智能化监管新时代

在全球贸易蓬勃发展的背景下&#xff0c;港口作为国际贸易的核心枢纽&#xff0c;其通关效率和监管能力直接影响物流链的顺畅运作。智慧港口电子通关系统&#xff08;智能闸口系统&#xff09;通过技术创新与数据融合&#xff0c;为海关监管和港口运营提供高效、精准、智能化的…

使用摄像头推流+VLC软件拉流

一、作用 使用摄像头创建rtsp链接&#xff0c;并使用VLC软件拉流显示。 二、步骤 1、安装FFmpeg库 下载地址&#xff1a;https://ffmpeg.org/download.htmlFFmpeg库的下载参考之前的博客&#xff0c;下载Win64版本即可&#xff1a;https://blog.csdn.net/beijixingcd/artic…

第8讲、Odoo 18 ORM 深度解析

文章目录 [toc] Odoo 18 ORM 深度解析&#x1f9e0; 一句话总结 Odoo ORM 原理&#x1f9f1; ORM 核心结构概览&#x1f504; ORM 生命周期与原理分析1️⃣ 模型定义&#xff08;Python class&#xff09;2️⃣ 模型注册&#xff08;MetaModel & Registry&#xff09;3️⃣…

网络编程套接字

目录 1.Socket套接字 1.1TCP和UDP的区别 2.UDP api的使用 2.1DatagramSocket 2.2DatagramPacket 3.UDP数据报套接字编程 3.1UdpEchoServer服务器 3.2UdpEchoClient客户端 3.3客户端和服务器相互配合的完整流程 4.TCP api的使用 4.1ServerSocket 4.2Socket 4.TCP数据…

秋招Day12 - 计算机网络 - TCP

详细说一下TCP的三次握手机制 TCP的三次握手机制是为了在两个主机之间建立可靠的连接&#xff0c;这个机制确保两端的通信是同步的&#xff0c;并且在开始传输数据前&#xff0c;双方都做好了要通信的准备。 说说SYN的概念&#xff1f; SYN 是 TCP 协议中用来建立连接的一个标…

前端pointer-events属性

1.如图 2.用法 使用pointer-events来阻止元素成为鼠标事件目标不一定意味着元素上的事件侦听器永远不会触发。如果元素后代明确指定了pointer-events属性并允许其成为鼠标事件的目标&#xff0c;那么指向该元素的任何事件在事件传播过程中都将通过父元素&#xff0c;并以适当的…