leetcode两数之和python
时间: 2023-04-20 13:02:23 浏览: 106
题目描述:
给定一个整数数组 nums 和一个目标值 target,请在数组中找出和为目标值的两个整数。
示例:
输入:nums = [2, 7, 11, 15], target = 9
输出:[, 1]
解释:因为 nums[] + nums[1] = 2 + 7 = 9,所以返回 [, 1]。
解题思路:
使用哈希表,遍历数组,将数组中的元素作为 key,下标作为 value 存入哈希表中。在遍历的过程中,判断 target - nums[i] 是否在哈希表中,如果在,则返回对应的下标。
Python 代码实现:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap = {}
for i, num in enumerate(nums):
if target - num in hashmap:
return [hashmap[target - num], i]
hashmap[num] = i
return []
相关问题
leetcode两数相加python
题目描述:
给定两个非空链表,表示两个非负整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
例如:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> -> 8
原因:342 + 465 = 807
解题思路:
1. 遍历两个链表,将对应的节点相加,如果有进位则加到下一位相加中。
2. 如果两个链表长度不一样,则将短链表的后面补,以便于相加。
3. 最后如果还有进位,则需要再新建一个节点。
Python代码实现:
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
dummy = ListNode()
cur = dummy
carry =
while l1 or l2:
x = l1.val if l1 else
y = l2.val if l2 else
s = x + y + carry
carry = s // 10
cur.next = ListNode(s % 10)
cur = cur.next
if l1: l1 = l1.next
if l2: l2 = l2.next
if carry > :
cur.next = ListNode(carry)
return dummy.next
时间复杂度:O(max(m,n)),其中m和n分别为两个链表的长度。
空间复杂度:O(max(m,n)),需要新建一个链表来存储结果。
leetcode上python和python3
在LeetCode上,Python是一种流行的编程语言,而Python3是Python的一个最新版本。两者在语法和一些功能上有一些不同之处。
首先,最明显的区别是语法。Python3相对于Python来说做了一些改进和优化。例如,在Python3中,`print`语句需要使用括号包裹被打印的内容,而在Python中没有这个要求。此外,Python3引入了一些新的关键字例如`nonlocal`和`yield from`,以及一些新的内置函数例如`round()`和`super()`
其次,对于字符串的处理方式也有所不同。在Python3中,字符串被视为Unicode字符序列,也就是说可以直接处理包含各种语言的字符,而在Python中,字符串是由字节组成的,处理时需要使用特殊方式来处理Unicode字符。
此外,Python3还解决了Python2中一些不一致和陈旧的问题。Python3进行了一些有益的改进,例如修改了除法运算符`/`的行为,使其进行浮点数除法而不是整数除法。
然而,由于某些库和依赖关系的问题,一些开发人员仍然偏爱Python2,因此在LeetCode上,有些问题需要用Python2进行解答。
总而言之,Python3是Python编程语言的升级版本,带来了一些新的特性和改进,而Python2则仍然被某些人用于特定的项目或情况中。LeetCode上既支持Python也支持Python3,开发者可以根据自己的需要选择适合自己的版本进行编程。