数据结构刷题训练营3

news2024/11/23 17:09:20

开启蓝桥杯备战计划,每日练习算法一题!!坚持下去,想必下一年的蓝桥杯将会有你!!

笔者是在力扣上面进行的刷题!!由于是第一次刷题!找到的题目也不咋样!所以,就凑合凑合吧!笔者打算从数据结构开始刷起,毕竟现在刚刚接触到数据结构!!

在力扣上找到的刷题链接为:

https://leetcode.cn/study-plan/data-structures/?progress=yqv80ci

力扣是一个很不错的刷题平台!

跟着笔者走起来吧!!加油干!

350. 两个数组的交集 II

给你两个整数数组 nums1nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]

输出:[2,2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]

输出:[4,9]

提示:

  • 1 <= nums1.length, nums2.length <= 1000

  • 0 <= nums1[i], nums2[i] <= 1000

进阶:

  • 如果给定的数组已经排好序呢?你将如何优化你的算法?

  • 如果 nums1 的大小比 nums2 小,哪种方法更优?

  • 如果 nums2 的元素存储在磁盘上,内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?

根据题意,我们可以进行一下思考:

  1. 第一步,进行排序

  1. 申请一个新的数组(最后可以返回这个数组)可以用来存储两个数组中相同的数据!!

  1. 将排序好的两个数组进行比较!

经过上面三步的具体分析,我们可以有:一下的代码:

class Solution {
   public int[] intersect(int[] nums1, int[] nums2) {
        //先对数组进行排序
        //将排好序的数组进行双指针比较!!

        //首先对两个数组进行排序
        Arrays.sort(nums1);
        Arrays.sort(nums2);

        //求出两个数组的最小值(此时申请的数组,可能是最有效的)
        int length1 = nums1.length;
        int length2 = nums2.length;
        //比较大小
        int max_length = length1 > length2 ? length1 :length2 ;
        //申请一个(相对)有效的数组,最后可以返回这个数组!
        int[] array = new int[max_length];

        int index1 =0;
        int index2 =0;
        int index =0;

         while(index1 < length1 && index2 < length2) {
            if (nums1[index1] < nums2[index2]) {
                index1++;
            }else if (nums1[index1] > nums2[index2]) {
                index2++;
            }else  {
                array[index] =nums1[index1];
                index1++;
                index2++;
                index++;
            }
        }
        return Arrays.copyOfRange(array, 0, index);
    }
}

在上面的代码中:注释都已经标注的很清楚了!所以,笔者不在进行详解了!!毕竟代码很简单!!

121. 买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0

示例 1:

输入:[7,1,5,3,6,4]

输出:5

解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。

注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

示例 2:

输入:prices = [7,6,4,3,1]

输出:0

解释:在这种情况下, 没有交易完成, 所以最大利润为 0。

提示:

  • 1 <= prices.length <= 105

  • 0 <= prices[i] <= 104

对于该题目,笔者有着一下的思考:

在这个测试用列中:[7,1,5,3,6,4],我们可以看出来:最小的数据为:1,在数据1之后的最大数据为6,所以差值为5!!

我们可以有着一下的思路:

第一次遍历的时候,找到最小的价格!记录此时的最小价格及其对应的下标!!

通过判断最小价格位置处的下标与数组总长度!来确定是否继续往下走!

第二次遍历,是从最小下标的位置处开始遍历!然后找到最大的数据!

因此,有着一下的代码:

public class Solution {

    public static int maxProfit(int[] prices) {
        //第一步,遍历一遍数组,找到最小位置
        //min:最小的数据
        //index:记录最小数据处的下标
        int min =prices[0];
        int index =0;
        for (int i = 0; i < prices.length; i++) {
            if (min > prices[i]) {
                min = prices[i];
                index =i;
            }
        }
        //此时已经拿到最小数据min,及其最小数据所在的位置index了!
        //判断:index是否是最后一个元素??
        if (index == prices.length-1) {
            return  0;
        }
        //从index位置处开始遍历,寻找最大的数据!
        int max =prices[index];//记录最大的数据
        for (int i = index; i < prices.length; i++) {
            if (max < prices[i]) {
                max = prices[i];
            }
        }
        //此时拿到最大的数据
        
        return max-min;
    }

    // public static void main(String[] args) {
    //     int[] array ={2,4,1};
    //     int ret = maxProfit(array);
    //     System.out.println(ret);
    // }
}

不过,此代码在IDEA上面可以跑过,但是,在力扣上面显示:[2,4,1]这个测试用列没有跑过!!不知道为什么!!我也不知道为什么!!尴尬了!!但是在IDEA中来进行调试,也没有任何的问题!!等待大佬救援!!

在力扣上面的情况:

在IDEA中的用列:

等待大佬指教!

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

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

相关文章

[附源码]计算机毕业设计Python工程施工多层级管理架构(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

逃离美国,跨越8000公里远程办公,他开发了世界上最强的虚拟机

“从前”有一门编程语言叫Smalltalk&#xff0c;它是世界上第一个纯粹的面向对象编程语言。 Smalltalk有很多忠实拥趸&#xff0c;在Java崛起之前&#xff0c;它独自可以抗衡C。 著名的《设计模式》一书&#xff0c;其中的代码示例就是C和Smalltalk。 但是Smalltalk运行速度太慢…

缓存架构,减少不必要的计算

前言&#xff1a; 互联网应用的主要挑战就是在高并发情况下&#xff0c;大量的用户请求到达应用系统服务器&#xff0c;造成巨大的计算压力。互联网应用的核心解决思路就是采用分布式架构&#xff0c;提供更多的服务器&#xff0c;从而提供更多的计算的资源&#xff0c;应对高…

VUE3-创建项目《一》

本案例使用vue3进行学习记录&#xff0c;和vue2有些是通用的。 1.需要了解HTML&#xff0c;CSS&#xff0c;JavaScript。 2.了解Node和NPM&#xff0c;node是vue的开发环境&#xff0c;npm是依赖管理包&#xff0c;npm就和Java的maven一样&#xff0c;和c#的NuGet一样&#x…

mac 微信备份到外接硬盘方案(软链接)

mac版本微信中并没有指定备份路径的功能&#xff0c;备份的聊天记录文件也在一个很难找的位置。对于使用256g硬盘的mac的用户&#xff0c;微信聊天记录动辄十几G、几十G的大小&#xff0c;会造成非常严重的硬盘容量恐慌。所以把微信备份文件迁移到外置硬盘是一件非常有意义的工…

实景三维数据汇交、接缝处理难?用网格大师轻松搞定!

为满足全国城市化、智慧化建设发展&#xff0c;实景三维建设进程加快&#xff0c;建设成果日渐增多&#xff0c;随之而来的数据汇交需求增大。然而在实际数据汇交过程中&#xff0c;不仅需要考虑到模型能否直接融合与替换的问题&#xff0c;还将面临几何接缝、色彩不均等问题。…

【DELM回归预测】基于matlab人工蜂群算法改进深度学习极限学习机数据回归预测【含Matlab源码 1885期】

⛄一、PSO-DELM简介 1 DELM的原理 在2004年&#xff0c;极限学习机&#xff08;extreme learning machine,ELM&#xff09;理论被南洋理工大学的黄广斌教授提出&#xff0c;ELM是一种单隐含层前馈神经网络&#xff08;single-hidden layer feedforward neural network,SLFN&am…

虹科新闻 | 虹科与RACOM正式建立合作伙伴关系

近日&#xff0c;虹科与RACOM正式建立合作伙伴关系&#xff0c;双方就工业应用自动化领域进行深入的交流与合作&#xff0c;未来将共同致力于为客户提供高效、可靠的工业通信解决方案&#xff0c;帮助客户布局工业信息系统。 虹科与RACOM都表示十分期待这次的合作。虹科CEO陈秋…

【信管4.3】确认与控制范围

确认与控制范围在范围管理中&#xff0c;我们已经讲完了 4 个管理过程&#xff0c;剩下的两个过程就是对范围的确认以及在整个项目执行过程中进行范围的监控管理。这两个过程的内容都不多&#xff0c;所以今天的内容还是非常轻松的&#xff0c;在正式学习之前&#xff0c;我们先…

再学C语言9:数据类型(7)——总结

一、sizeof()函数检测C环境中数据类型大小 代码&#xff1a; #include <stdio.h> int main(void) {printf("Type int has a size of %u bytes.\n", sizeof(int));printf("Type char has a size of %u bytes.\n", sizeof(char));printf("Type …

技术分享 | Jenkins 多任务关联

当有多个 Jenkins job 时&#xff0c;job 的执行需要按照先后顺序去执行&#xff0c;这个过程就是 Jenkins 的多任务关联。通常用于项目的编译、打包、执行冒烟、执行项目 case 多任务协助的场景中。 > 霍格沃兹测试学院 TestingStudio 触发条件 多任务关联的使用场景是有…

【大数据 clickhouse】clickhouse 数据字典使用详解

一、数据字典介绍 数据字典是ClickHouse提供一种非常简单且实用的存储媒介&#xff0c;他以键值和属性映射的形式定义数据。字典中的数据会主动或被动加载到内存并支持动态更新。由于字典数据常驻内存的特性&#xff0c;所以非常适合保存常量或经常使用的维度表数据&#xff0c…

没想到H5也是黑灰产的攻击重点?

近几年&#xff0c;在数字化与疫情的推动下&#xff0c;越来越多的企业开辟了线上业务&#xff0c;在互联网上通过各种方式开展业务。线上业务不仅使得企业效率提升&#xff0c;同时也面临着被黑灰产攻击的风险。黑灰产通过各种业务漏洞&#xff0c;能够攫取大量利益&#xff0…

[附源码]计算机毕业设计Python公共台账管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

mysql的优化---定位低效率执行SQL-慢查询日志

-- 查看慢日志配置信息 show variables like %slow_query_log%-- 开启慢日志查询 set global slow_query_log 1-- 查看慢日志记录SQL的最低阈值时间,默认如果SQL的执行时间>10秒的&#xff0c;则算慢查询&#xff0c;则会将该操作记录到慢日志中去 show variables like lon…

文本生成项目(基于tensorflow1.14版本)

项目下载链接&#xff1a;链接: https://pan.baidu.com/s/1OfICplwlEtRBz_ta7Nwyyg?pwdyr5c 提取码: yr5c 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v4的分享 1.模型代码&#xff1a;model.py # -*- coding: utf-8 -*- # file: m…

Qemu中SylixOS与VMware中Linux的通信链路搭建

1.适用范围 在与客户沟通交流后&#xff0c;ECSM管理Linux端docker及Linux与SylixOS间通信也成了客户比较关心的一部分。因此为了能够更好地给客户提供演示&#xff0c;必然需要搭建一套具有ECSM、SylixOS、linux的环境。 如果通过硬件搭建&#xff0c;一是携带麻烦&#xff0…

表哥推荐python自学书籍:从入门到精通,读这十本书就够了!

前言 人生苦短&#xff0c;我学python。 python编程语言在各种榜单上经常拿到前列位置&#xff0c;在全球范围内都非常受欢迎。 Python作为一种不受局限、跨平台的开源编程语言&#xff0c;其数据处理速度快、功能强大且简单易学。而且&#xff0c;Python采用解释运行的方式…

风电机组的预测性维护应该如何进行?

一、应用背景 风能是最重要的清洁能源之一&#xff0c;大力发展风电等清洁能源是实现国家可持续发展战略的必然选择。发展风电、光伏等新能源的高效运维技术已成为当前电力系统面临的重要问题之一。在风电机组单机容量较大、机组整体结构越来越复杂、各部件之间的耦合也愈加紧…

零基础入门智能射频——偶极子天线等效电路模型分析

1.前言 无人机的安全防范和管控&#xff0c;已经成为无人机行业的重点内容。无人机探测解决方案已经变得非常重要。前面系列文章给出了针对无人机侦察和干扰无人机的天线阵设计&#xff0c;上一期文章中&#xff0c;我们给出一种小型化的无人机侦测天线&#xff0c;每个阵元都…