leetcode刷题日志4.0

2023-10-30

目录

前言:

1.三个数的最大乘积

2.错误的集合 

 3.机器人能否返回原点

4.最长连续递增序列 

 5.验证回文串 II

 6.交替位二进制数


前言:

        五一假期结束了,大家玩的开心吗?不过我们还得回到我们的日常生活学习工作当中,那今天我就分享一下我个人写了的leetcode习题,一起来看看吧。(编程语言:Python)

1.三个数的最大乘积

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 

class Solution:
    def maximumProduct(self, nums):
        nums=sorted(nums,reverse=True)
        n1=nums[0]*nums[1]*nums[2]
        n2=nums[0]*nums[len(nums)-1]*nums[len(nums)-2]
        return max(n1,n2)

 题解:拿到这个数组先进行由大到小排序,这里我们要分有没有负数的情况下去讨论,如果全都是正数的话,那最大值毫无疑问就是前三个最大的数字之间的乘积;如果有负数的话那也要看负数的个数,如果只有一个分数的话那最大结果也还是前三个最大正数的乘积,如果有两个负数以上的话就要考虑第一个最大的数字和最小的两个负数乘积的结果。总的来说我们要的最大三个数的乘积要么是前三个大的数字的乘积,要么就是最大的数字与最小的两个数字之间的乘积。

2.错误的集合 

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。

给定一个数组 nums 代表了集合 S 发生错误后的结果。

请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。

class Solution:
    def findErrorNums(self, nums):
        c=k=0
        li=[x for x in range(1,len(nums)+1)]
        for i in range(len(nums)):
            if nums[i] in nums[i+1:]:
                k=i
        for j in li:
            if j not in nums:
                c=j
                break
        return [nums[k],c]

 题解:对于这类题,我们先创建一个1到n的列表,作为一个比较的参照物。首先找出nums中重复出现的数字的位置 k,然后对nums进行循环,找到不在li中的数字,最后我们输出这个重复的数字和丢失的数字就行了

 3.机器人能否返回原点

在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。

移动顺序由字符串 moves 表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。

如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。

注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。

class Solution:
    def judgeCircle(self, moves) :
        r=moves.count('R')
        l=moves.count('L')
        u=moves.count('U')
        d=moves.count('D')
        return r==l and u==d

题解:这类题非常简单,我们只需要去统计R L U D 这四个字符串出现的个数就行了,只要R和L的个数相等已经U和D之间的个数相等就可以返回到原点.

4.最长连续递增序列 

给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。

连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。

class Solution:
    def findLengthOfLCIS(self, nums):
        count=1
        li=[]
        nums.append(-9)
        for i in range(len(nums)-1):
            if nums[i+1]>nums[i]:
                count+=1
            else:
                li.append(count)
                count=1
        return max(li)

 题解:我们先给这个数组末尾加上一个负数,然后进行统计就行了,当前一个数字大于后面一个数字的时候count就加上1,反之就把count放入到列表li当中,count回到0,然后进行重新计数,直到这个数组遍历完成,我们只需要返回列表li中最大的count就行了.

 5.验证回文串 II

给你一个字符串 s,最多 可以从中删除一个字符。

请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。

class Solution:
    def validPalindrome(self, s):
        l=0
        r=len(s)-1
        while l<r and s[l]==s[r]:
            l+=1
            r-=1
        s1=s[0:l]+s[l+1:]
        s2=s[0:r]+s[r+1:]
        return s1==s1[::-1] or s2==s2[::-1]

题解:这类题我们只需要去对这个字符串进行遍历,然后分别从头和尾找出不一致的字符出来,然后以其中一个不同的字符为界限分别对这个字符前面和后面的字符串进行拼接得到一个新的字符是1,另一个不同的字符也是同样的操作得到s2,此时的s1和s2就是分别删除掉的第一个异同的字符和第二个异同的字符后的新字符串,我们只需要去判断在两个字符串是否至少有一个是满足回文字符串就行了。

 6.交替位二进制数

给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。 

class Solution:
    def hasAlternatingBits(self, n):
        b=bin(n)[2:]
        return '00' not in b and '11' not in b

题解:这类题做法是很简单的,我们只需要去判断这个字符串里面有没有出现'00'或者'11'就行了,如果出现就说明这个字符串不满足1 和 0之间相间出现。

好了,以上就是今天的习题了,你们学会了吗? 

分享一张壁纸:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode刷题日志4.0 的相关文章

随机推荐

  • rtklib中的基线约束应对观测条件糟糕的GNSS数据

    文章目录 问题 观测数据质量很差 使用基线约束后和约束前的结果对比 基线约束的原理 问题 观测数据质量很差 最近遇到一个难题 采集了500小时的数据 可是只有大约50 的的数据可以解算 呃 基线长度大约5公里 也算不上长基线 对这批数据进行
  • 串的模式匹配算法-BF算法+KMP算法

    BF算法 include
  • Spring Boot 中的 KafkaTemplate 是什么,原理,如何使用

    Spring Boot 中的 KafkaTemplate 是什么 原理 如何使用 Kafka 是一个流行的分布式消息系统 它可以用于在应用程序之间传递消息 Spring Boot 提供了对 Kafka 的支持 我们可以使用 Spring B
  • org.springframework.beans.factory.UnsatisfiedDependencyException异常问题的解决

    最近学了IDEA和SpringBoot MyBatis了 正所谓学以致用 于是用所学的来做项目 单元测试时报了下面的异常 Caused by org springframework beans factory UnsatisfiedDepe
  • WPF 在XAML中通过控件事件改变另一控件属性

    使用WPF进行开发 很多时候是要注意UI和后台代码的分离 尤其是要改变WinForm中的事件驱动机制 可是近期的开发遇到了这样一个问题 就是当一个控件的事件触发时 改变同级别的另一控件的属性 文字能力实在单薄 还是通过具体例子来说吧 首先
  • 深度学习训练模型的硬件条件

    之前热衷于学习理论知识 目前想跑代码了发现不知道从何下手 自己电脑上搭建的平台基本就是个摆设 因为跑不起来呀 今天我们就来看看想做深度学习应该怎么下手 首先了解下基础知识 1 深度学习用cpu训练和用gpu训练的区别 1 CPU主要用于串行
  • linux 上运行jxbrower出现的问题

    最近做了一个jxbrower抓取微信公众号文章的程序 想着挂在linux上定时运行 布上去却有几个问题这边总结一下 我得服务器是ubuntu16版本的 1 在linux无桌面的版本运行需要用x server运行 2 就是linux的Chro
  • L2-1 包装机PTA

    一种自动包装机的结构如图 1 所示 首先机器中有 N 条轨道 放置了一些物品 轨道下面有一个筐 当某条轨道的按钮被按下时 活塞向左推动 将轨道尽头的一件物品推落筐中 当 0 号按钮被按下时 机械手将抓取筐顶部的一件物品 放到流水线上 图 2
  • qt中drawline函数的参数_Qt--基础图形绘制

    一 基础图形绘制 A Qt图形系统中的关键角色 QPainter Qt中的画家 能够绘制各种基础图形 拥有绘图所需的画笔 画刷 字体 QPaintDevice Qt中的画布 画家的绘图板 所有的QWidget类都继承自QPaintDevic
  • (小白学java)Java 循环结构

    Java中有三种主要的循环结构 while 循环 do while 循环 for 循环 while 循环 和c很像了 不多写了 public class demo public static void main String args in
  • Javascript设计模式-10-迭代器模式

    Javascript设计模式 10 迭代器模式 简介 提供一种方法 顺序访问一个聚合对象中各个元素 而又不需要暴露该方法中的内部表示 迭代器模式可以把迭代的过程从业务逻辑中分离出来 在使用迭代器模式之后 即使不关心对象的内部构造 也可以按顺
  • 个人养老话题

    中国家庭的财富保卫战有三大战场 1 生娃 2 买都市圈里的好房子 3 买好股 好基
  • 【RSA】RSA加密、解密、签名与验证

    前言 最近要做iOS SDK的联网授权 涉及到数据安全验证 因此想到使用RSA进行签名和验证 授权主要流程如下 1 客户方前往我方开放平台注册授权 得到AppId和AppSecret 2 客户方集成SDK 调用Register接口传入App
  • 【数据采集】获取网站数据(二)

    获取网站数据 二 1 常用的数据采集python库 Beautiful Soup https www crummy com software BeautifulSoup bs4 doc zh pyspider http docs pyspi
  • 领域建模概述

    0 概述 在软件工程中 有两个高阶的工作的分别是架构和建模 如果把写代码比喻成施工 那么架构和建模就是设计图纸 相比编码 那么建模的确是对设计经验和抽象能力要求更高的一种技能 本文主要探讨一下对领域建模相关知识的理解 1 什么是领域建模 1
  • 算法:通过迪杰斯特拉(Dijkstra)算法,求出图中任意顶点到其他顶点的最短路径

    请看如下的示例图 该图有 V1 V7 七个顶点 每个顶点之间的距离 路径走向如图所示 假设这是一幅地图 我们很多时候都需要搜路径 比如从家到公司的路线图 也就是说 家是一个点 公司是另一个点 上图的各个点可以想象成分岔路口 当然 如果你不在
  • 安装Apache Atlas遇到的错误

    安装apache atlas 启动atlas server报错 查看logs atlas 20220524 115239 out文件 Caused by org springframework beans factory Unsatisfi
  • mysql从视图中获取字段值_MYSQL中视图的使用

    1 什么是视图 执行一条SQL 将结果集保存在一张虚拟表中 2 为什么要使用视图 重复利用SQL语句 简化SQL查询 快速取数据 只用知道表的部分结构 保护数据 根据特定授权 更改数据格式和表示 视图可返回与底层表的表示和格式不同的数据 注
  • maven私有仓库nexus3.5搭建与使用

    maven私有仓库nexus3 5搭建与使用 参考网址 http blog csdn net clj198606061111 article details 52200928 http www cnblogs com jingmoxukon
  • leetcode刷题日志4.0

    目录 前言 1 三个数的最大乘积 2 错误的集合 3 机器人能否返回原点 4 最长连续递增序列 5 验证回文串 II 6 交替位二进制数 前言 五一假期结束了 大家玩的开心吗 不过我们还得回到我们的日常生活学习工作当中 那今天我就分享一下我