CodeTop-0202Day01
Two Problem
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

浙公网安备 33010602011771号