CodeTop-0202Day01

Two Problem

  1. 两数之和: https://leetcode.cn/problems/two-sum/
  2. 两数相加: https://leetcode.cn/problems/add-two-numbers/

Q1: 两数之和

AI用久了, 语法是真忘了, 真不会写. 抄题解了xdm.

Answer One: 暴力

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        n = len(nums)
        for i in range(n):
            for j in range(i+1,n):
                if nums[i]+nums[j] == target:
                    return [i,j]
        return []

Answer Two: Hash

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashtable = dict()
        for i, num in enumerate(nums):
            # 找到差值即输出
            if target-num in hashtable:
                return [hashtable[target-num], i]
            # 存储 <key,idx> 
            hashtable[nums[i]] = i
        return []

Q2: 两数相加

Answer One: 暴力

逐位相加, 注意处理剩余位数即可.

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]:
        # 计算个位
        if l1.val+l2.val>=10: i = 1
        else: i = 0
        node1 = ListNode((l1.val+l2.val)%10)
        node = node1

        while l1.next and l2.next:
            carry = l1.next.val+l2.next.val+i
            # - node.next = carry%10
            # 不用ListNode(carry%10) 会导致next被强制转换为int
            node.next = ListNode(carry%10)
            if carry>=10: i = 1
            else: i = 0
            l1 = l1.next
            l2 = l2.next
            node = node.next

        while l1.next != None:
            carry = l1.next.val+i
            node.next = ListNode(carry%10)
            if carry >= 10: i = 1
            else: i = 0 
            l1 = l1.next
            node = node.next
            
        while l2.next != None:
            carry = l2.next.val+i
            node.next = ListNode(carry%10)
            if carry >= 10: i = 1
            else: i = 0 
            l2 = l2.next
            node = node.next
        
        if i == 1: 
            node.next = ListNode(1)
        
        return node1


Happy Ending

习惯用AI后, 尤其是cursor用多了, 连基础的语法都不会啦. 而且脑子也不怎么动, Q2很经典的题, 写完就忘记处理最后一个进位, 以及next要用ListNode也疏忽啦.
每天两道题, 之后继续努力吧~~~
---XTian by 20260202

posted @ 2026-02-02 10:04  筱天丶  阅读(0)  评论(0)    收藏  举报