力扣天天练week3-LeetCode75

news2024/9/21 20:24:41

topic75-1-t1768交替合并字符串

题目描述:给你两个字符串word1和word2。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回 合并后的字符串 。

示例:

输入:word1 = "abc", word2 = "pqr"
输出:"apbqcr"
解释:字符串合并情况如下所示:
word1:  a   b   c
word2:    p   q   r
合并后:  a p b q c r

 思路:将word1和word2逐项加到result中,直到其中一个为空,再将剩余元素加到结果中

class Solution:
    def mergeAlternately(self, word1: str, word2: str) -> str:
        length1=len(word1)
        length2=len(word2)
        result=''   #用来存储最后的结果
        i=0
        while i<length1 and i<length2:
            result+=word1[i]
            result+=word2[i]
            i+=1
        if length1>length2:
            result+=word1[i:]
        else:
            result+=word2[i:]
        return result

topic75-2-t1071字符串的最大公因子

题目描述:对于字符串 s 和 t,只有在 s = t + ... + t(t 自身连接 1 次或多次)时,我们才认定 “t 能除尽 s”。给定两个字符串 str1 和 str2 。返回 最长字符串 x,要求满足 x 能除尽 str1 且 x 能除尽 str2 。

示例:

 思路:先求出两个字符串长度,然后利用math库中的gcd函数求长度的最小公因数,判断前最小公因数子串是否为最大公因子串

class Solution:
    def gcdOfStrings(self, str1: str, str2: str) -> str:
        length1=len(str1)
        length2=len(str2)      #记录两个字符串长度

        #使用math库中的gcd函数求两个字符串长度的公因数
        gcd=math.gcd(length1,length2)
        maxSameStr=str1[0:gcd]    #字符串最大公因子
        if maxSameStr*(length1//gcd)==str1 and maxSameStr*(length2//gcd)==str2:
            return maxSameStr
        return ''

topic75-3-t1431:拥有最多糖果的孩子

题目描述:

给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。

示例:

 思路:先找出小孩中拥有的最大糖果数,然后遍历数组,判断当前元素加额外元素是否小于最大值,是则返回False,否则返回True

class Solution:
    def kidsWithCandies(self, candies: List[int], extraCandies: int) -> List[bool]:
        maxnum=max(candies)    #求出最多糖果
        length=len(candies)
        result=[]     
        for i in range(length):
            if candies[i]+extraCandies>=maxnum:
                result.append(True)
            else:
                result.append(False)
        return result

topic75-4-t605:种花问题

题目描述:

假设有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花不能种植在相邻的地块上,它们会争夺水源,两者都会死去。

给你一个整数数组 flowerbed 表示花坛,由若干 0 和 1 组成,其中 0 表示没种植花,1 表示种植了花。另有一个数 n ,能否在不打破种植规则的情况下种入 n 朵花?能则返回 true ,不能则返回 false 。

示例:

 思路:先首尾加0(用来判断首尾为0的特殊情况),如果当前为0,并且前后都为0,count+1,将该点标记为1,遍历,最后判断count与n的大小关系。

class Solution:
    def canPlaceFlowers(self, flowerbed: List[int], n: int) -> bool:
        count=0  #计数,记录符合条件的位置个数
        flowerbed.insert(0,0)  #首尾都加0,不影响结果
        flowerbed.append(0)
        length=len(flowerbed)   
        for i in range(1,length-1):
            if flowerbed[i]==0 and flowerbed[i+1]==0 and flowerbed[i-1]==0:
                count+=1
                flowerbed[i]=1  #满足条件则记录,然后将该点标记为1
        if count<n:
            return False
        return True

topic75-5-t345:反转字符串中的元音字母

题目描述:

给你一个字符串 s ,仅反转字符串中的所有元音字母,并返回结果字符串。

元音字母包括 'a'、'e'、'i'、'o'、'u',且可能以大小写两种形式出现不止一次。

示例:

 思路:双指针,遍历,如果两头都指向元音字母,交换,然后左右指针向中间移动

class Solution:
    def reverseVowels(self, s: str) -> str:
        length=len(s)
        string=list(s)
        left,right=0,length-1   #初始化左右指针
        demo=['a','o','e','i','u','A','O','E','I','U']      #元音列表
        while left<right:
            if string[left] not in demo:
                left+=1
            if string[right] not in demo:
                right-=1
            if string[left] in demo and string[right] in demo:   
                #元音则交换
                temp=string[left]
                string[left]=string[right]
                string[right]=temp
                left+=1
                right-=1
        result=''
        for item in string:
            result+=str(item)
        return result

topic75-6-t151:反转字符串中的单词

题目描述:

给你一个字符串 s ,请你反转字符串中 单词 的顺序。

单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。

返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。

注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

示例:

 思路:1.去掉空格 2.反转 3.转化为字符串输出

class Solution:    #直接用split函数
    def reverseWords(self, string: str) -> str:
        return ' '.join(string.split()[::-1])

class Solution:  #一步步去重

    def reverseWords(self, string: str) -> str:
        length=len(string)
        count=0
        for i in range(length-1,-1,-1):   #去除多余的空格,方便使用split函数
            if string[i]==' ':
                count+=1
                if count>1:
                    string=string[0:i]+string[i+1:]
                    count-=1
            else:
                count=0
        if string[0]==' ':   #如果开头是空格
            string=string[1:]
        new_string=string
        #去除重复的空格,换成单空格
        turn_to_reverse=new_string.split(' ')[::-1]
        result=''
        for item in turn_to_reverse:
            if item !='':
                result=result+str(item)+' '
        return result[0:-1]

topic75-7-t238:除自身以外数组的乘积

题目描述:

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。

题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在  32 位 整数范围内。

请不要使用除法,且在 O(n) 时间复杂度内完成此题。

示例:

 思路:其余元素乘积=左边元素*右边元素

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        length = len(nums)
        answer = [0]*length
        
        # answer[i] 表示索引 i 左侧所有元素的乘积
        # 因为索引为 '0' 的元素左侧没有元素, 所以 answer[0] = 1
        answer[0] = 1
        for i in range(1, length):
            answer[i] = nums[i - 1] * answer[i - 1]
        
        # R 为右侧所有元素的乘积
        # 刚开始右边没有元素,所以 R = 1
        R = 1;
        for i in reversed(range(length)):
            # 对于索引 i,左边的乘积为 answer[i],右边的乘积为 R
            answer[i] = answer[i] * R
            # R 需要包含右边所有的乘积,所以计算下一个结果时需要将当前值乘到 R 上
            R *= nums[i]
        
        return answer

##没做出来

topic75-8-t334:递增的三元子序列

题目描述:

给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。

如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。

示例:

 思路:算法的核心思想是贪心算法,通过维护最小值和中间值来判断是否存在三元递增子序列。具体来说,我们首先将最小值初始化为整数的最大值,然后遍历整个数组,对于每个遍历到的数,如果它小于等于最小值,我们将最小值设为该数;如果它不小于最小值但小于等于中间值,我们将中间值设为该数;如果它大于中间值,说明找到了三元递增子序列,直接返回true。如果整个数组遍历完后都没有找到三元递增子序列,说明不存在这样的子序列,返回false。时间复杂度O(n),空间复杂度O(1)

class Solution:
    def increasingTriplet(self, nums: List[int]) -> bool:
        # 获取数组长度
        length = len(nums)
        # 如果数组长度小于3,则不可能存在三元递增子序列,返回false
        if length < 3:
            return False
        # 定义两个变量,分别表示当前遍历到的最小值和中间值,初始化为最大的整数
        small = mid = sys.maxsize
        # 遍历数组中的每个数
        for num in nums:
            # 如果当前数小于等于最小值,更新最小值
            if num <= small:
                small = num
            # 如果当前数不小于最小值,但小于等于中间值,更新中间值
            elif num <= mid:
                mid = num
            # 如果当前数大于中间值,说明找到了三元递增子序列,直接返回true
            elif num > mid:
                return True
        # 遍历完整个数组也没有找到三元递增子序列,返回false
        return False

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

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

相关文章

Exadata磁盘损坏导致磁盘组无法mount恢复(oracle一体机磁盘组异常恢复)---惜分飞

Oracle Exadata客户,在换盘过程中,cell节点又一块磁盘损坏,导致datac1磁盘组&#xff08;该磁盘组是normal方式冗余)无法mount Thu Jul 20 22:01:21 2023 SQL> alter diskgroup datac1 mount force NOTE: cache registered group DATAC1 number1 incarn0x0728ad12 NOTE: ca…

【Untity】通过子物体坐标和父物体Transfrom,计算子物体的世界坐标

如图 父物体Transfrom信息如下 子物体坐标如下 代码如下 将pos点&#xff0c;基于父物体scale进行缩放。 在用父物体旋转量* pos 再加上父物体的坐标。 即为子物体的世界坐标。 void Start(){Vector3 pos new Vector3(1, 2, 3);Vector3 parentPos new Vector3(10, 20, 30)…

线性模型学习

代码实现 import numpy as np import matplotlib.pyplot as pltx_data [1.0, 2.0, 3.0] y_data [2.0, 4.0, 6.0]def forward(x):return x * wdef loss(x, y):y_pred forward(x)return (y_pred - y) * (y_pred - y)w_list [] mse_list [] for w in np.arange(0.0, 4.1, 0.…

【C语言】文件操作重点内容梳理

本文目录 1. 什么是文件 1.1 程序文件 1.2 数据文件 1.3 文件名 2. 文件的打开和关闭 2.1 文件指针 2.2 文件的打开和关闭 3. 文件的顺序读写 3.1 顺序读写函数介绍 4. 文件的随机读写 4.1 fseek 4.2 ftell 4.3 rewind 5. 文本文件和二进制文件 6. 文件读取结束的判定 6.1 被错…

苹果笔买原装的还是随便买?苹果ipad触控笔推荐

至于使用的是苹果原装的还是国产的&#xff0c;这要视个人情况而定&#xff0c;比如经常用来绘画的&#xff0c;可以使用Apple Pencil&#xff1b;如果你日常的使用时间大部分都是用于做笔记&#xff0c;而不是经常用于更多的画画&#xff0c;那你就可以选择一支价格更低的平替…

《向量数据库指南》——Milvus Cloud 2.3 和 2.4 版本的重要变化

Milvus Cloud2.3 和 2.4 版本的重要变化。 首先是 Milvus Cloud2.3 将支持 Json 数据类型,在此基础上亦会支持 Schemaless。此前,用户在使用 Milvus Cloud的过程中会先定一个静态 Schema,此时,如果在实际业务层面如果多了几个 feature 或者 Metadata,就意味着数据需要重新…

东方晶源董事长俞宗强:建立适合中国集成电路产业的全新生态

7月19日&#xff0c;2023世界半导体大会在南京拉开帷幕&#xff01;本届大会以“芯纽带&#xff0c;新未来”为主题&#xff0c;紧扣行业热点、聚焦行业前沿&#xff0c;通过举办一系列论坛、展览活动&#xff0c;探讨在市场下行周期半导体产业的未来发展方向与机遇&#xff0c…

vite中安装less

使用vite创建的项目&#xff0c;默认是没有安装less的 如果直接在style中书写less 会报下图错误&#xff1a; 解决方案&#xff1a; npm install --save less 在package.json中查看是否安装成功 安装完成刷新页面&#xff0c;问题解决

LlaMA2微调实战

LLaMA2-SFT LLaMA2-SFT, Llama-2-7B微调(transformers)/LORA(peft)/推理 Gtihub地址 https://github.com/yongzhuo/Llama2-SFT prompt text_1 f"".join(["[INST] <<SYS>>\n ""You are a helpful, respectful and honest assista…

基于“RWEQ+”集成技术在土壤风蚀模拟与风蚀模数估算、变化归因分析中的实践应用及SCI论文撰写

查看原文>>>基于“RWEQ”集成技术在土壤风蚀模拟与风蚀模数估算、变化归因分析中的实践应用及SCI论文撰写 土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一&#xff0c;土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。…

【Kafka】消息队列Kafka进阶

目录 Kafka分区机制生产者分区写入策略轮询策略随机策略&#xff08;不用&#xff09;按key分配策略乱序问题自定义分区策略 消费者组Rebalance机制消费者分区分配策略Range范围分配策略RoundRobin轮询策略Stricky粘性分配策略 Kafka副本机制producer的ACKs参数acks配置为0acks…

Windows 10 on ARM, version 22H2 (updated Jul 2023) ARM64 AArch64 中文版、英文版下载

Windows 10 on ARM, version 22H2 (updated Jul 2023) ARM64 AArch64 中文版、英文版下载 基于 ARM 的 Windows 10 请访问原文链接&#xff1a;https://sysin.org/blog/windows-10-arm/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;s…

汽车产业链面临重大变革 大运乘用车加强产业布局 助力低碳出行

当前&#xff0c;国家“双碳”战略的全面实施&#xff0c;全球绿色产业发展理念的不断加深以及汽车产品形态、交通出行模式、能源消费结构变革所呈现的发展机遇等诸多因素&#xff0c;持续推动新能源汽车产业全面转型提速。据悉&#xff0c;2022年&#xff0c;中国新能源汽车销…

C/C++ 动态内存分配与它的指针变量

一、什么是内存的动态分配 全局变量分配在内存中的静态存储区。局部变量&#xff08;包括形参&#xff09;分配在内存中的动态存储区&#xff0c;这个存储区是一个称为栈的区域。除此之外&#xff0c;C语言还允许建立内存动态分配区域&#xff0c;以存放一些临时用的数据&…

HighTec 工程配置详解1

目录 HighTec 工程配置详解编译配置构建配置管理器编译属性编译步骤编译环境变量编译日志编译配置TriCore C CompilerTriCore C LinkerHighTec 工程配置详解 编译配置 构建配置管理器 管理器内,可以创建各种不同用途的配置项。例如用于生产工程的 ROM 配置,用于调试工程的…

【跨代码仓库合并方案】

1、背景&#xff1a; 1、wiser绑定的uiidA的定制修改内容和ELKO绑定的uiidB基本是一样的&#xff0c;需要手动粘贴同步&#xff0c;增加测试保障风险&#xff0c;还会浪费开发资源投入&#xff1b; 2、施耐德wiser和elko面板两套面板基本一致&#xff0c;但是经过new art升级后…

关于浙大MEM项目报考的一些高频但很少有答案的一些问题……

2024年浙大MEM提前批面试申请已经进入材料评审阶段&#xff0c;考生们按照自己的节奏备考等待即可。 针对今年的项目报考&#xff0c;其实有很多细节问题考生们平时很关注的&#xff0c;但获取官方的回应往往会有一定的难度&#xff0c;杭州达立易考教育根据平时的咨询积累了一…

【牛客】CM11链表分割

题目分析&#xff1a; 以链表head->4->2->1->6->0->8->7为例&#xff0c;分割后应该为head->4->2->1->0->6->8->7 定义两个链表&#xff0c;less存储比x小的所有节点&#xff0c;greater存储比x大的所有节点 遍历原链表&#xff0c;…

swiper不生效/切换不生效,点击切换按钮activeIndex值不对应问题@令狐张豪

原因&#xff1a;因为把new Swiper放在mounted实例化的时候可能v-for并未执行完成结构还未完全生成 错误&#xff1a;先执行了swiper实例化后循环的&#xff1b;正确&#xff1a;先循环完数据确保数据完整循环完成后再执行swiper实例化&#xff1b; 解决方案&#xff1a;watch…

临床数据 5. 如何构建微卫星不稳定性结直肠癌预后评分系统?

临床数据分析方案 桓峰基因公众号推出临床数据分析方案教程&#xff0c;整理如下&#xff1a; 临床数据 1. 临床基因突变数据如何发高分&#xff1f; 临床数据 2. 基于NGS的胃癌诊疗全过程的临床应用方案 临床数据 3. 肿瘤微小残留病灶(MRD)如何发文章&#xff1f; 临床数据 4.…