centos7安装 Pytorch Java Spring 深度图像 xaml redis常用语句 datepicker jestjs vue过滤器 vue的钩子函数 vue源码下载 vue手册 后台管理网页模板 jquery的点击事件 jq触发点击事件 mysql当前时间减一天 matlab停止运行命令 bootstrap文件上传样式 spark算法 bentley软件介绍 mysql查看锁表 java手机验证码 tomcat调优和jvm调优 matlab中如何定义函数 判断bigdecimal是否为空 linux重启mysql python实例 python类和对象 python返回函数 python正则匹配数字 javapackage java包 java入门级教程 java中的基本数据类型 randomjava java数组添加值 java索引 java中long java怎么编程 java字符串相等
当前位置: 首页 > 学习教程  > 编程语言

20天组队学习 | 腾讯精选11.14.15题

2021/1/13 20:07:54 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

目录011 盛最多水的容器014 最长公共前缀015 三数之和011 盛最多水的容器 题目描述 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai)…

目录

    • 011 盛最多水的容器
    • 014 最长公共前缀
    • 015 三数之和

011 盛最多水的容器

题目描述

给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai)(i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
说明:你不能倾斜容器,且 n 的值至少为 2。
图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
示例:
输入: [1,8,6,2,5,4,8,3,7]
输出: 49

解题方法

用暴力法解决的方法:柱子从左边第一个起,就要和剩下的柱子求一次面积,遍历全部后得出最终值。
双指针法:只移动矮柱子指针,不动高柱子指针
在这里插入图片描述

python代码

class Solution(object):
    def maxArea(self, height):
        l=0
        r=len(height)-1
        res=[]
        while l<r:
            res.append(min(height[l],height[r])*(r-l))
            if height[l]<=height[r]: l+=1
            else: r-=1
        return max(res)

014 最长公共前缀

题目描述

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"

解题方法

暴力法

python代码

class Solution(object):
    def longestCommonPrefix(self, strs):
        ls = len(strs)
        if ls == 1:
            return strs[0]
        prefix = ''
        pos = 0
        while True:
            try:
                current = strs[0][pos]
            except IndexError:
                break
            index = 1
            while index < ls:
                try:
                    if strs[index][pos] != current:
                        break
                except IndexError:
                    break
                index += 1
            if index == ls:
                prefix = prefix + current
            else:
                break
            pos += 1
        return prefix

015 三数之和

题目描述

给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a + b + c = 0?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例:
给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
  [-1, 0, 1],
  [-1, -1, 2]
]

解题方法

求解此类问题最容易想到的就是暴力破解,使用3层循环,遍历所有的三元组,找到满足条件的元组。

这里用排序 + 双指针

python代码

class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        
        n=len(nums)
        res=[]
        if(not nums or n<3):
            return []
        nums.sort()
        res=[]
        for i in range(n):
            if(nums[i]>0):
                return res
            if(i>0 and nums[i]==nums[i-1]):
                continue
            L=i+1
            R=n-1
            while(L<R):
                if(nums[i]+nums[L]+nums[R]==0):
                    res.append([nums[i],nums[L],nums[R]])
                    while(L<R and nums[L]==nums[L+1]):
                        L=L+1
                    while(L<R and nums[R]==nums[R-1]):
                        R=R-1
                    L=L+1
                    R=R-1
                elif(nums[i]+nums[L]+nums[R]>0):
                    R=R-1
                else:
                    L=L+1
        return res

作者:wu_yan_zu
链接:https://leetcode-cn.com/problems/3sum/solution/pai-xu-shuang-zhi-zhen-zhu-xing-jie-shi-python3-by/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文链接: http://www.dtmao.cc/news_show_600256.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?