【Leetcode题单】(01 数组篇)刷题关键点总结03【数组的改变、移动】

2023-12-04 02:44

本文主要是介绍【Leetcode题单】(01 数组篇)刷题关键点总结03【数组的改变、移动】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【Leetcode题单】(01 数组篇)刷题关键点总结03【数组的改变、移动】(3题)

  • 数组的改变、移动
    • 453. 最小操作次数使数组元素相等 Medium
    • 665. 非递减数列 Medium
    • 283. 移动零 Easy

大家好,这里是新开的LeetCode刷题系列,以后尽量一天更新一个小章节。此系列应超过400题。
数组篇03《数组的改变、移动》,共3道题,1简单题2中等题。
注意看重点部分,总结起来是这一类题的规律。

数组的改变、移动

453. 最小操作次数使数组元素相等 Medium

453. 最小操作次数使数组元素相等
在这里插入图片描述

    public int minMoves(int[] nums) {int min = Arrays.stream(nums).min().getAsInt();int sum = 0;int n = nums.length;for(int i = 0; i < n; i++){sum += nums[i] - min;}return sum;}

重点

  • 问题转化:n-1位加一转换成 1位-1
  • Arrays的流操作

665. 非递减数列 Medium

665. 非递减数列
在这里插入图片描述

    public boolean checkPossibility(int[] nums) {int n = nums.length;int time = 0;for(int i = 1; i < n; i++){int x = nums[i-1], y = nums[i];if(x > y){time++;if(i > 1 && y < nums[i - 2]){nums[i] = x;}if(time > 1){return false;}   }}return true;}

重点

  • 简化题目:用x,y来指代递减的两个数
  • 改变原数组一次,以观察是否符合题设
  • 分情况讨论
    • 如果y大于x左侧,则该错误略过
    • 如果y小于x左侧,则此时y应修改为x,判断后面序列情况

283. 移动零 Easy

283. 移动零
在这里插入图片描述

public void moveZeroes(int[] nums) {int n = nums.length;int tail = 0;for(int num : nums){if(num != 0){nums[tail++] = num;}}for(int i = tail; i < n; i++){nums[i] = 0;}}

重点

  • 指针思维,使用指针的思维方式,用tail指向该更新的位置
  • 最后别忘记结果置0

这个系列希望能够帮助大家提高刷题效率,发现系列算法题目的常规思路,更快a题,速通Leetcode

b站【软件柠檬】以后会不定期分享计算机领域基础知识,求职干货,为大家助力实习和春秋招offer,
公众号【软件柠檬】也会不定期更新优质内容,分享优质干货资料,希望能够帮助到大家~
❤️这里是 软件柠檬, 让我们一起学习进步~❤️

这篇关于【Leetcode题单】(01 数组篇)刷题关键点总结03【数组的改变、移动】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/451824

相关文章

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys