LeetCode 每日一题 2024/12/16-2024/12/22

news2024/12/23 17:20:39

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


目录

      • 12/16 1847. 最近的房间
      • 12/17 3291. 形成目标字符串需要的最少字符串数 I
      • 12/18 3292. 形成目标字符串需要的最少字符串数 II
      • 12/19 3285. 找到稳定山的下标
      • 12/20 3138. 同位字符串连接的最小长度
      • 12/21 2545. 根据第 K 场考试的分数排序
      • 12/22 1387. 将整数按权重排序


12/16 1847. 最近的房间

经房间按大小排序
先考虑minSize大的查询
将比minSize大的房间号放入ids序列中考虑
根据当前查询preferred_id 在ids中查找离他最近的两个id 比较差值大小

def closestRoom(rooms, queries):
    """
    :type rooms: List[List[int]]
    :type queries: List[List[int]]
    :rtype: List[int]
    """
    from sortedcontainers import SortedList
    n=len(rooms)
    rooms.sort(key=lambda x:x[1])
    m=len(queries)
    ans=[-1]*m
    ids=SortedList()
    j=n-1
    for i in sorted(range(m),key=lambda i:-queries[i][1]):
        pid,msize=queries[i]
        while j>=0 and rooms[j][1]>=msize:
            ids.add(rooms[j][0])
            j-=1
        diff=float("inf")
        k = ids.bisect_left(pid)
        if k:
            diff = pid-ids[k-1]
            ans[i]=ids[k-1]
        if k<len(ids) and ids[k]-pid<diff:
            ans[i]=ids[k]
    return ans
            



12/17 3291. 形成目标字符串需要的最少字符串数 I

对于每个word 与target求出在结束在target[i]的前缀能够匹配的最长前缀back[i]
动态规划 dp[i]表示前i个字母需要最少字符串数

def minValidStrings(words, target):
    """
    :type words: List[str]
    :type target: str
    :rtype: int
    """
    def prefix(word,target):
        s=word+"#"+target
        n=len(s)
        pi=[0]*n
        for i in range(1,n):
            j=pi[i-1]
            while j>0 and s[i]!=s[j]:
                j=pi[j-1]
            if s[i]==s[j]:
                j+=1
            pi[i]=j
        return pi
    n=len(target)
    back = [0]*n
    for w in words:
        pi = prefix(w, target)
        m=len(w)
        for i in range(n):
            back[i]=max(back[i],pi[m+1+i])
    dp=[0]+[10**9]*n
    for i in range(n):
        dp[i+1]=dp[i+1-back[i]]+1
        if dp[i+1]>n:
            return -1
    return dp[n]



12/18 3292. 形成目标字符串需要的最少字符串数 II

对于每个word 与target求出在结束在target[i]的前缀能够匹配的最长前缀back[i]
动态规划 dp[i]表示前i个字母需要最少字符串数

def minValidStrings(words, target):
    """
    :type words: List[str]
    :type target: str
    :rtype: int
    """
    def prefix(word,target):
        s=word+"#"+target
        n=len(s)
        pi=[0]*n
        for i in range(1,n):
            j=pi[i-1]
            while j>0 and s[i]!=s[j]:
                j=pi[j-1]
            if s[i]==s[j]:
                j+=1
            pi[i]=j
        return pi
    n=len(target)
    back = [0]*n
    for w in words:
        pi = prefix(w, target)
        m=len(w)
        for i in range(n):
            back[i]=max(back[i],pi[m+1+i])
    dp=[0]+[10**9]*n
    for i in range(n):
        dp[i+1]=dp[i+1-back[i]]+1
        if dp[i+1]>n:
            return -1
    return dp[n]



12/19 3285. 找到稳定山的下标

从头依次遍历 找到所有大于threshold的山峰 右侧的就是稳定的

def stableMountains(height, threshold):
    """
    :type height: List[int]
    :type threshold: int
    :rtype: List[int]
    """
    ans=[]
    for i in range(len(height)-1):
        if height[i]>threshold:
            ans.append(i+1)
    return ans



12/20 3138. 同位字符串连接的最小长度

如果是k个字符串拼接而成 那么所有字符出现次数必定是k的倍数
从小到大枚举len(s)=n的因数 检查每一个子字符串字符出现次数是否相同





12/21 2545. 根据第 K 场考试的分数排序

提取第K列的数值排序

def sortTheStudents(score, k):
    """
    :type score: List[List[int]]
    :type k: int
    :rtype: List[List[int]]
    """
    ans=[]
    l=[(score[i][k],i) for i in range(len(score))]
    l.sort(reverse=True)
    for _,i in l:
        ans.append(score[i])
    return ans



12/22 1387. 将整数按权重排序

记忆化搜索mem[x]记录x的权重

def getKth(lo, hi, k):
    """
    :type lo: int
    :type hi: int
    :type k: int
    :rtype: int
    """
    mem={}
    mem[1]=0
    def find(x):
        if x in mem:
            return mem[x]
        mem[x] = (find(x//2) if x%2==0 else find(3*x+1))+1
        return mem[x]
    
    l=list(range(lo,hi+1))
    l.sort(key=lambda x:(find(x),x))
    return l[k-1]



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2264340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jvm栈帧结构

JVM(Java虚拟机)中的虚拟机栈是线程私有的,用于支持Java虚拟机进行方法调用和方法执行。而栈帧(Stack Frame)则是虚拟机栈的基本元素,每一个方法从调用开始至执行结束的整个过程,都对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。栈帧的内部结构主要包括以下几个部分:…

2009 ~ 2019 年 408【计算机网络】大题解析

2009 年 路由算法&#xff08;9’&#xff09; 讲解视频推荐&#xff1a;【BOK408真题讲解-2009年&#xff08;催更就退网版&#xff09;】 某网络拓扑如下图所示&#xff0c;路由器 R1 通过接口 E1 、E2 分别连接局域网 1 、局域网 2 &#xff0c;通过接口 L0 连接路由器 R2 &…

Flamingo论文介绍:把视觉特征向语言模型看齐

今天介绍一篇经典的多模态论文&#xff0c;来自NeurIPS 2022的《Flamingo: a Visual Language Model for Few-Shot Learning》 &#xff0c;论文地址&#xff1a;https://arxiv.org/pdf/2103.00020 文章目录 一、Motivate二、Method三、模块细节&#xff1a;Perceiver Resampl…

【VSCode】常用插件汇总

1 Path Autocomplete&#xff08;路径提示的插件&#xff09; 步骤一&#xff1a;在vscode的扩展搜索中直接搜索Path Autocomplete&#xff0c;直接安装 步骤二&#xff1a;配置 配置 VS Code settings.json "path-autocomplete.pathMappings": {"": &q…

STM32F103 | Embedded IDE03 - 使用OpenOCD在STM32F103项目时出现下载固件失败

导言 在上一篇备忘录介绍使用OpenOCD的stlink-v2.cfg接口下载固件&#xff0c;在STM32F407的项目上很顺利。但是&#xff0c;在stm32f103上会出现下载失败。 在网上搜了一下&#xff0c;这位博主的文章解决了这个问题: https://www.iotword.com/26738.html 一、修改stm32f1x.c…

易语言 OCR 文字识别

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…

Linux 网络维护相关命令简介

目录 零. 概要一. ping二. ip命令2.1 ip address2.2 ip route2.3 ip neighbour 三. traceroute四. DNS查询4.1 nslookup4.2 dig 五. ss 查看网络连接状态 零. 概要 ⏹在Linux系统中有2套用于网络管理的工具集 net-tools 早期网络管理的主要工具集&#xff0c;缺乏对 IPv6、网…

vscode中同时运行两个python文件(不用安装插件)

如何在vscode中同时运行两个python文件呢&#xff1f;今天在工作中遇到了这个问题。 查了网上的方法是安装coder runner插件&#xff0c;后来发现自身就有这个功能。所以记录一下,方便后续查找: 这是我的第一个文件&#xff0c;点击右上角的运行旁边的小箭头&#xff0c;有一…

matlab绘图时设置左、右坐标轴为不同颜色

目录 一、需求描述 二、实现方法 一、需求描述 当图中存在两条曲线&#xff0c;需要对两条曲线进行分别描述时&#xff0c;应设置左、右坐标轴为不同颜色&#xff0c;并设置刻度线&#xff0c;且坐标轴颜色需要和曲线颜色相同。 二、实现方法 2.1、实现目标&#xff1a; 1…

解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题

配置一下apache里面的配置文件&#xff1a;httpd.conf 和 httpd.vhosts.conf httpd.conf httpd-vhosts.conf 重启服务 展示&#xff1a; 浏览器中中文乱码问题&#xff1a;

RunCam WiFiLink连接手机图传测试

RunCam WiFiLink中文手册从这里下载 一、摄像头端 1.连接天线&#xff08;易忘&#xff09; 2.打开摄像头前面的盖子&#xff08;易忘&#xff09; 3.接上直流电源&#xff0c;红线为正&#xff0c;黑线为负 4.直流电源设置电压为14v&#xff0c;电流为3.15A&#xff0c; 通…

用JAVA做了一个登录窗体练习

目 录 说明运行后的效果代码 说明 做了一个登录窗体作为练习&#xff0c;分享给大家&#xff0c;其中涉及到窗体、图板、随机数等内容&#xff0c;为了方便和我一样的小白可以看的比较明白&#xff0c;所以尽量详细的标注了注释&#xff0c;希望能帮到同样在学习路上的朋友 运…

《开启微服务之旅:Spring Boot 从入门到实践》(一)

Spring Boot Spring Boot 入门 Spring Boot 简介&#xff08;脚手架&#xff09; 简化Spring应用开发的一个框架&#xff1b; 整个Spring技术栈的一个大整合&#xff1b; J2EE开发的一站式解决方案&#xff1b; 优点&#xff1a;快速创建独立运行的spring项目以及与主流…

springboot466大学生就业服务平台(论文+源码)_kaic

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统大学生就业服务平台信息管理难度大&#xff0c;容错率低&…

ROS1入门教程2:主题发布和订阅

一、创建发布者 创建源文件publisher.cpp&#xff0c;并写入以下内容&#xff1a; #include <iostream>#include "ros/ros.h" #include "std_msgs/String.h"int main(int argc, char* argv[]) {std::string nodeName "publisher"; // 节…

WALN无线网络的创建和管理-二层组网

⼆层组⽹配置过程&#xff1a; 在AC上配置DHCP 1&#xff0c;先将AP划分到管理vlan&#xff0c;并在相关链路上运⾏vlan数据通过 2&#xff0c;在AC上创建管理vlan的vlanif接⼝&#xff0c;配置IP参数 3&#xff0c;在AC上配置DHCP服务器 4&#xff0c;指定WLAN管理vlan&am…

EasyGBS国标GB28181平台P2P远程访问故障排查指南:客户端角度的排查思路

在现代视频监控系统中&#xff0c;P2P&#xff08;点对点&#xff09;技术因其便捷性和高效性而被广泛应用。然而&#xff0c;当用户在使用P2P远程访问时遇到设备不在线或无法访问的问题时&#xff0c;有效的排查方法显得尤为重要。本文将从客户端的角度出发&#xff0c;详细探…

基于Controller模式部署RocketMQ集群

RocketMQ简介 RocketMQ是一种分布式消息中间件&#xff0c;它由阿里巴巴集团开发&#xff0c;并且后来捐献给了Apache软件基金会。RocketMQ最初是为了解决阿里巴巴内部因业务增长带来的高吞吐量需求而设计的。随着其不断发展和完善&#xff0c;RocketMQ已经成为了一个能够处理…

性能】JDK和Jmeter的安装与配置

一、JDK环境配置 1. 下载JDK 官网下载地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 选择对应系统的安装包&#xff0c;下载后安装&#xff0c;安装中记录JDK安装的地址&#xff0c;之后一直点击下一…

分布式协同 - 分布式事务_2PC 3PC解决方案

文章目录 导图Pre2PC&#xff08;Two-Phase Commit&#xff09;协议准备阶段提交阶段情况 1&#xff1a;只要有一个事务参与者反馈未就绪&#xff08;no ready&#xff09;&#xff0c;事务协调者就会回滚事务情况 2&#xff1a;当所有事务参与者均反馈就绪&#xff08;ready&a…