当前位置: 首页 > article >正文

LeetCode 每日一题 2025/1/6-2025/1/12

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • 1/6 2274. 不含特殊楼层的最大连续楼层数
      • 1/7 3019. 按键变更的次数
      • 1/8 2264. 字符串中最大的 3 位相同数字
      • 1/9 3297. 统计重新排列后包含另一个字符串的子字符串数目 I
      • 1/10 3298. 统计重新排列后包含另一个字符串的子字符串数目 II
      • 1/11 3270. 求出数字答案
      • 1/12 2275. 按位与结果大于零的最长组合


1/6 2274. 不含特殊楼层的最大连续楼层数

将bottom top加入数组中 遍历算出相邻最大值

def maxConsecutive(bottom, top, special):
    """
    :type bottom: int
    :type top: int
    :type special: List[int]
    :rtype: int
    """
    special.sort()
    l = [bottom-1]+special+[top+1]
    return max([l[i+1]-l[i]-1 for i in range(len(l)-1)] )

        



1/7 3019. 按键变更的次数

变成小写字母
从头遍历 寻找相邻不同的个数

def countKeyChanges(s):
    """
    :type s: str
    :rtype: int
    """
    s=s.lower()
    ans = 0
    for i in range(1,len(s)):
        if s[i]!=s[i-1]:
            ans+=1
    return ans



1/8 2264. 字符串中最大的 3 位相同数字

遍历 判断是否存在连续3个相同数字

def largestGoodInteger(num):
    """
    :type num: str
    :rtype: str
    """
    v=""
    for i in range(len(num)-2):
        if num[i]==num[i+1]==num[i+2]:
            if num[i]>v:
                v=num[i]
    return "" if v=="" else v*3



1/9 3297. 统计重新排列后包含另一个字符串的子字符串数目 I

满足条件的x 即x内需要包含word2所有字符
对于每个子字符串左侧端点l 找到它满足条件最短时的右端点r
更右侧的所有必定都满足 可以有n-r+1个子字符串
滑动窗口记录l,r
diff记录满足word2每个字符还差几个
cnt记录不满足个数的字符个数

def validSubstringCount(word1, word2):
    """
    :type word1: str
    :type word2: str
    :rtype: int
    """
    n=len(word1)
    diff=[0]*26
    for c in word2:
        diff[ord(c)-ord('a')]-=1
    ans = 0
    global cnt
    cnt = sum(1 for c in diff if c<0)
    
    def update(c,add):
        global cnt
        diff[c]+=add
        if add==1 and diff[c]==0:
            cnt-=1
        elif add==-1 and diff[c]==-1:
            cnt+=1
    l,r=0,0
    while l<len(word1):
        while r<len(word1) and cnt>0:
            update(ord(word1[r])-ord('a'),1)
            r+=1 
        if cnt==0:
            ans+=n-r+1
        update(ord(word1[l])-ord('a'), -1)
        l+=1 
    return ans



1/10 3298. 统计重新排列后包含另一个字符串的子字符串数目 II

满足条件的x 即x内需要包含word2所有字符
对于每个子字符串左侧端点l 找到它满足条件最短时的右端点r
更右侧的所有必定都满足 可以有n-r+1个子字符串
滑动窗口记录l,r
diff记录满足word2每个字符还差几个
cnt记录不满足个数的字符个数

def validSubstringCount(word1, word2):
    """
    :type word1: str
    :type word2: str
    :rtype: int
    """
    n=len(word1)
    diff=[0]*26
    for c in word2:
        diff[ord(c)-ord('a')]-=1
    ans = 0
    global cnt
    cnt = sum(1 for c in diff if c<0)
    
    def update(c,add):
        global cnt
        diff[c]+=add
        if add==1 and diff[c]==0:
            cnt-=1
        elif add==-1 and diff[c]==-1:
            cnt+=1
    l,r=0,0
    while l<len(word1):
        while r<len(word1) and cnt>0:
            update(ord(word1[r])-ord('a'),1)
            r+=1 
        if cnt==0:
            ans+=n-r+1
        update(ord(word1[l])-ord('a'), -1)
        l+=1 
    return ans



1/11 3270. 求出数字答案

依次求最小值

def generateKey(num1, num2, num3):
    """
    :type num1: int
    :type num2: int
    :type num3: int
    :rtype: int
    """
    ans = 0
    for i in range(4):
        ans+=min(num1%10,num2%10,num3%10)*(10**i)
        num1//=10
        num2//=10
        num3//=10
    return ans



1/12 2275. 按位与结果大于零的最长组合

计算每一位为1的数个数 这些数相与必定大于0
求个数最大值即可

def largestCombination(candidates):
    """
    :type candidates: List[int]
    :rtype: int
    """
    def find(i):
        ans = 0
        for num in candidates:
            if num&(1<<i):
                ans+=1
        return ans
    ans = 0
    for i in range(24):
        ans = max(ans,find(i))
    return ans
        




http://www.kler.cn/a/505803.html

相关文章:

  • 通过maven命令上传jar包至nexus v3.7.1
  • Maven 配置本地仓库
  • Vue3 Element-Plus el-tree 右键菜单组件
  • 活动预告 | CCF开源发展委员会开源供应链安全技术研讨会(2025第一期)——“大模型时代的开源供应链安全风控技术”...
  • Unity 3D游戏开发从入门进阶到高级
  • IDEA的Git界面(ALT+9)log选项不显示问题小记
  • [Qt] 窗口 | QDialog | 常用内置对话框
  • 数据仓库的复用性:设计和构建一个高复用性的数仓
  • 软考信安20~数据库系统安全
  • 数据通过canal 同步es,存在延迟问题,解决方案
  • Web前端------HTML多媒体标签之音频和视频标签
  • 【MATLAB】subplot如何增加title
  • 如何开发一个分布式日志系统
  • 线上nginx编译参数
  • 回归预测 | MATLAB实SVM支持向量机多输入单输出回归预测
  • 设计模式02:结构型设计模式之适配器模式使用情景及其基础Demo
  • 反转字符串力扣--344
  • Abp vnext + OpenIddict的授权械与适应场景
  • Apache MINA 使用简单Demo案例
  • js使用qrcode与canvas生成带logo的二维码
  • lua下标是可以从0开始
  • Oracle+11g+笔记(9)-控制文件及日志文件的管理
  • 使用 Python 编写一个简单的聊天机器人
  • 手撕Transformer -- Day7 -- Decoder
  • 【大模型系列篇】数字人音唇同步模型——腾讯开源MuseTalk
  • nolo sonic 2使用串流方式运行steamVR时报错301(VRApplicationError_IPCFailed)