求两数之和

两数之和

思路:这里通过字典来模拟哈希查询的过程。

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        hashmap={}
        for ind,num in enumerate(nums):
            hashmap[num] = ind
        for i,num in enumerate(nums):
            j = hashmap.get(target - num)
            if j is not None and i!=j:
                return [i,j]

两数相加

思路:遍历链表的同时取值相加,唯一的难点就是在循环中使用同一个变量增加链表结点。这里取了个巧,给 head.next赋值,避免当前结点被覆盖。同时返回结果也是L3.next,链表可以看成一个嵌套的字典。

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        l3 = ListNode(0)
        head = l3
        step = 0
        while l1 or l2 :
            x = l1.val if l1 else 0
            y = l2.val if l2 else 0
            
            result = x + y + step
            step = result // 10
            
            head.next = ListNode(result % 10)
            head = head.next
            l1 = l1.next if l1 else None
            l2 = l2.next if l2 else None
        
        if step == 1:
            head.next = ListNode(1)
        
        return l3.next

你可能感兴趣的:(python,LeetCode,链表,leetcode,数据结构)