Datawhale刷题LeetCode

本文介绍了数据结构与算法的基础,包括LeetCode的两数之和问题、数组串联以及宝石与石头的问题。通过具体代码实现展示了如何解决这些问题,并对数组进行加一、找寻中心下标以及旋转等操作。同时,文中提到可以简化算法以提高效率,如使用集合优化宝石与石头问题的解法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Task1:数据结构与算法简介、LeetCode ⼊⻔及攻略

0001.两数之和

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        records = {}

        for idx,val in enumerate(nums):
            if target-val not in records:
                records[val] = idx
            else:
                return [records[target-val],idx]

1929.数组串联

+ 学到 extend()无返回值,是在原始数组进行的修改

class Solution:
    def getConcatenation(self, nums: List[int]) -> List[int]:
        nums.extend(nums)
        return nums

0771.宝石与石头

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        nums = 0
        for i in set(jewels):
            count = stones.count(i)
            nums+=count
        return nums

官方题解

+ 我觉得我的方法应该进行简化!

class Solution:
    def numJewelsInStones(self, jewels: str, stones: str) -> int:
        jewelsSet = set(jewels)
        return sum(s in jewelsSet for s in stones)

Task 02:数组基础

0066.加一

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        return list(map(int,str(int("".join(map(str,digits)))+1)))

0724.寻找数组的中心下标

2 x [ 左求和 ]  + 中间值 = 数组所有

class Solution:
    def pivotIndex(self, nums: List[int]) -> int:
        numSum = sum(nums)
        leftSum = 0
        for i in range(len(nums)):
            if numSum-leftSum-nums[i] == leftSum:
                return i
            leftSum+=nums[i]             
        return -1
            

0189.旋转数组

class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
        """
        Do not return anything, modify nums in-place instead.
        """
        length = len(nums)
        if k > length:
            k = k % length
        nums_1,nums_2 = nums[length-k:length],nums[:length-k]
        nums[:k],nums[k:] = nums_1,nums_2

0048.旋转图像

0054.螺旋矩阵

0498.对角线遍历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值