LeetCode初级算法书Java题解日常更新

news2024/10/7 8:23:27

LeetCode初级算法高效题解(含思路注释)


文章目录

  • LeetCode初级算法高效题解(含思路注释)
  • 前言
  • 一、数组
    • 1.删除排序数组中的重复项
    • 2.买卖股票的最佳时机 II
    • 3.旋转数组
    • 4.存在重复元素
  • 总结


前言

决定用四个月过一下算法


一、数组

1.删除排序数组中的重复项

>给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。
考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

class Solution {
    public int removeDuplicates(int[] nums) {
        int left=0;
        //请你 原地 删除重复出现的元素,使每个元素 只出现一次 
        for(int right=1;right<nums.length;right++){
            //如果右等于左,左不变,右加一
            if(nums[right]!=nums[left]){
                //左指针先往前再赋值
                left++;
                nums[left]=nums[right];
            }
        }
        return left+1;
    }
}

2.买卖股票的最佳时机 II

代码如下(示例):

class Solution {
    public int maxProfit(int[] prices) {
        int sum=0;
        //本题即求无序数组的最大值与最小值的差
        for(int i=0;i<prices.length-1;i++){//注意length-1这里外层循环遍历到倒数第二个即可
            if(prices[i+1]>prices[i]){//如果后一个大于前一个则把两者差值存进sum
            sum+=prices[i+1]-prices[i];//两两前后遍历的差值和即为最低值与最高值的差值
            }
        }
        return sum;
    }
}

3.旋转数组

在这里插入图片描述

class Solution {
    public void rotate(int[] nums, int k) {
      int length=nums.length;
      int[] tem=new int[length];
      //先用临时数组存原数组方便后边原数组存值
      for(int i=0;i<length;i++){
          tem[i]=nums[i];
      }
      //用i与偏移量k两者和去取余数组长度,得到偏移后的位置
      for(int i=0;i<length;i++){
          nums[(i+k)%length]=tem[i];
      }
    }
}

4.存在重复元素

在这里插入图片描述

class Solution {
    public boolean containsDuplicate(int[] nums) {
        Set<Integer> set=new HashSet<>();//hashSet重复元素不可插入
        for(int i=0;i<nums.length;i++){
            //hashSet.add如果返回false则说明有重复元素插入
           if(!set.add(nums[i])){
              return true;
           }
        }
        return false;
    }
}

总结

这个月先过一遍基础算法,后边再做打算。

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

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

相关文章

全国月均太阳辐射空间分布数据/月度降雨量分布/月均气温分布

引言 我国幅员辽阔&#xff0c;地形复杂&#xff0c;位于亚欧大陆东部&#xff0c;太平洋西岸。气候特征为&#xff1a;季风气候明显&#xff0c;大陆性气候强&#xff0c;气候类型复杂多样&#xff0c;水热同期。我国太阳辐射西部多于东部&#xff0c;北部多于南部&#xff0c…

【算法基础】插入排序与二分查找、升级二分查找

文章目录 1. 插入排序1.1 插入排序的思想1.2 插入排序的实现 2. 普通二分查找2.1 普通二分查找的思想2.2 普通二分查找的实现 3. 升级二分查找3.1 升级二分查找思想3.2 升级二分查找实现 1. 插入排序 1.1 插入排序的思想 插入排序很类似于已有一副有序的扑克牌&#xff0c;不断…

【企业场景】设计模式重点解析

设计模式 在平时的开发中&#xff0c;涉及到设计模式的有两块内容&#xff1a; 我们平时使用的框架&#xff08;比如spring、mybatis等&#xff09;我们自己开发业务使用的设计模式。 在平时的业务开发中&#xff0c;其实真正使用设计模式的场景并不多&#xff0c;虽然设计号…

Excel全套213集教程

Excel全套213集教程 包含技术入门93集 图表17集 数据透视35集 公式函数68 基础入门 93节 https://www.alipan.com/s/cMxuPstkS1x 提取码: 77dd 点击链接保存&#xff0c;或者复制本段内容&#xff0c;打开「阿里云盘」APP &#xff0c;无需下载极速在线查看&#xff0c;视…

Springboot使用教程

二、配置文件 SpringBoot使用一个全局的配置文件&#xff0c;配置文件名是固定的&#xff1b; •application.properties •application.yml 1.配置文件的作用&#xff1a; 修改SpringBoot自动配置的默认值&#xff1b;SpringBoot在底层都给我们自动配置好&#xff1b; Y…

【DM8】列表分区List

范围分区是按照某个列上的数据范围进行分区的&#xff0c;如果某个列上的数据无法通过划分范围的方法进行分区&#xff0c;并且该列上的数据是相对固的一些值&#xff0c;可以考虑使用 LIST 分区。一般来说&#xff0c;对于数字型或者日期型的数据&#xff0c;适合采用范围分区…

《价值》-张磊-高瓴资本-6-高瓴公式

第六章 高瓴公式 1&#xff0e;时间回报公式 所谓时间的价值&#xff0c;可以从这两个方面来理解&#xff1a; 一方面&#xff0c;一笔好的投资&#xff0c;其投资收益会随着时间的积累而不断增加&#xff0c;时间是好生意的朋友。另一方面&#xff0c;真正好的投资&#xff…

stm32与esp8266WIFI模块

硬件介绍 WIFI模块ESP-01S 使用AT指令控制1-ESP8266-AT指令初试化及部分基础知识_ch_pd-CSDN博客 项目需求 通过ESP-01SWIFI模块控制LED状态模拟插座 串口1用于与ESP8266通讯&#xff0c;串口2连接PC&#xff0c;用于打印log&#xff0c;查看系统状态 项目接线 将WIFI模块的…

thinkphp6中使用监听事件和事件订阅

目录 一&#xff1a;场景介绍 二&#xff1a;事件监听 三&#xff1a;配置订阅 一&#xff1a;场景介绍 在项目开发中有很多这样的场景&#xff0c;比如用户注册完了&#xff0c;需要通知到第三方或者发送消息。用户下单了&#xff0c;需要提示给客服等等。这些场景都有一个…

R语言 多组堆砌图

目录 数据格式 普通绘图 添加比例 R语言 堆砌图_r语言堆砌图-CSDN博客 关键点在于数据转换步骤和数据比例计算步骤&#xff0c;然后个性化调整图。 ①data <- melt(dat, id.vars c("ID"))##根据分组变为长数据 ②#计算百分比## data2 <- ddply(data, …

线上研讨会 | 新一代数字化技术赋能机器人及智能产线行业高质量发展

随着智能制造的快速推进&#xff0c;制造业转型升级到了关键阶段。越来越多的企业以数字化技术搭配智能机器人及智慧产线&#xff0c;主动实现数字化转型。达索系统3D体验平台是实现企业数字化转型的新一代数智化平台&#xff0c;基于型、数字驱动、数字化连续技术&#xff0c;…

.NET 设计模式—装饰器模式(Decorator Pattern)

简介 装饰者模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你在不改变对象接口的前提下&#xff0c;动态地将新行为附加到对象上。这种模式是通过创建一个包装&#xff08;或装饰&#xff09;对象&#xff0c;将要被装饰的对象包裹起来…

OAuth2.0客户端和服务端Java实现

oauth2 引言 读了《设计模式之美》和《凤凰架构》架构安全篇之后&#xff0c;决定写一个OAuth2.0的认证流程的Demo&#xff0c;也算是一个阶段性的总结&#xff0c;具体原理实现见《凤凰架构》(架构安全设计篇)。 涉及到的源码可以从https://github.com/WeiXiao-Hyy/oauth2获…

【MacOs】proxychains配置使用

一、开始 1. 安装proxychains 使用brew进行安装 brew install proxychains-ng没有homebrew的&#xff0c;可以使用该命令安装 /usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"2. 配置代理配置文件 cd /opt/homeb…

用Python+OpenCV截取视频中所有含有字幕的画面

1、需求背景 有的视频文件的字幕已经压制到了视频的图像中&#xff0c;不能单独提取出字幕文件。网上的 “提取视频字幕” 网站多为提取视频中的字幕文件&#xff0c;而非识别视频图像中的字幕。少数通过OCR技术识别画面中字幕的工具需要在线运行、运行速度较慢&#xff0c;或…

React - 你知道在React组件的哪个阶段发送Ajax最合适吗

难度级别:中级及以上 提问概率:65% 如果求职者被问到了这个问题,那么只是单纯的回答在哪个阶段发送Ajax请求恐怕是不够全面的。最好是先详细描述React组件都有哪些生命周期,最后再回过头来点题作答,为什么应该在这个阶段发送Ajax请求。那…

spring cloud gateway openfeign 联合使用产生死锁问题

spring cloud gateway openfeign 联合使用产生死锁问题&#xff0c;应用启动的时候阻塞卡住。 spring.cloud 版本如下 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><vers…

Labview复制文件夹下的内容到另一个文件夹下

1.程序前面板和后面板 2设置 3执行 4.执行后 5源代码 链接&#xff1a;https://pan.baidu.com/s/1u4cHmA_jUL_hptbiIhTVDA?pwdafu6 提取码&#xff1a;afu6

12个建筑数据分析典型用例

建筑企业面临着众多挑战&#xff0c;包括紧迫的期限、预算限制和复杂的监管要求。 然而&#xff0c;很明显&#xff0c;数据分析可以成为克服这些障碍的重要工具。 建筑行业是数据最密集的市场之一&#xff0c;这就是为什么越来越需要更好的建筑分析和大数据管理。 通过大数据…

OpenCV图像处理——基于OpenCV的ORB算法实现目标追踪

概述 ORB&#xff08;Oriented FAST and Rotated BRIEF&#xff09;算法是高效的关键点检测和描述方法。它结合了FAST&#xff08;Features from Accelerated Segment Test&#xff09;算法的快速关键点检测能力和BRIEF&#xff08;Binary Robust Independent Elementary Feat…