Python解答力扣网站题库简单版----第三讲 (2)

:rtype: void Do not return anything, modify node in-place instead.

"""

node.val, node.next = node.next.val, node.next.next

运行结果

在这里插入图片描述

1. 两数之和

题库链接: 1. 两数之和.

题干

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

解法1 思路:

暴力破解,遍历每一个元素,并查找是否存在两个数和为target

代码解析

class Solution(object):

def twoSum(self, nums, target):

"""

:type nums: List[int]

:type target: int

:rtype: List[int]

"""

for i in range(len(nums)):

for k in range(i + 1, len(nums)):

if nums[i] + nums[k] == target:

return [i, k]

break

运行结果

在这里插入图片描述

当然解法一是非常暴力的会消耗很长时间和内存空间,接下来介绍一个更好的解法。

解法2

使用一个字典记录list里面的值和索引,遍历list,如果target-num在字典里面返回两个索引值,否则返回None

代码解析

class Solution:

def twoSum(self, nums: List[int], target: int) -> List[int]:

hashmap = {}

for index, num in enumerate(nums):

another_num = target - num

if another_num in hashmap:

return [hashmap[another_num], index]

hashmap[num] = index

return None

结尾

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgwxyf.html