leetcode刷题日志4.0

news2024/11/17 11:30:17

目录

前言:

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之间相间出现。

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

分享一张壁纸:

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

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

相关文章

X86架构与Arm架构的主要区别分析

​ X86架构和ARM架构是主流的两种CPU架构&#xff0c;X86架构的CPU是PC服务器行业的老大&#xff0c;ARM架构的CPU则是移动端的老大。 X86架构和arm架构实际上就是CISC与RISC之间的区别&#xff0c;很多用户不理解它们两个之间到底有哪些区别&#xff0c;实际就是它们的领域不…

《算法训练营》语言基础(゚Д゚

&#x1f442; 无论你多怪异我还是会喜欢你&#xff08;《刺客伍六七》动画推广版片尾曲&#xff09; - 周子琰 - 单曲 - 网易云音乐 一起补基础&#xff01; φ(゜▽゜*)♪ &#x1f442; My Nams Suzie - Susie/Farfashah …

20230503-win10-U盘安装WIN10-22h2

20230503-win10-U盘安装WIN10-22h2 一、软件环境 zh-cn_windows_10_consumer_editions_version_22h2_updated_april_2023_x64_dvd_80cec13e.isofirpe 1.8.2标签&#xff1a;firpe win10 22h2分栏&#xff1a;WINDOWS 二、硬件环境 8G或以上的有PE功能的启动U盘一个台式机需…

【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码

【2023年第十一届泰迪杯数据挖掘挑战赛】C题&#xff1a;泰迪内推平台招聘与求职双向推荐系统构建 27页论文及实现代码 相关链接 &#xff08;1&#xff09;建模方案 【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解…

String类的学习笔记(中):介绍字符串的不可变性和字符串常量池

本文介绍了String类字符串的不可变性和字符串常量池,主要包括 如何保证字符串不可变, 如何对字符串的修改. 为什么字符串要设置不可变, 字符串常量池的创建和了解,简单的字符串常量池图, 以及如何将字符串手动添加到字符串常量池 字符串不可变性和字符串常量池 一.字符串的不可…

考研数学经验分享

考研数二经验 先说一下自我情况吧&#xff0c;我是23计算机专硕考研&#xff0c;本科是河北一本双非&#xff0c;考的是数二英二和408。相对其他专业来说&#xff0c;计算机的专业课408由于要学四本书&#xff0c;所以会占用大部分时间&#xff0c;因此也会挤掉一些数学和英语的…

文本识别、截图识别保存和多文件识别

一、源码 github源码 二、介绍 采用Tesseract OCR识别 采用多线程进行图片识别 界面 选择 文件是可以识别本地的多张图片文件夹是识别文件夹里面的所有图片的内容截图 可以复制到剪切板、可以识别也可以直接保存 重置 是清除选择的图片和识别结果语言选择 是选择不同的模型…

AX7A200教程(7): 基于DDR3的串口发送和接收(64次突发)(二)

本章节主要使用ddr3做为缓存&#xff0c;串口接收的数据通过ddr缓存后通过发送模块发送出去。我们之前的串口发送数据通过ddr缓存是一个突发长度&#xff0c;本篇文章将会传输64个突发长度。整体的功能框图所下图所示 因本博文使用的是上个章节的图片数据&#xff0c;所以数据大…

微服务学习——分布式搜索

初识elasticsearch 什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎&#xff0c;可以帮助我们从海量数据中快速找到需要的内容。 elasticsearch结合kibana、Logstash、Beats&#xff0c;也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域…

Nmap入门到高级【第十一章】

预计更新第一章. Python 简介 Python 简介和历史Python 特点和优势安装 Python 第二章. 变量和数据类型 变量和标识符基本数据类型&#xff1a;数字、字符串、布尔值等字符串操作列表、元组和字典 第三章. 控制语句和函数 分支结构&#xff1a;if/else 语句循环结构&#…

linux系统下如何调试C/C++程序【越早知道越好】

前言 研发语言是C或者C的小伙伴&#xff0c;无论是从事服务端开发&#xff0c;还是客户端开发&#xff0c;都需要掌握linux系统下关于C/C代码的调试能力。 正文 入门示例 首先&#xff0c;我们通过一段存在问题的代码来演示整个调试过程以及问题分析定位的方法和手段。 示例代码…

如何使用 ChatGPT 生成 Stable diffusion 提示词

chatgpt免费体验入口网址&#xff1a; http://chat.xutongbao.top 一、教chatgpt写提示词 StableDiffusion是一款利用深度学习的文生图模型&#xff0c;支持通过使用提示词来产生新的图像&#xff0c;描述要包含或省略的元素。 我在这里引入StableDiffusion算法中的Prompt概念…

mysql 8.0安装全过程(linux上二进制包安装,非root用户)

目录 介绍 安装 0、删除随系统安装的mariadb 1、下载 2、解压 3、创建用户 4、创建数据目录 5、核心启动配置文件 6、安装依赖 7、初始化mysql文件 8、启动服务 9、配置环境变量 10、改root登录密码 可能遇到错误&#xff1a; 1&#xff09; libaio.so.1 缺少 2…

ASP.NET Core MVC 从入门到精通之HttpContext

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

kafka常见问题QA(六)

六、常见问题QA 6.1 无消息丢失如何配置 producer 调用方式 &#xff08;1&#xff09;网络抖动导致消息丢失&#xff0c;Producer 端可以进行重试。 &#xff08;2&#xff09;消息大小不合格&#xff0c;可以进行适当调整&#xff0c;符合 Broker 承受范围再发送。 不要使用…

【Linux Network】网络编程套接字

目录 1. 源IP地址与目的IP地址的认识 2. 端口号的认识 3. 套接字socket 4. TCP协议和UDP协议 5. 网络字节序 6. socket编程 7. socket编程接口 8. 使用UDP协议跨网络通信程序 Linux网络编程✨ 1. 源IP地址与目的IP地址的认识 在因特网上&#xff0c;一台主机和一个IP地址往往是…

【VM服务管家】VM4.2平台SDK_6.1 环境配置类

目录 2.1.1 环境配置&#xff1a;基于Csharp二次开发环境配置方法2.1.2 环境配置&#xff1a;基于MFC二次开发环境配置方法2.1.3 环境配置&#xff1a;基于Qt二次开发环境配置方法2.1.4 用户权限&#xff1a;普通以EXE方式启动Server的方法2.1.5 环境配置&#xff1a;程序启动后…

基于类别级正则化的无监督域自适应眼底图像分割

文章目录 Unsupervised Domain Adaptive Fundus Image Segmentation with Category-Level Regularization摘要方法Inter-domain Category RegularizationSource Domain Category RegularizationTarget Domain Category Regularization总损失 Unsupervised Domain Adaptive Fund…

总结目前敏捷开发框架(持续更新....)

文章目录 0 敏捷开发1 类型分类1.1. Scrum1. 2.极限编程&#xff08;XP&#xff09;1. 3. 快速应用程序开发 (RAD)1. 4. 动态系统开发方法&#xff08;DSDM&#xff09;1.5.统一流程&#xff08;UP&#xff09;1. 6. 精益方法1. 7. 看板1. 8.FDD&#xff08;功能驱动开发&#…

2023年最新版【接口自动化测试,web自动化测试,app自动化测试】全套自动化测试面试题

前言&#xff1a; 自动化测试是软件测试中的一个重要领域&#xff0c;它可以帮助企业提高软件开发质量、缩短测试周期和降低测试成本。随着信息技术的不断发展&#xff0c;自动化测试也在不断地创新和发展。本篇文章收集了2023年最新版的接口自动化测试、Web自动化测试和App自…