欢乐力扣11-15

news2025/1/7 10:30:48

1、前言

 本篇继续整理Hot150。


1、H指数

1.1.描述

 给定一个数组,里面每个元素表示作者论文的引用数量。H指数:表示发表了H篇论文,且有H篇论文被引用了H次。返回H中最大的那个值。

1.2.思路

 题目描述比较混乱,直接说思路,由大到小排序,然后遍历每个元素,当元素值>i时,则累加H指数。

class Solution:
    def hIndex(self, citations: List[int]) -> int:
        citations.sort(reverse=True)
        h = 0
        for i in range(len(citations)):
            if citations[i] > i :  # 这里到底是 > 还是 >= 可能拿捏不准,记住[0]这个例子,h=0;
                h += 1
            else:
                break 
        return h 

2、除自身以外数组的乘积

2.1.描述

 给你一个数组Nums,返回一个ans数组,里面每个元素表示nums数组中除了自身以外,其余元素的乘积:举个例子:

nums=[1,2,3],返回ans=[6,3,2]

2.2.思路

 首先存储下来当前元素,所有左边元素的乘积和右边元素的乘积。然后分别从左右两边取元素便能得到ans的乘积。

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        # 左边元素所有乘积
        left = []
        for i in range(len(nums)):
            if i == 0:
                left.append(1)
            else:
                ele = nums[i-1] * left[i-1]
                left.append(ele) 
        # 右边元素所有乘积
        right = []
        for i in range(len(nums)-1, -1, -1):
            if i == len(nums) - 1:
                right.append(1)
            else:
                # i的后一个坐标
                ele = nums[i+1] * right[len(nums)-2-i] 
                right.append(ele)
        # 遍历每个元素
        ans = []
        for l, r in zip(left, right[::-1]):
            ans.append(l*r)
        return ans 

3、加油站

3.1.描述

 给定一个加油的数组 和 去下个加油站的耗油数组,问从哪个加油站出发,能够完整的循环一圈?

3.2.思路

 上来先判断,若总的加油数组和比总的耗油数组和小,则一定不够行驶一圈,直接返回-1;假设从i站出发,能行驶到j站,但是行驶不到j+1站;则将起始位置调整为j+1站,继续循环。

class Solution:
    def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
        if sum(gas) < sum(cost) : return -1
        start_idx = 0 # 起始位置
        curSum = 0    # 从i到j的累加加油和
        for i in range(0, len(gas)):
            if curSum < 0:
                curSum = 0 
                start_idx = (i) % len(gas) # 若不满足,则将起始位置调整为下一站;
            curSum += (gas[i] - cost[i] )  # 累加
        return start_idx

4、分发糖果

4.1.描述

 N个孩子站成一排,有个分数数组,现在要求给每个孩子按照分数分发糖果,要求:每个孩子至少有一个糖果;得分高的孩子需要比得分低的孩子糖果多。返回至少得发多少个糖果?

输入:ratings = [1,0,2]
输出:5
解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。

4.2.思路

 将问题拆分成两个问题:先遍历满足左规则:即若右边孩子比左边孩子得分高,就比左边孩子多一个糖果;否则仅给一个。然后在相反遍历右规则,最后同时遍历左右规则,取最大的糖果数目累加即可。

class Solution:
    def candy(self, ratings: List[int]) -> int:
        # 左遍历:若右边孩子比左边孩子分数高,则多发一个糖果
        left = []
        for i in range(len(ratings)):
            if i == 0:
                left.append(1)  # 初始孩子手里有一个糖果
            else:
                if ratings[i] > ratings[i-1]:
                    left.append(left[i-1]+1)
                else:
                    left.append(1)
        right = []
        for i in range(len(ratings)-1, -1, -1):
            if i == len(ratings) - 1:
                right.append(1)
            else:
                if ratings[i] > ratings[i+1]:
                    right.append(right[len(ratings)-1-1-i]+1)
                else:
                    right.append(1)
        # 当前这个孩子需要同时满足左右两边规则
        ans = 0 
        for l,r in zip(left, right[::-1]):
            ans += (max(l, r))
        return ans 

5、接雨水

5.1.描述

 给定一个高度数组,问由这些高度导致的低洼能接多少单位雨水?宽度为1。

5.2.思路

 从左遍历记录最高高度,从右遍历记录最高高度。然后二者取最小值减去当前高度即是接雨水的高度。示例图可参考官方题解。

class Solution:
    def trap(self, height: List[int]) -> int:
        # 记录从左到右的最大高度
        leftmax = []
        for i in range(len(height)):
            if i == 0:
                leftmax.append(height[0])
            else:
                leftmax.append(max(height[i], leftmax[i-1]))
        # 记录从右到左的最大高度
        rightmax = []
        for i in range(len(height)-1, -1, -1):
            if i == len(height) -1 :
                rightmax.append(height[-1])
            else:
                rightmax.append(max(rightmax[len(height)-1-1-i],  height[i]))
        # 遍历,取二者最小值
        ans = 0 
        for i in range(len(height)):
            max_l = leftmax[i]
            max_r = rightmax[len(height)-1-i]
            ans += (min(max_l, max_r) - height[i])  # 取出二者最小值,减去当前高度
        return ans 

总结

 15道了…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2271568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端实现大文件上传(文件分片、文件hash、并发上传、断点续传、进度监控和错误处理,含nodejs)

大文件分片上传是前端一种常见的技术&#xff0c;用于提高大文件上传的效率和可靠性。主要原理和步骤如下 文件分片 确定分片大小&#xff1a;确定合适的分片大小。通常分片大小在 1MB 到 5MB 之间使用 Blob.slice 方法&#xff1a;将文件分割成多个分片。每个分片可以使用 Bl…

源代码编译安装X11及相关库、vim,配置vim(1)

一、目录结构 如下。 所有X11及相关库装到mybuild&#xff0c;源代码下载到src下&#xff0c;解压&#xff0c;进入&#xff0c;编译安装。编译时指定--prefix到相同的目录&#xff0c;即上图中mybuild。 ./configure --prefixpwd/../../mybuild [CFLAGS"-I/path/to/X11…

bytetrack 解决跟踪后框晃动的问题

使用距离最近的匹配的检测框 替代 bytetrack返回的跟踪框 作为最终的返回结果 完整byte_tracker.py代码为&#xff1a; import numpy as np from collections import deque import os import os.path as osp import copy import torch import torch.nn.functional as Ffrom …

如何使用OBS Studio录制屏幕?

可以进入官网或github进行下载&#xff1a; https://obsproject.com/download 安装包解压后进入bin 进入64-bit 选择obs 64 进入OBS Studio后在来源内右键&#xff0c;选择添加 选择添加显示器采集即可录取整个屏幕&#xff0c;窗口采集可选择窗口进行录制 选择对应显示器即配置…

ArcGIS Server 10.2授权文件过期处理

新的一年&#xff0c;arcgis server授权过期了&#xff0c;服务发不不了。查看ecp授权文件&#xff0c;原来的授权日期就到2024.12.31日。好吧&#xff0c;这里直接给出处理方法。 ArcGIS 10.2安装时&#xff0c;有的破解文件中会有含一个这样的注册程序&#xff0c;没有的话&…

循环冗余校验CRC的介绍

一、简介 循环冗余校验CRC&#xff08;Cyclic Redundancy Check&#xff09;是数据通信领域中最常用的一种差错校验码。该校验方法中&#xff0c;使用多项式出发&#xff08;模2除法&#xff09;运算后的余数为校验字段。CRC只能实现检错&#xff0c;不能实现纠错&#xff0c;使…

消息中间件类型都有哪些

在消息中间件的专业术语中&#xff0c;我们可以根据其特性和使用场景将其划分为几种主要的类型。这些类型不仅反映了它们各自的技术特点&#xff0c;还决定了它们在不同应用场景下的适用性。 1. 点对点&#xff08;Point-to-Point&#xff09;消息中间件&#xff1a; • 这类中…

微信小程序中 “页面” 和 “非页面” 的区别

微信小程序中 “页面” 和 “非页面” 的区别&#xff0c;并用表格进行对比。 核心概念&#xff1a; 页面 (Page)&#xff1a; 页面是微信小程序中用户可以直接交互的视图层&#xff0c;也是小程序的基本组成部分。每个页面都有自己的 WXML 结构、WXSS 样式和 JavaScript 逻辑…

卸载wps后word图标没有变成白纸恢复

这几天下载了个wps教育版&#xff0c;后头用完了删了 用习惯的2019图标 给兄弟我干没了&#xff1f;&#xff1f;&#xff1f; 其他老哥说什么卸载关联重新下 &#xff0c;而且还要什么撤销保存原来的备份什么&#xff0c;兄弟也是不得不怂了 后头就发现了这个半宝藏博主&…

SQL Server导出和导入可选的数据库表和数据,以sql脚本形式

一、导出 1. 打开SQL Server Management Studio&#xff0c;在需要导出表的数据库上单击右键 → 任务 → 生成脚本 2. 在生成脚本的窗口中单击进入下一步 3. 如果只需要导出部分表&#xff0c;则选择第二项**“选择具体的数据库对象(Select specific database objects)”**&am…

基于SpringBoot在线竞拍平台系统功能实现十五

一、前言介绍&#xff1a; 1.1 项目摘要 随着网络技术的飞速发展和电子商务的普及&#xff0c;竞拍系统作为一种新型的在线交易方式&#xff0c;已经逐渐深入到人们的日常生活中。传统的拍卖活动需要耗费大量的人力、物力和时间&#xff0c;从组织拍卖、宣传、报名、竞拍到成…

Android Camera压力测试工具

背景描述&#xff1a; 随着系统的复杂化和业务的积累&#xff0c;日常的功能性测试已不足以满足我们对Android Camera相机系统的测试需求。为了确保Android Camera系统在高负载和多任务情况下的稳定性和性能优化&#xff0c;需要对Android Camera应用进行全面的压测。 对于压…

配置嵌入式服务器

一、如何定制和修改Servlet容器的相关配置 修改和server有关的配置&#xff08;ServerProperties&#xff09; server.port8081 server.context‐path/tx server.tomcat.uri-encodingUTF-8二、注册servlet三个组件【Servlet、Filter、Listener】 由于SpringBoot默认是以jar包…

GPIO、RCC库函数

void GPIO_DeInit(GPIO_TypeDef* GPIOx); void GPIO_AFIODeInit(void); void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct); //输出 读 uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx,…

3D高斯点云CUDA版本数据制作与demo运行

0. 简介 关于UCloud(优刻得)旗下的compshare算力共享平台 UCloud(优刻得)是中国知名的中立云计算服务商&#xff0c;科创板上市&#xff0c;中国云计算第一股。 Compshare GPU算力平台隶属于UCloud&#xff0c;专注于提供高性价4090算力资源&#xff0c;配备独立IP&#xff0c;…

框架模块说明 #09 日志模块_01

背景 日志模块是系统的重要组成部分&#xff0c;主要负责记录系统运行状态和定位错误问题的功能。通常&#xff0c;日志分为系统日志、操作日志和安全日志三类。虽然分布式数据平台是当前微服务架构中的重要部分&#xff0c;但本文的重点并不在此&#xff0c;而是聚焦于自定义…

conda指定路径安装虚拟python环境

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…

aws(学习笔记第二十二课) 复杂的lambda应用程序(python zip打包)

aws(学习笔记第二十二课) 开发复杂的lambda应用程序(python的zip包) 学习内容&#xff1a; 练习使用CloudShell开发复杂lambda应用程序(python) 1. 练习使用CloudShell CloudShell使用背景 复杂的python的lambda程序会有许多依赖的包&#xff0c;如果不提前准备好这些python的…

driftingblues6靶场攻略

首先 打开kali&#xff0c;扫描主机 地址是192.168.111.143 访问网站 主页源码看一看&#xff0c;没啥用 老套路&#xff0c; 用nmap扫描一下开放端口 用dirsearch扫描一下目录 如果说扫描不到&#xff0c;那就可能是字典不行&#xff0c;换工具就完了 nmap -sV 192.168.…

【顶刊TPAMI 2025】多头编码(MHE)之Part 6:极限分类无需预处理

目录 1 标签分解方法的消融研究2 标签分解对泛化的影响3 讨论4 结论 论文&#xff1a;Multi-Head Encoding for Extreme Label Classification 作者&#xff1a;Daojun Liang, Haixia Zhang, Dongfeng Yuan and Minggao Zhang 单位&#xff1a;山东大学 代码&#xff1a;https:…