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

leetcode每天5题-Day37

目录

  • 1.合并区间
  • 2.插入区间
  • 3.最小路径和
  • 4.超级丑数
  • 5.数组中重复的数据

1.合并区间

56. 合并区间-中等
按区间左端点排序

var merge = function(intervals) {
    // 按区间的左端点排序
    intervals.sort((a,b)=>a[0]-b[0]);

    const ans=[];
    for(let i=0;i<intervals.length;i++){
        let l=intervals[i][0],r=intervals[i][1];
        //  区间段中的区间左端点大于ans中右端点
        if(ans.length==0||l>ans[ans.length-1][1]){
            ans.push([l,r]);
        }else{
            // 更新ans中右端点的值
            ans[ans.length-1][1]=Math.max(ans[ans.length-1][1],r);
        }
    }
    return ans;
};

时间复杂度:O(nlogn),其中n为区间的数量。除去排序的开销,我们只需要一次线性扫描,所以主要的时间开销是排序的O(nlogn)

空间复杂度:O(logn),其中n为区间的数量。这里计算的是存储答案之外,使用的额外空间。O(logn)即为排序所需要的空间复杂度。

2.插入区间

57. 插入区间-中等

3.最小路径和

64. 最小路径和-中等

4.超级丑数

313. 超级丑数-中等

5.数组中重复的数据

442. 数组中重复的数据-中等
做出来这道题并不难,但题目要求:设计并实现一个时间复杂度为 O(n) 且仅使用常量额外空间的算法解决此问题。
①哈希

var findDuplicates = function(nums) {
    const map = new Map();
    for(const num of nums){
        map.set(num,(map.get(num) || 0) + 1);
    }
    const set=new Set();
    for(const [k,v] of map.entries()){
        if(v===2) set.add(k);
    }
    let ans=Array.from(set);
    return ans;
};

空间复杂度是O(n),不符合题目要求的常数空间。所以我们应该原地修改数组
②将元素交换到对应的位置
题目重点:数组长度为n,每个元素的值都在[1,n],数组下标是[0,n-1]。我们把元素i放在nums[i-1]的位置上。

③使用正负号作为标记

var findDuplicates = function(nums) {
    const ans = [];
    for(let i = 0; i < nums.length; i++) {
        const x = Math.abs(nums[i]);
        if(nums[x - 1] > 0){
            nums[x - 1] = - nums[x - 1];
        }else{
            ans.push(x);
        }
    }
    return ans;
};

相关文章:

  • Elasticsearch入门开发
  • ETL性能优化
  • 猿创征文|【第11题】求坐上公交的最晚时间(考察贪心算法)
  • 直流有刷电机驱动基于STM32F302R8+X-NUCLEO-IHM07M1(一)
  • Pandas loc与iloc
  • 基于QT的指挥猫猫打架玩耍的小游戏设计
  • K8s的Service详解
  • MyBatis-plus组件学习
  • pgsql执行脚本并传参
  • Vue组件通信(组件的自定义事件、全局事件总线、消息订阅与发布、插槽、props)(八)
  • 【编程题】【Scratch三级】2020.12 躲避恐龙
  • nodejs+vue+elementui在线公益-帮助流浪动物网站python java
  • linux C/C++ socket编程
  • 人工智能·前缀和
  • P27 含并行连结的网络 GoogLeNet / Inception V3
  • 4. 路由到控制器 - Laravel从零开始教程
  • C学习-枚举(九)
  • docker-consul
  • IDEA 插件开发入门教程
  • MaxCompute访问TableStore(OTS) 数据
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • MySQL几个简单SQL的优化
  • nfs客户端进程变D,延伸linux的lock
  • Ruby 2.x 源代码分析:扩展 概述
  • spring boot 整合mybatis 无法输出sql的问题
  • 大数据与云计算学习:数据分析(二)
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 那些年我们用过的显示性能指标
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • ​HTTP与HTTPS:网络通信的安全卫士
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (12)目标检测_SSD基于pytorch搭建代码
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (补)B+树一些思想
  • (多级缓存)多级缓存
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 中创建支持集合初始化器的类型
  • .net解析传过来的xml_DOM4J解析XML文件
  • @Builder用法
  • @javax.ws.rs Webservice注解
  • @开发者,一文搞懂什么是 C# 计时器!
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [CISCN 2023 初赛]go_session
  • [codeforces] 25E Test || hash
  • [git] windows系统安装git教程和配置
  • [JMS 3] ActiveMQ实现简单的helloworld