: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
结尾