Leetcode刷题日志2.0

news2025/1/20 11:00:33

目录

前言: 

1.数字的补数

2.最大连续 1 的个数 

3.下一个更大元素 I 

4.斐波那契数

5.提莫攻击

6.557. 反转字符串中的单词 III


前言: 

        今天就分享一下最近刷到的leetcode习题吧 ,编程语言:Python3。废话不多说,请看题!

1.数字的补数

        对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。

        例如,整数 5 的二进制表示是 "101" ,取反后得到 "010" ,再转回十进制表示得到补数 2 。现给你一个整数 num ,输出它的补数。

class Solution:
    def findComplement(self, num):
        b=bin(num)[2:]
        b=b.replace('0','a')
        b=b.replace('1','0')
        b=b.replace('a','1')
        return int(b,2)

方法:这道题可以这样子做,首先先把这个十进制数字转换为二进制数字符串,然后把这个二进制数字符串里面的‘0’全部替换为随便一个字符‘a’,然后再把里面的‘1’字符替换为‘0’,最后把‘a’替换为‘1’就OK了,这样就完成了二进制数补数的转换,然后通过int(b,2) 输出最终转换完成的十进制数就行了

2.最大连续 1 的个数 

给定一个二进制数组 nums , 计算其中最大连续 1 的个数。

class Solution:
    def findMaxConsecutiveOnes(self, nums):
        li=[]
        count=0
        nums.append(8)
        for i in nums:
            if i!=1:
                li.append(count)
                count=0
            else:
                count+=1
        return max(li)

 方法: 先创建一个列表存储 li ,然后就进入到循环,当遇到1的时候count就+1,如果没有遇到1的时候就把这个count放入 li 里面,最后我们会发现列表 li 里面的数字就是连续出现 1 的次数,最后只需要返回最大的那个就行了。

3.下一个更大元素 I 

nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。

给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中nums1 是 nums2 的子集。

对于每个 0 <= i < nums1.length ,找出满足 nums1[i] == nums2[j] 的下标 j ,并且在 nums2 确定 nums2[j] 的 下一个更大元素 。如果不存在下一个更大元素,那么本次查询的答案是 -1 。

返回一个长度为 nums1.length 的数组 ans 作为答案,满足 ans[i] 是如上所述的 下一个更大元素 。

class Solution:
    def nextGreaterElement(self, nums1, nums2) :
        li = []
        for i in nums1:
            judge=False
            for j in range(nums2.index(i),len(nums2)):
                if nums2[j] > i:
                    judge=True
                    li.append(nums2[j])
                    break
            if not judge:
                li.append(-1)
        return li

方法: 这道题方法也是比较简单的,先对nums1 进行循环,在nums2 里面取到此时nums1的数字的位置,然后对nums2这个位置右边的数字进行循环,如果遇到大于此时的数字的话就把这个数字加入到列表li中,如果没有找到就添加-1

 4.斐波那契数

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1
现在给定 n ,请计算 F(n) 。

class Solution:
    def fib(self, n):
        if n==0:
            return 0
        a=1
        b=1
        if n==1 or n==2:
            return 1
        while n>2:
            c=a+b
            a=b
            b=c
            n-=1
        return b

老题目了,不多讲

5.提莫攻击

在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。

当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。

正式地讲,提莫在 t 发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration 秒后结束。

给你一个 非递减 的整数数组 timeSeries ,其中 timeSeries[i] 表示提莫在 timeSeries[i] 秒时对艾希发起攻击,以及一个表示中毒持续时间的整数 duration 。

返回艾希处于中毒状态的 总 秒数。

class Solution:
    def findPoisonedDuration(self, timeSeries, duration) :
        time=0
        for i in range(len(timeSeries)):
            if i<len(timeSeries)-1:
                if timeSeries[i+1]-timeSeries[i]<=duration:
                    time+=timeSeries[i+1]-timeSeries[i]
                else:
                    time+=duration
        return time+duration

 方法:哈哈各位玩过英雄联盟吧,这里我们要分两步来走,首先把timeSeries分为最后一个时间段和最后一个时间段之前的时间段,因为最后一个时间段是不参与做比较的。然后对最后一个时间段之前的时间段进行循环,当后一个时间点与前一个时间点间隔时间小于或等于duration的时候我们就把time加上这两个时间点的差值,此时提莫的中毒技时间也开始刷新了;如果两个时间点的差值大于duration时,就直接把time加上duration就行了,最后在返回就结果记得加上最后一个时间段提莫中毒技能刷新之后的时间,实验加上duration就行了

6.557. 反转字符串中的单词 III

给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

class Solution:
    def reverseWords(self, s) :
        li=s.split(' ')
        for i in range(len(li)):
            li[i]=li[i][::-1]
        return ' '.join(li)

 方法:首先我们把这个句子里面每一个单词提取出来,放入一个列表里面去,然后对这个列表进行循环,只需要把列表里面的每一个单词进行倒序就行了,最后再把这个列表单词之间用空格连接起来返回满足条件的字符串

好了,以上就是今天的习题内容了,我们下一期再见!! 

 分享一张壁纸:

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

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

相关文章

【备战蓝桥杯国赛-国赛真题】2022

思路 题目的一是就是从1~2022这2022个数中挑选十个数&#xff0c;使其的总和为2022&#xff0c;如果做过背包问题&#xff0c;那么思路就很好出来了&#xff0c;每个数无非就是选与不选&#xff0c;每个数有他们的权值&#xff0c;权值就等于它们本身的值&#xff0c;抽象成背…

java调用百度的接口获取起始位置的距离

需求:校验收货地址是否超出配送范围 重要: 做该需求的思路就是通过卖家和卖家具体的地址信息,来获取到二者的经纬度, 此时可以使用百度的 "地理编码服务",即可获取对应的经纬度 第二步,就是通过二者的经纬度,按照百度接口的要求,发送,即可获取到包含二者距离的JSON串…

循环语句for

for循环 循环和遍历的概念 循环&#xff08;Loop&#xff09;和遍历&#xff08;Traversal&#xff09;是两个在计算机编程中经常使用的概念。 循环是一种重复执行一段代码的结构。通过循环&#xff0c;可以在满足一定条件的情况下&#xff0c;多次执行相同的代码。循环语句…

mysql8.0最新版本超详细安装教程

mysql8.0最新版本超详细安装教程 第一步: 百度搜索MySQL 第二步:进入MySQL官方网站后点击DOWNLOADS 第三步:下拉页面找到图中标识 并点击 第四步:点击图中标识 第五步:点击下载第一个 第六步:点击图中标识 第七步:在D盘创建mysql文件夹 第八步:将下载好的mysq压缩包放入到新建…

深度学习:Opencv的blobFromImage是如何工作的

文章目录 1 OpenCV中blobFromImage函数简介2 blobFromImage是如何工作的2.1 介绍2.2 blobFromImage 的工作流程2.3 blobFromImage 和 blobFromImages1 OpenCV中blobFromImage函数简介 如果训练模型时图像的尺寸 与实际使用的图像尺寸不一致,需要对图像尺寸进行变换; blobFr…

第一次使用服务器部署项目

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

HCIA-RS实验-STP和RSTP(2)

接上一篇文章&#xff1b;其他的不多说&#xff0c;新建一个新的配置设备&#xff1b;如果接上一个实验的配置的话&#xff0c;建议先把所有配置删除后再执行&#xff1b;新的拓扑也与上一个实验一致&#xff1b; 目录 创建新配置 配置RSTP 查看stp版本 配置边缘端口 …

如何防止重复下单

一、问题背景 最简单的&#xff1a;DB 事务。如创建订单时&#xff0c;同时往订单表、订单商品表插数据&#xff0c;这些 Insert 须在同一事务执行。 Order 服务调用 Pay 服务&#xff0c;刚好网络超时&#xff0c;然后 Order 服务开始重试机制&#xff0c;于是 Pay 服务对同…

算法基础第一章

算法基础 第一章&#xff1a;基础算法1、排序2、二分查找3、大数据量的加法和减法&#xff08;高精度加减法&#xff09;3.1、加法3.2、减法 4、前缀和4.1、一维前缀和4.2、二维前缀和 5、差分5.1、一维差分5.2、二维差分 6、双指针7、位运算7.1、lowbit的应用 8、离散化9、区间…

基于c与数据库实现的电子词典

1.搭建客户端与服务器&#xff0c;客户端使用多线程方式&#xff0c;主线程跑发送信息给服务器功能&#xff0c;分支线程跑循环接收服务器信息功能 客户端代码&#xff1a; //TCP客户端的搭建 int tcp_kehuduan() {//创建字节流套接字cfd socket(AF_INET,SOCK_STREAM,0);if(c…

【TCP服务器的演变过程】C++使用libevent库开发服务器程序

C使用libevent库开发服务器程序 一、引言二、libevent简介三、Libevent库的封装层级3.1、reactor对象封装struct event_base3.2、事件对象struct event3.3、struct bufferevent对象3.4、evconnlistener对象3.5、事件循环3.6、事件处理 四、完整示例代码小结 一、引言 手把手教…

病毒的遗传分析

噬菌体的生活周期 烈性噬菌体 噬菌体吸附到宿主细胞上尾丝鞘收缩,中轴刺穿宿主细胞头部的DNA被送入宿主细胞在数分钟内,所有的细菌核算和蛋白质合成都被抑制 噬菌体大分子合成(DNA,蛋白外壳),细菌的核算被降解 噬菌体组装:DNA被包到头部,组装尾部,装上尾丝 宿主细胞破裂:约20…

新品首发丨计讯物联5G水利遥测终端机TY511-B3,推动5G+智慧水利再进化

当前&#xff0c;水利在全面感知、全面互联、智慧应用等方面较其他行业存在明显差距。基于物联网行业通信技术的不断突破和水利行业对高速移动通信的强烈需求&#xff0c;5G移动通信以高速率、大带宽、低时延、广连接等特点让水利数据快速高效地传输成为可能&#xff0c;逐渐成…

如何优雅的写个try catch的方式!

软件开发过程中&#xff0c;不可避免的是需要处理各种异常&#xff0c;就我自己来说&#xff0c;至少有一半以上的时间都是在处理各种异常情况&#xff0c;所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块&#xff0c;不仅有大量的冗余代码&#xff0c;而…

流程图拖拽视觉编程-流程编辑器2

目录 一、简介 二、自定义图元 2.1图元设计 2.2 端口QNEPort 2.3节点块QNEBlock 一、简介 前期文章&#xff1a; 流程图拖拽视觉编程--概述_Jason~shen的博客-CSDN博客 流程图拖拽视觉编程-流程编辑器_Jason~shen的博客-CSDN博客 本期内容&#xff1a; 本期将继续介绍…

【Leetcode】236.二叉树的最近公共祖先

二叉树的最近公共祖先 题目思路1思路2代码 题目 思路1 给我们两个二叉树中的节点 找出里面的最近公共祖先 首先我们要分析p q 两点有哪些位置关系 p q在根节点的两侧 此时最近公共祖先就是根节点 在根节点一侧 此时两个节点都在根节点左侧 此时可以递归二叉树 让root.left…

内存取证小练习-基础训练

这是题目和wolatility2.6的链接 链接&#xff1a;https://pan.baidu.com/s/1wNYJOjLoXMKqbGgpKOE2tg?pwdybww 提取码&#xff1a;ybww --来自百度网盘超级会员V4的分享 压缩包很小&#xff0c;题目也比较简单基础&#xff0c;可以供入门使用 1&#xff1a;Which volatility…

使用auto-gpt来写一篇技术文章(如何部署autogpt+遇到的问题+如何使用)

文章目录 前言一、autogpt本地部署1.clone代码2.启动虚拟环境3.运行项目 二、使用aotogpt生成文章1.人设描述2.设置目标3.文章的生成过程4.文章的生成内容 总结 前言 最近AI技术的发展非常迅猛&#xff0c;尤其是和GPT相关的技术&#xff0c;备受瞩目。近日&#xff0c;Autogp…

nvm安装管理npm

1.根据http://t.csdn.cn/mRwCQ这个教程完成安装 2.使用nvm install [指定版本号]&#xff0c;下载了16.15.1&#xff0c;和10.15.1版本 2.5 这里其实出了一点问题&#xff0c;我在下载16.15.1时&#xff0c;因为墙的问题其实是下载出错&#xff0c;报了一个error的&#xff0c…

手推A Unified Solution to Constrained Bidding in Online Display Advertising论文

A Unified Solution to Constrained Bidding in Online Display Advertising&#xff1a;一种对在线展示广告约束出价问题的通用解决方案 未开放但是可以搜到 NeuralAuction: 电商广告中的端到端机制优化方法 https://arxiv.org/abs/2106.03593 一种使用真负样本的在线延迟反…