Python算法练习6.25

news/2024/12/28 20:14:21/

leetcode 151 反转字符串中的单词

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

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

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

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

输入:s = "a good   example"
输出:"example good a"
解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。

class Solution(object):def reverseWords(self, s):arr = []word = ''for i in range(len(s)):if s[i] != ' ':word += s[i]else:if s[i - 1] != ' ' and word != '':arr.append(word)word = ''if word != '':newWord = word.replace(" ", "")arr.append(newWord)arr.reverse()print(arr)rstr = ' '.join(arr)return rstr

leetcode 238 除自身以外数组的乘积

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

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

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

输入: nums = [1,2,3,4]
输出: [24,12,8,6]
class Solution(object):def productExceptSelf(self, nums):# 双指针ans = len(nums)*[1]left, right = 1, 1for i in range(len(nums)):ans[i] *= leftans[len(nums)-1-i] *= rightleft *= nums[i]right *= nums[len(nums)-1-i]return ans

不让用除法真是没有一点思路,参考了评论区大神,还是6啊

leetcode 334 递增的三元子序列

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

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

注意:三元组序列的下标可以不连续

输入:nums = [2,1,5,0,4,6]
输出:true
解释:三元组 (3, 4, 5) 满足题意,因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6

 自己写的错误代码(71/79)

class Solution(object):def increasingTriplet(self, nums):matrix = [[nums[0]]]row = []for i in range(1, len(nums)):flag = 0for j in matrix:if j[-1] < nums[i]:j.append(nums[i])flag = 1if flag == 0:row.append(nums[i])matrix.append(row)row = []for j in matrix:if len(j) >= 3:return Truereturn False

维护两个变量first=nums[0], second趋于正无穷

贪心:在first<second的前提下,两个数都尽可能的小,这样找到递增三元子序列的可能性更大

官方题解:

class Solution(object):def increasingTriplet(self, nums):first, second = nums[0], float('inf')n = len(nums)if n < 3:return Falsefor i in range(1, n):if nums[i] > second:return Trueif nums[i] > first:second = nums[i] # 让second尽可能小if nums[i] < first:first = nums[i]return False

http://www.ppmy.cn/news/566940.html

相关文章

环境变量法来实现Docker中nginx配置文件参数的动态修改

背景&#xff1a; Docker进入大众的视野已经7个年头了&#xff08;国内火起来&#xff09;&#xff0c;可谓是经历了多次的大热大冷&#xff0c;走到今天我觉得它还是一个中小企业实现运维自动化的不二选择。18年接触Docker时根据公司业务制作了一系列的订制镜像&#xff0c;今…

删除维护计划时报错:索引超出范围必 须为⾮负值并⼩于集合⼤⼩

问题&#xff1a;删除维护计划时报错&#xff1a;索引超出范围必 须为⾮负值并⼩于集合⼤⼩ 在SQL Server 2016上删除已运行维护计划后&#xff0c;维护计划job没有自动删除掉&#xff0c;手工再删除维护计划job&#xff0c;提示删除失败。 错误现象&#xff1a;delete 语句…

DP转HDMI后显示器无信号

板DP接口是老式接口需要主动式DP转HDMI的转换器或者线 主板DP接口是老式接口需要主动式DP转HDMI的转换器或者线才行。 新的DP接口就没有这个问题。 主动式DP转HDMI线就OK了

电脑扩展屏 HDMI转VGA

电脑扩展屏 HDMI转VGA 今天设置了双屏幕&#xff0c;便于工作&#xff0c;提高些效率。 但期间出了2个问题&#xff0c;做为记录。一个解决&#xff0c;一个迂回解决。 1. 一个屏幕大&#xff0c;一个屏幕小。 [解决]需要在设置屏幕&#xff08;我的是F8&#xff09;得地方…

HDMI、DVI和VGA接口互相转换问题

1、使用HDMI转DVI线不会影响播放的质量严格意义上讲&#xff0c;播放的质量不会有任何损失&#xff0c;因为它们根本就不需要转换&#xff01;在技术规格上&#xff0c;HDMI到DVI是向下兼容的&#xff0c;所有的DVI的规范&#xff0c;HDMI都可以“照章办事”&#xff0c;因此DV…

VGA主机连接HDMI显示器

本文记录了如何从VGA接口的主机连接HDMI接口的显示器。更新于2018.12.18。 博主使用的主机接口是VGA&#xff0c;长这样&#xff1a; 显示器是HDMI接口&#xff0c;长这样&#xff1a; 买回来的显示器自带了一根HDMI的线。 --------------------------------------------…