leepcode作业解析 - 5-19
程序员文章站
2022-05-18 23:00:16
两数之和II -输入有序数组、求众数、有效的字母异位词、各位相加 ......
18、两数之和ii -输入有序数组
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。
函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。
说明:
- 返回的下标值(index1 和 index2)不是从零开始的。
- 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。
示例:
输入: numbers = [2, 7, 11, 15], target = 9 输出: [1,2] 解释: 2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。
解答:(这个代码时间超时了)
class solution: def twosum(self, numbers: list[int], target: int) -> list[int]: index1 = 1 for i in range(len(numbers)): for j in range(len(numbers)): if i < j: if numbers[i] + numbers[j] ==target: if i ==0 : index1,index2 = index1,j+1 else: index1,index2 = i+1,j+1 return (index1,index2)
19、求众数
给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋
的元素。
你可以假设数组是非空的,并且给定的数组总是存在众数。
示例 1:
输入: [3,2,3] 输出: 3
示例 2:
输入: [2,2,1,1,1,2,2] 输出: 2
解答:排序后去中间值(因为众数的元素必须是2n倍数,所以数组的元素每次都是奇数个,而众数又是数组中数量最多的元素,那么中间值肯定就是众数了。)
class solution: def majorityelement(self, nums: list[int]) -> int: length= len(nums) ##求出数组的索引值长度 index = length // 2 ## 用取整来定位中间值的索引值 nums.sort() ##进行数组排序 return(nums[index])
20、有效的字母异位词
解答:用sorted()能自动按升序排序,并且将字符串按一个个字符串大小自动切分,再组成一个新列表
class solution: def isanagram(self, s: str, t: str) -> bool: return (sorted(s)==sorted(t))
解二(用两个for循环后,时间超时)
class solution: def isanagram(self, s: str, t: str) -> bool: s_list = [] t_list = [] for i in s: s_list.append(i) s_list.sort() for j in t: t_list.append(j) t_list.sort() return (s_list==t_list)
21、各位相加
给定一个非负整数 num
,反复将各个位上的数字相加,直到结果为一位数。
示例:
输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
解答:
class solution: def adddigits(self, num: int) -> int: while len(str(num)) > 1: num = sum([int(i) for i in str(num) ]) return(num)
上一篇: aps.net core mvc中使用session
下一篇: yml配置文件嵌套