2024.3.22力扣(1200-1400)刷题记录

本文解析了LeetCode中的两道编程题:利用哈希表实现单词字符计数,以及使用模拟和数学方法计算数组中左右元素和的差值,包括考虑绝对值的情况。
摘要由CSDN通过智能技术生成

一、1160. 拼写单词

哈希表计数。这道题不会,来自官方题解(. - 力扣(LeetCode))。

class Solution:
    def countCharacters(self, words: List[str], chars: str) -> int:
        # 哈希表
        chars_cnt = collections.Counter(chars)
        ans = 0
        for word in words:
            word_cnt = collections.Counter(word)
            for c in word_cnt:
                if chars_cnt.get(c,0) < word_cnt[c]:
                    # 使用get()避免键不存在
                    break
            else:
                ans += len(word)
        return ans

二、2574. 左右元素和的差值

模拟+数学

先不看绝对值,ans[i]等于ans[i-1]-nums[i-1]-nums[i]。但是由于带有绝对值,所以使用presum储存起来。而当i==0时,ans[i-1]是presum,而nums[i-1]使用pre(pre初值为0)保存,就方便了当i==0时下标超范围的情况。而presum初值为sum(nums)的原因是,减去pre和nums[0]就为ans[0]。然后在存入数组时,绝对值即可。

class Solution:
    def leftRightDifference(self, nums: List[int]) -> List[int]:
        # 模拟+数学
        pre = 0
        presum = sum(nums)
        n = len(nums)
        ans = [0]*n
        for i in range(len(nums)):
            presum -= pre + nums[i]
            ans[i] = abs(presum)
            pre = nums[i]
        return ans

无pre:

class Solution:
    def leftRightDifference(self, nums: List[int]) -> List[int]:
        # 数学
        # pre = 0
        # presum = sum(nums)
        presum = sum(nums)-nums[0]
        n = len(nums)
        ans = [0]*n
        ans[0] = abs(presum)
        # for i in range(len(nums)):
        for i in range(1,len(nums)):
            # presum -= pre + nums[i]
            presum -= nums[i-1] + nums[i]
            ans[i] = abs(presum)
            # pre = nums[i]
        return ans

感谢你看到这里!一起加油吧!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值