刷题《面试经典150题》(第九天)

news2024/11/17 0:07:37

加油!

  • 学习目标:
  • 学习内容:
  • 学习时间:
  • 知识点
  • 学习内容:
    • 跳跃游戏 II - 力扣(LeetCode)
    • H 指数 - 力扣(LeetCode)
    • 盛最多水的容器 - 力扣(LeetCode)
    • 矩阵置零 - 力扣(LeetCode)
    • 最小栈 - 力扣(LeetCode)
  • 最后成果
  • 结论

学习目标:

  • 刷完面试经典150题
  • 链接: 面试经典150题

学习内容:

  • 跳跃游戏 II - 力扣(LeetCode)
  • H 指数 - 力扣(LeetCode)
  • 盛最多水的容器 - 力扣(LeetCode)
  • 矩阵置零 - 力扣(LeetCode)
  • 最小栈 - 力扣(LeetCode)

学习时间:

4.30

知识点

学习内容:

跳跃游戏 II - 力扣(LeetCode)

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

0 <= j <= nums[i] i + j < n 返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达
nums[n - 1]。

示例 1:

输入: nums = [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。
从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。
示例 2:

输入: nums = [2,3,0,1,4] 输出: 2

这道题可真恶心,想法是用bfs,可是一直超时超时超时!!!

道心破碎,时间怎么来都是超时
抄答案吧呜呜呜

class Solution:
    def jump(self, nums: List[int]) -> int:
        n = len(nums)
        maxPos, end, step = 0, 0, 0
        for i in range(n - 1):
            if maxPos >= i:
                maxPos = max(maxPos, i + nums[i])
                if i == end:
                    end = maxPos
                    step += 1
        return step

H 指数 - 力扣(LeetCode)

给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h
指数。

根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h
篇论文被引用次数大于等于 h 。如果 h 有多种可能的值,h 指数 是其中最大的那个。

示例 1:

输入:citations = [3,0,6,1,5] 输出:3 解释:给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3,
0, 6, 1, 5 次。
由于研究者有 3 篇论文每篇 至少 被引用了 3 次,其余两篇论文每篇被引用 不多于 3 次,所以她的 h 指数是 3。
示例 2:

输入:citations = [1,3,1] 输出:1

直接暴力出答案

class Solution(object):
    def hIndex(self, citations):
        """
        :type citations: List[int]
        :rtype: int
        """
        h=1
        if len(citations)==1:
            if citations[0]==0:
                return 0
            else:
                return h
        for i in range(len(citations)):   #一共有n篇论文,h指数介于1和n之间,所以遍历n次
            sum=0           #用来记录引用次数大于h指数的数量
            for j in citations:         #j是每篇论文引用的次数,如果j>h,则sum+1
                if j>=h:
                    sum+=1
                if sum>=h:
                    break           #已经满足当前h指数的要求了
            if sum<h:
                break               #本次的h指数不满足,停止循环
            h+=1
        return h-1
if __name__ == "__main__":
    a=Solution()
    citations = [11,15]
    print(a.hIndex(citations))

盛最多水的容器 - 力扣(LeetCode)

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

示例 1:

在这里插入图片描述

输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组
[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
示例 2:

输入:height = [1,1] 输出:1

终于碰到一道正常题了,这个应该不难吧,如果不懂的话,可以留言,评论。我将秒回复~~~

class Solution(object):
    def maxArea(self, height):
        """
        :type height: List[int]
        :rtype: int
        """
        left=0
        right = len(height)-1
        max_water = -1
        while left<right:
            max_water=max(max_water,min(height[left],height[right])*(right-left))
            if height[left]<height[right]:
                left+=1
            else:
                right-=1
        return max_water



if __name__ == "__main__":
    a=Solution()
    height=[1,2,1]
    print(a.maxArea(height))

矩阵置零 - 力扣(LeetCode)

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

示例 1:

在这里插入图片描述

输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]

示例 2:

在这里插入图片描述

输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

比上一题还简单

class Solution(object):
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        r=len(matrix)       #行
        c=len(matrix[0])    #列
        qr=[]   #存行
        qc=[]   #存列
        for i in range(r):
            for j in range(c):
                if matrix[i][j] == 0:
                    if i not in qr:
                        qr.append(i)
                    if j not in qc:
                        qc.append(j)
        for i in qr:    #第i行
            for k in range(c):
                matrix[i][k]=0
        for j in qc:
            for k in range(r):
                matrix[k][j]=0
        return matrix

if __name__ == "__main__":
    a=Solution()
    matrix = [[1,1,1],[1,0,1],[1,1,1]]
    print(a.setZeroes(matrix))

最小栈 - 力扣(LeetCode)

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop()
删除堆栈顶部的元素。 int top() 获取堆栈顶部的元素。 int getMin() 获取堆栈中的最小元素。

示例 1:

输入: [“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”]
[[],[-2],[0],[-3],[],[],[],[]]

输出: [null,null,null,null,-3,null,0,-2]

解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.

class MinStack(object):

    def __init__(self):
        self.stack = []
        self.mins = 1<<32


    def push(self, val):
        """
        :type val: int
        :rtype: None
        """
        self.stack.append(val)
        self.mins = min(self.stack)


    def pop(self):
        """
        :rtype: None
        """
        self.stack.pop()
        if len(self.stack)!=0:
            self.mins = min(self.stack)
        else:
            self.mins = 1<<32


    def top(self):
        """
        :rtype: int
        """
        return self.stack[-1]

    def getMin(self):
        """
        :rtype: int
        """
        return self.mins


# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(val)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
if __name__ == "__main__":
    obj = MinStack()
    obj.push(-2)
    obj.push(0)
    obj.push(-3)
    obj.getMin()
    obj.pop()
    obj.pop()
    obj.top()
    obj.getMin()

最后成果

  • 跳跃游戏 II - 力扣(LeetCode)
  • H 指数 - 力扣(LeetCode)
  • 盛最多水的容器 - 力扣(LeetCode)
  • 矩阵置零 - 力扣(LeetCode)
  • 最小栈 - 力扣(LeetCode)

结论

道友,加油!!

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

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

相关文章

全平台 GUI库, 物联网,嵌入式,单片机,桌面应用都行

跨平台最小头文件GUI库 GuiLite是一个轻量级、高效的GUI库&#xff0c;拥有仅4千行的C代码&#xff0c;且零依赖&#xff0c;采用单一头文件库&#xff08;GuiLite.h&#xff09;。这个库不仅提供高效渲染&#xff0c;即使在单片机上也能流畅运行&#xff0c;展现了卓越的性能表…

Power BI 可以取代 Excel 吗?

首先说明&#xff0c;Power BI并不能完全取代Excel。 Power BI和Excel虽然都是Microsoft推出的数据工具&#xff0c;但他们的设计目标并不相同&#xff0c;因此它们在数据分析和处理方面各自有独特的优势。两者更多是互补关系。 在做报表可视化方面Power BI确实优势明显&…

人脸可调色美颜SDK解决方案,让妆容更加自然、真实

在追求个性化和差异化的美妆时代&#xff0c;美摄科技以其前沿技术&#xff0c;为企业带来了一场美妆革新的风暴。我们全新推出的人脸可调色美颜SDK解决方案&#xff0c;将为您提供前所未有的美妆体验&#xff0c;让每一位用户都能轻松打造属于自己的独特妆容。 可调色技术&am…

JavaScript算法描述【排序与搜索】六大经典排序|搜索旋转排序数组|在排序数组中查找元素的第一个和最后一个位置、数组中的第K个|

&#x1f427;主页详情&#xff1a;Choice~的个人主页 文章目录 搜索旋转排序数组方法一 二分查询最大最小值思路详解代码方法二 二分查询中间数 在排序数组中查找元素的第一个和最后一个位置、数组中的第K个最大元素和颜色分类在排序数组中查找元素的第一个和最后一个位置方法…

day-31 给植物浇水

思路 每次前进浇水时进行判断&#xff1a; &#xff08;1&#xff09;如果当前水足够&#xff0c;则前进一步浇水 &#xff08;2&#xff09;如果当前水量不够,则返回-1处加水再返回&#xff0c;再前进一步浇水 解题方法 用一个变量po记录即将浇水的植物编号&#xff0c;当pop…

05-09 周四 vLLM的部署和实践

05-09 周四 vLLM能够做什么事情 时间版本修改人描述2024年5月9日14:33:05V0.1宋全恒新建文档 简介 GitHub项目 vllm-project 官方网站上解释了Fast、和flexible and easy to use的原因。 注&#xff0c;如果要使用ModelScope中的模型&#xff0c;请设置环境变量&#xff1a; e…

深度学习——前馈全连接神经网络(鸢尾花)

前馈全连接神经网络对鸢尾花数据集进行分类 1.导入所需要的包2.打印训练集和测试集二维数组3.定义模型4.打印模型信息5.权重和偏执6.编译网络和训练网络7.打印二维数据表格8.绘制图像9.查看准确率 1.鸢尾花数据集可以用 from sklearn.datasets import load_iris 方式获取&#…

汽车行业芯片 车规级芯片 单车芯片( soc mcu)数量

链接&#xff1a;https://xueqiu.com/3000217281/272114755 10大车规级MCU芯片10大车规级MCU芯片 汽车芯片是什么&#xff1f; 汽车芯片即车规级芯片&#xff0c;标准要高于工业级和民用级芯片&#xff0c;仅次于军工级芯片。芯片大概有以下四种级别&#xff0c;分别是军工级…

基于OceanBase+Flink CDC,云粒智慧实时数仓演进之路

摘要&#xff1a;本文整理自云粒智慧高级技术专家付大伟在 4 月 20 日的 2024 OceanBase 开发者大会上的分享&#xff0c;讲述了其数据中台在传统数仓技术框架下做的一系列努力后&#xff0c;跨进 FlinkCDC 结合 OceanBase 的实时数仓演进过程。 内容主要分为以下几个部分: 业务…

2023年ICPC亚洲济南地区赛 G. Gifts from Knowledge

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5, b…

一步一脚印式学习Linux第二课(简单明了)

继续昨天的基础命令&#xff0c;正文如下&#xff1a; 六、基础命令 8.history命令 作用&#xff1a;查看和控制历史记录 历史命令保存位置&#xff1a;~/.bash_history 启动终端时&#xff0c;会自动从历史命令保存位置的文件中读取历史命令加载到内存中。终端中执行命令时&…

视频降噪算法 hqdn3d 原理分析

视频降噪 视频降噪是一种处理技术&#xff0c;旨在减少视频中的噪声&#xff0c;提高画面质量。噪声可能来自多种源头&#xff0c;包括摄像机的传感器、压缩算法、传输过程中的干扰等。降噪处理对于视频监控、视频会议、电影后期制作以及任何需要高画质输出的应用场景都非常重…

msvcp110.dll是什么东西?关于msvcp110.dll丢失修复的问题分享

msvcp110.dll是什么东西&#xff1f;如果有人问出这个问题&#xff0c;那么百分之一百就是他遇到了丢失msvcp110.dll文件的问题了&#xff0c;不然别人是不可能问出这个问题的&#xff01;这个文件名字一般只有在你的电脑系统出现问题的时候&#xff0c;它才会弹出提示。今天来…

Baidu Comate智能编码助手

Baidu Comate智能编码助手 &#x1f388;1.Baidu Comate的简介&#x1f388;2.安装Baidu Comate&#x1f388;3.Baidu Comate实现功能&#x1f388;4.使用注释进行智能代码提示&#x1f388;5.结束语 &#x1f388;1.Baidu Comate的简介 根据官网的介绍&#xff0c;我们了解到B…

Verilog复习(一)| 模块的定义

模块&#xff08;module&#xff09;是Verilog的基本描述单位&#xff0c;用于描述某个设计的功能或结构&#xff0c;及其与其他模块通信&#xff08;连接&#xff09;的外部端口。 Verilog程序由关键词module和endmodule进行定义。 定义模块的步骤&#xff1a; 定义模块的端…

通用型产品发布解决方案(基础环境搭建)

文章目录 1.项目技术栈和前置技术2.创建Linux平台1.需求分析2.安装Virtual Box1.BIOS里修改设置开启虚拟化设备支持&#xff08;f2 或f10&#xff09;2.任务管理器 -> cpu 查看虚拟化是否开启3.卸载方式4.安装6.1.265.管理员身份运行&#xff0c;选择安装位置6.一直下一步&a…

Java基于Spring Boot框架毕业生实习与就业管理系统的设计与实现(附源码,说明文档)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

Qt---项目的创建及运行

一、创建第一个Qt程序 1. 点击创建项目后&#xff0c;选择项目路径以及给项目起名称 名称&#xff1a;不能有中文、不能有空格 路径&#xff1a;不能有中文路径 2. 默认创建有窗口类myWidget&#xff0c;基类有三种选择&#xff1a;QWidget、QMainWindow、QDialog 3. m…

智慧手术室手麻系统源码,C#手术麻醉临床信息系统源码,符合三级甲等医院评审要求

手麻系统全套源码&#xff0c;C#手术麻醉系统源码&#xff0c;支持二次开发&#xff0c;授权后可商用。 手术麻醉临床信息系统功能符合三级甲等医院评审要求&#xff0c;实现与医院现有信息系统如HIS、LIS、PACS、EMR等系统全面对接&#xff0c;全面覆盖从患者入院&#xff0c;…

深度学习之视觉特征提取器——GoogleNet/Inception

GoogleNet GoogleNet在2014年中的ImageNet夺冠&#xff0c;将Inception这一结构推向了热潮。从另外一个角度来看&#xff0c;CV魔改网络结构也从中得到启发或者说推动&#xff0c;拓宽了各种魔改的方式。GoogleNet其实只是Inception这一结构大规模集成后得到的模型&#xff0c…