力扣题11~15

news/2024/12/21 19:48:36/

题11(中等):

思路:

这种题目第一眼就是双循环,但是肯定不行滴,o(n^2)这种肯定超时,很难接受。

所以要另辟蹊径,我们先用俩指针(标志位)在最左端和最右端,我们知道这个容器的最大容积是看最短的那条(木桶效应嘛)。如果我们让长的那一条再怎么大,都影响不了容积,所以我们加上底不变的话,要找最大容积,肯定要变短边嘛,动长边又改变不了什么,也就是说这个时候移动长边得到的一定不是。思路打开就写代码

python代码

class Solution:

    def maxArea(self, height: List[int]) -> int:

        left=0

        right=len(height)-1

        max_area=0

        while left<right:

            h=min(height[left],height[right])

            w=right-left

            area=h*w

            max_area=max_area if max_area>area else area

            if height[left]<height[right]:

                left+=1

            else:

                right-=1

        return max_area

题12(中等):

思路:

作为爬虫玩家,这种东西直接给个关系映射就好了啊,谁会去思考4,9特殊情况啊

python代码:

class Solution:def intToRoman(self, num: int) -> str:Roman_str=''tran_json={1:'I',4:'IV',5:'V',9:'IX',10:'X',40:'XL',50:'L',90:'XC',100:'C',400:'CD',500:'D',900:'CM',1000:'M',}i=10while 1:if num<1:break#获得在各个位的数字h_num=num%10num=int(num/10)if h_num==0:i*=10elif h_num<4:Roman_str=h_num*tran_json[i/10]+Roman_stri*=10elif h_num==4:Roman_str=tran_json[4*i/10]+Roman_stri*=10elif h_num<9:Roman_str=tran_json[5*i/10]+(h_num-5)*tran_json[i/10]+Roman_stri*=10elif h_num==9:Roman_str=tran_json[9*i/10]+Roman_stri*=10return Roman_str

题13(简单):

思路:

和上面一样,不想那么多,直接用json存下换算规则,就像处理爬虫的字体加密一样,不想什么方法,直接字体识别出键值对来就套用,懒得看什么先转unicode啥的

python代码:

class Solution:

    def romanToInt(self, s: str) -> int:

        R_cout=0

        tran_json={

            'I':1,

            'V':5,

            'X':10,

            'L':50,

            'C':100,

            'D':500,

            'M':1000

        }

        ts_json={

            'IV':4,

            'IX':9,

            'XL':40,

            'XC':90,

            'CD':400,

            'CM':900

        }

        for key,value in ts_json.items():

            s=s.replace(key,'|'+str(value))

        for key,value in tran_json.items():

            s=s.replace(key,'|'+str(value))

        R_cout=sum(list(map(int,s.strip('|').split('|'))))

        return R_cout

题14(简单):

思路:

双for循环直接解决了

python代码:

class Solution:

    def longestCommonPrefix(self, strs: List[str]) -> str:

        pub_str=''

        for i in range(min([len(s) for s in strs])):

            k=strs[0][i]

            for j in range(1,len(strs)):

                if k!=strs[j][i]:

                    return pub_str

            pub_str+=k

        return pub_str

题15(中等):

思路:

和前面一个容器的那个一样,用双指针法,我们将nums排好序,固定一个起始的话,如果大的话移动右指针,小的话移动左指针。

python代码:

class Solution:

    def threeSum(self, nums: List[int]) -> List[List[int]]:

        nums.sort()

        result=[]

        n_len=len(nums)

        for i in range(len(nums)):

            pos=i

            if nums[i] > 0:

                break

            # 跳过可能重复的数字,避免重复的三元组

            if i > 0 and nums[i] == nums[i-1]:

                continue

            left=pos+1

            right=n_len-1

             #预处理,如果前两个加最后一个都大的话,就删了最后一个

            while left<right:

                if nums[pos]+nums[left]+nums[right]>0:

                    right-=1

                    n_len-=1

                else:

                    break

            while left<right:

                total = nums[i] + nums[left] + nums[right]

                if total==0:

                    result.append([nums[pos],nums[left],nums[right]])

                    while left < right and nums[left] == nums[left + 1]:

                        left += 1

                    while left < right and nums[right] == nums[right - 1]:

                        right -= 1

                    left += 1

                    right -= 1

                elif total>0:

                    right-=1

                else:

                    left+=1

        return result


http://www.ppmy.cn/news/1536756.html

相关文章

小白转行IT应该选择哪个方向?——详细学习路线指南

在数字化时代&#xff0c;IT行业是一个充满机会且发展迅猛的领域。越来越多的人希望转行到IT行业&#xff0c;以实现更好的职业发展和更高的收入。对于小白而言&#xff0c;选择一个合适的IT方向并制定一条有效的学习路线&#xff0c;是成功转型的关键。本篇文章将探讨小白可以…

微信小程序 - 01 - 一些补充和注意点(补充ing...)

目录 一、节流二、在一个发请求的函数中&#xff0c;只有发生下拉动作&#xff0c;才执行关闭下拉代码 最近在学微信小程序&#xff0c;把学习过程中的一些补充和注意点总结一下&#xff0c;内容会比较简单&#xff0c;因为只涉及基础知识&#xff0c;供个人参考 一、节流 情…

【优选算法】(第二十二篇)

目录 颜⾊分类&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 快速排序&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 颜⾊分类&#xff08;medium&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;LeetCode&…

React第十章(useState)

useState useState 是一个 React Hook&#xff0c;允许函数组件在内部管理状态。 组件通常需要根据交互更改屏幕上显示的内容&#xff0c;例如点击某个按钮更改值&#xff0c;或者输入文本框中的内容&#xff0c;这些值被称为状态值也就是(state)。 使用方法 useState 接收…

everyday_question dq20240731

网卡的作用是什么&#xff1f; 网卡&#xff08;Network Interface Card&#xff0c;NIC&#xff09;&#xff0c;也称为网络适配器&#xff0c;是计算机硬件的一部分&#xff0c;用于实现计算机与网络之间的连接和数据传输。以下是网卡的一些主要作用&#xff1a; 网络连接&a…

RabbitMQ入门1—queue参数之type

RabbitMQ 队列的 type 参数&#xff0c;这个参数是在 RabbitMQ 3.8.0 及以后版本引入的&#xff0c;它允许指定队列的存储和行为模式。type 参数有以下几种可选值&#xff1a; 1. classic 描述&#xff1a;这是 RabbitMQ 的传统队列类型&#xff0c;也是默认类型。如果不指定…

幂等性接口实现

1、什么是幂等性 幂等&#xff08;idempotence&#xff09;&#xff0c;这个词源自数学&#xff0c;幂等性是数学中的一个概念&#xff0c;常见于抽象代数中。表达的是N次变换与1次变换的结果相同。简单来说&#xff0c;就是如果方法调用一次和调用多次产生的效果是相同的&…

YOLO11改进|卷积篇|引入空间通道重组卷积ScConv

目录 一、【SCConv】卷积1.1【SCConv】卷积介绍1.2【SCConv】核心代码 二、添加【SCConv】卷积2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【SCConv】卷积 1.1【SCConv】卷积介绍 SCConv 模块提供了一种新的视角来看待CNNs的特征提取…