day30--56. 合并区间+ 738.单调递增的数字

一、56. 合并区间

题目链接:https://leetcode.cn/problems/merge-intervals/
文章讲解:https://programmercarl.com/0056.%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.html
视频讲解:https://www.bilibili.com/video/BV1wx4y157nD

1.1 初见思路

  1. 先按左边界进行排序,然后逐个遍历,进行区间合并

1.2 具体实现

class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals,(a,b)-> Integer.compare(a[0],b[0]));List<int[]> list = new LinkedList<>();int tempL = intervals[0][0];int tempR = intervals[0][1];for(int[] arr:intervals){if(arr[0]<=tempR){//可以合并tempR = Math.max(tempR,arr[1]);}else{//不可以合并了,把区间收集起来,然后更新tempL和tempRlist.add(new int[]{tempL,tempR});tempL=arr[0];tempR=arr[1];}}list.add(new int[]{tempL,tempR});return list.toArray(new int[list.size()][]);}
}

1.3 重难点

  • 二维数组排序写法:
    Arrays.sort(intervals,(a,b)-> Integer.compare(a[0],b[0]));
  • 返回结果是二维数组,需要先用List来存,这里的写法都需要注意;

二、 738.单调递增的数字

题目链接:https://leetcode.cn/problems/monotone-increasing-digits/
文章讲解:https://programmercarl.com/0738.%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.html
视频讲解:https://www.bilibili.com/video/BV1Kv4y1x7tP

2.1 初见思路

  1. 判断这个数自己是否是单调递增,如果不是,那么就要缩小这个数
  2. 缩小肯定要从个位数开始考虑,但是仅仅缩小个位数是不可能满足条件的,因为刚都判断了不是单调递增,那么仅仅缩小个位数是,个位数更小了,更不可能,所以个位数肯定是9(从十位借1了,而不是变大哦);
  3. 如果有十位,判断十位数减一后是否大于百位数,如果大于,那么就不动了,如果减一后小于百位数,就类似于刚个位数的操作,十位变成9了,百位需要减1,以此类推;
  4. 综上所述,其实是找下标,下标往后的就都是9,下标值-1;

2.2 具体实现

class Solution {public int monotoneIncreasingDigits(int n) {if(n==0){return 0;}List<Integer> list = new LinkedList<>();while (n != 0) {list.add(n % 10);n = n / 10;}int endIndex = 0;boolean flag = false;for (int i = 0; i < list.size() - 1; i++) {if (list.get(i) < list.get(i + 1)) {flag = true;list.set(i + 1, list.get(i + 1) - 1);endIndex = i;}}if (flag) {for (int i = 0; i <= endIndex; i++) {list.set(i, 9);}}reverseList(list);String res = "";for (int i = 0; i < list.size(); i++) {res += list.get(i) + "";}return Integer.parseInt(res);}private static void reverseList(List<Integer> list) {int leftIndex = 0;int rightIndex = list.size() - 1;while (leftIndex < rightIndex) {// Swap the elements at leftIndex and rightIndexInteger temp = list.get(leftIndex);list.set(leftIndex, list.get(rightIndex));list.set(rightIndex, temp);leftIndex++;rightIndex--;}}
}

上述写法效率太低了,仔细分析分析为什么效率这么低

2.3 重难点

  • 怎么把这个int类型的数转成每一位来进行比较呢?
  • 换个思路呢,直接用char数组

2.4 改进后的算法

class Solution {public int monotoneIncreasingDigits(int n) {String s = String.valueOf(n);char[] chars = s.toCharArray();int start = s.length();for (int i = s.length() - 2; i >= 0; i--) {if (chars[i] > chars[i + 1]) {chars[i]--;start = i+1;}}for (int i = start; i < s.length(); i++) {chars[i] = '9';}return Integer.parseInt(String.valueOf(chars));}
}

day31--休息日

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

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

相关文章

数据库第四次练习

数据准备 创建两张表&#xff1a;部门&#xff08;dept&#xff09;和员工&#xff08;emp&#xff09;&#xff0c;并插入数据&#xff0c;代码如下 create table dept( dept_id int primary key auto_increment comment 部门编号, dept_name char(20) comment 部门名称 ); in…

SAP PS学习笔记02 - 网络,活动,PS文本,PS文书(凭证),里程碑

上一章讲了PS 的概要&#xff0c;以及创建Project&#xff0c;创建WBS。 SAP PS学习笔记01 - PS概述&#xff0c;创建Project和WBS-CSDN博客 本章继续讲PS的后续内容。包括下面的概念和基本操作&#xff0c;以及一些Customize&#xff1a; - 网络&#xff08;Network&#xf…

力扣-回溯法

何为回溯法&#xff1f; 在搜索到某一节点的时候&#xff0c;如果我们发现目前的节点&#xff08;及其子节点&#xff09;并不是需求目标时&#xff0c;我们回退到原来的节点继续搜索&#xff0c;并且把在目前节点修改的状态还原。 记住两个小诀窍&#xff0c;一是按引用传状态…

欣奇随机美图源码

欣赏养眼美图让人心情愉悦 新增正能量进站引导首页 上传文件解压即可用有手就行 美图输出接口自判断版 http://mt.xqia.net/api.php http://mt.xqia.net/api.php?typejson 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89520368 更多资源下载&…

20240711每日消息队列-------------MQ消息的积压的折磨

目标 解决MQ消息的积压 背景 菜馆系统----------- 系统读取消息&#xff0c;处理业务逻辑&#xff0c;持久化订单和菜品数据&#xff0c;然后将其显示在菜品管理客户端上。 最初我们的用户基数很小&#xff0c;上线后的一段时间内&#xff0c;MQ消息通信还算顺利。 随着用户…

R包:‘ggcharts好看线图包‘

介绍 ggcharts提供了一个高级{ggplot2}接口&#xff0c;用于创建通用图表。它的目标既简单又雄心勃勃:让您更快地从数据可视化的想法到实际的绘图。所以如何?通过处理大量的数据预处理&#xff0c;为您模糊{ggplot2}细节和绘图样式。生成的图是ggplot对象&#xff0c;可以使用…

蓝桥 7.11 dp

2.砝码称重 - 蓝桥云课 (lanqiao.cn) 思路 动态规划的核心思想是将问题分解成更小的子问题&#xff0c;并存储子问题的解&#xff0c;以避免重复计算 数组 dp[i][j] 表示使用前 i 个砝码可以称出的重量为 j 的数量 更新过程如下&#xff1a; 1.初始化&#xff1a;dp[0][0] …

python:sympy 求解一元五次方程式

pip install sympy 或者 本人用的 anaconda 3 自带 sympy 在北大数学训练营&#xff0c;韦东奕 用卡丹公式 巧妙 求解一元五次方程式&#xff1a; \latex $x^510*x^320*x-4 0$ from sympy import *x symbols(x) expr x**5 10*x**3 20*x -4# 用卡丹公式 尝试化简 a sym…

【IOS】React Native之HelloWorld

RN搭建开发环境 rvm 安装3.2.2 brew install node18 brew install watchman# 使用nrm工具切换淘宝源 npx nrm use taobao# 如果之后需要切换回官方源可使用 npx nrm use npmnpm install -g yarnbrew install cocoapodsnpm uninstall -g react-native-cli react-native-communi…

<数据集>表情识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2504张 标注数量(xml文件个数)&#xff1a;2504 标注数量(txt文件个数)&#xff1a;2504 标注类别数&#xff1a;7 标注类别名称&#xff1a;[Neutral, Happy, Angry, Fear, Sad, surprised, Disguist] 序号类别名…

开始Linux之路(暑假提升)

人生得一知己足矣&#xff0c;斯世当以同怀视之。——鲁迅 Linux操作系统简单操作指令 1、ls指令2、pwd命令3、cd指令4、mkdir指令(重要)5、whoami命令6、创建一个普通用户7、重新认识指令8、which指令9、alias命令10、touch指令11、rmdir指令 及 rm指令(重要)12、man指令(重要…

Transformer——多头注意力机制(Pytorch)

1. 原理图 2. 代码 import torch import torch.nn as nnclass Multi_Head_Self_Attention(nn.Module):def __init__(self, embed_size, heads):super(Multi_Head_Self_Attention, self).__init__()self.embed_size embed_sizeself.heads headsself.head_dim embed_size //…

【VSCode】设置背景图片

1.下载background插件&#xff1a;拓展程序→background→install安装→设置&#xff1a; 2.点击在 settings.json 中编辑&#xff1a; 3.将settings.json文件中所有代码注释&#xff0c;添加以下代码&#xff1a; {// 是否开启背景图显示"background.enabled": t…

【Linux杂货铺】1.环境变量

1.环境变量基本概念 环境变量&#xff08; environment variables &#xff09;一般是指在操作系统中用来指定操作系统运行环境的一些参数。如&#xff1a;我们在编写 C / C &#xff0b;代码的时候&#xff0c;在链接的时候&#xff0c;从来不知道我们的所链接的动态静态库在哪…

什么是Web3D?国内有哪些公司可以做?

Web3D 是一种基于网页的三维立体虚拟现实技术。利用计算机图形学、图像处理、人机交互等技术&#xff0c;将现实世界中的物体、场景或概念以三维立体的方式呈现在网页里。Web3D 技术可以让用户在任何时间、任何地点&#xff0c;通过互联网与虚拟世界进行互动&#xff0c;获得身…

昇思25天学习打卡营第1天|初步了解

1在昇思平台上申请过相关资源之后&#xff0c;将示例代码粘贴到输入框内。可以在下图中创建一个新的文档。 2不过初次运行的时候会遇到一个问题&#xff0c;点击运行的时候会出现新的输入框&#xff0c;而不是直接运行。遇到此问题等待就可以了&#xff0c;或者稍微等一下再运…

【JVM】对象的生命周期一 | 对象的创建与存储

Java | 对象的生命周期1-对象的创建与存储 文章目录 前言对象的创建过程内存空间的分配方式方式1 | 指针碰撞方式2 | 空闲列表 线程安全问题 | 避免空间冲突的方式方式1 | 同步处理&#xff08;加锁)方式2 | 本地线程分配缓存 对象的内存布局Part1 | 对象头Mark Word类型指针 P…

内网安全:域内信息探测

1.域内基本信息收集 2.NET命令详解 3.内网主要使用的域收集方法 4.查找域控制器的方法 5.查询域内用户的基本信息 6.定位域管 7.powershell命令和定位敏感信息 1.域内基本信息收集&#xff1a; 四种情况&#xff1a; 1.本地用户&#xff1a;user 2.本地管理员用户&#x…

solidity实战练习1

//SPDX-License-Identifier:MIT pragma solidity ^0.8.24; contract PiggyBank{constructor()payable{emit Deposit(msg.value);//触发事件1//意味着在部署合约的时候&#xff0c;可以向合约发送以太币&#xff08;不是通过调用函数&#xff0c;而是直接在部署合约时发送&#…

外泌体相关基因肝癌临床模型预测——2-3分纯生信文章复现——4.预后相关外泌体基因确定之生存曲线(4)

内容如下: 1.外泌体和肝癌TCGA数据下载 2.数据格式整理 3.差异表达基因筛选 4.预后相关外泌体基因确定 5.拷贝数变异及突变图谱 6.外泌体基因功能注释 7.LASSO回归筛选外泌体预后模型 8.预后模型验证 9.预后模型鲁棒性分析 10.独立预后因素分析及与临床的相关性分析…