前言:

一、今日收获

今天练习数组,通过题目简单复习了一维二维数组的使用,后续考虑根据学习内容继续刷一下相关的知识点的题目,巩固与提升。

二、不足

今天的题目看到别人还有更好的办法,比如第三题里的单调栈,这是没想到的思路,可以学习借鉴一下。

解题报告:

  1. 2016. 增量元素之间的最大差值

    题目概述:

    给你一个下标从 0 开始的整数数组 nums,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 nums[i] < nums[j] 。

    返回 最大差值 。如果不存在满足要求的 i 和 j ,返回 -1 。

    解题思路

    题目中说道需要满足i<j,所以考虑从头遍历数组,并查询最小值计算差值(保证i小),之后用nums[i]与min比较,如果nums[i]<=min则更新最小值,否则差值为nums[i]-min(保证min对应下标小于i)

    源码剖析

    class Solution {
    public:int maximumDifference(vector<int>& nums) {int min,res=-1;//(1)min=nums[0];for(int i=0;i<nums.size();i++){if(nums[i]>min)//(2){res=max(nums[i]-min,res);}else{min=nums[i];//(3)}}return res;}
    };

    (1)初始化返回值-1

    (2)如果nums[i]>min,此时min对应的下标必小于i,所以直接更新res为最大差值

    (3)如果nums[i]<=min,此时更新最小值即可。

  2. 2239. 找到最接近 0 的数字

    题目概述:

    给你一个长度为 n 的整数数组 nums ,请你返回 nums 中最 接近 0 的数字。如果有多个答案,请你返回它们中的 最大值

    解题思路

    因为是距离相等,所以考虑使用abs函数求绝对值,但是题目中要求返回距离相等的数值中的最大值,所以还需要使得所求值最大

    源码剖析

    class Solution {
    public:int findClosestNumber(vector<int>& nums) {int min=abs(nums[0]),res=nums[0];//(1)for(int i=0;i<nums.size();i++){if(abs(nums[i])<abs(res))//(2)res=nums[i];else if(abs(nums[i])==abs(res)){res=max(nums[i],res);}}return res;}
    };

    (1)定义最小距离和答案

    (2)如果距离小,更新最小距离,距离相等选取大的值为答案

  3. 1475. 商品折扣后的最终价格

    题目概述:

    给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。

    商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,其中 j 是满足 j > i 且 prices[j] <= prices[i] 的 最小下标 ,如果没有满足条件的 j ,你将没有任何折扣。

    请你返回一个数组,数组中第 i 个元素是折扣后你购买商品 i 最终需要支付的价格。

    解题思路

    本题考虑到最大长度也只有500,所以果断考虑暴力遍历,直接减去第一个遇到的小于nums[i] 的值然后break;防止减多了

    源码剖析

    class Solution {
    public:vector<int> finalPrices(vector<int>& prices) {for(int i=0;i<prices.size();i++){for(int j=i+1;j<prices.size();j++){if(prices[j]<=prices[i]){prices[i]-=prices[j];break;//(1)}}}return prices;}
    };

    (1)注意要break,不然会减多了

  4. 2239. 找到最接近 0 的数字

    题目概述:

    给你一个二维整数数组 nums ,其中 nums[i] 是由 不同 正整数组成的一个非空数组,按 升序排列 返回一个数组,数组中的每个元素在 nums 所有数组 中都出现过。

    解题思路

    直接离散化,用一个数组记录每一个原数组元素的出现次数,如果一个元素出现的次数等于二维数组子数组的个数,即该元素是交集元素。

    源码剖析

    class Solution {
    public:vector<int> intersection(vector<vector<int>>& nums) {if (nums.empty() ||  nums[0].empty()) return {};vector<int >res(1001);vector<int>s;for(int i=0;i<nums.size();i++){for(int j=0;j<nums[i].size();j++){res[nums[i][j]]++;//(1)}}for(int i=0;i<1001;i++){if(res[i]==nums.size())s.push_back(i);//(2)}return s;}
    };

    (1)新数组记录原数组每一个值的出现次数

    (2)出现次数与二维数组子数组的个数的比较

五月训练第一天——数组相关推荐

  1. 2017暑假训练第一场的一些题目

    2017暑假ACM训练第一场(石油大学主办) B题:模拟 3635: 拯救小鸡 时间限制: 1 Sec  内存限制:128 MB 提交: 71  解决: 34 [提交][状态][讨论版] 题目描述 鸡 ...

  2. code第一部分数组:第二十二题 偶数次中查找单独出现一次的数

    code第一部分数组:第二十二题 偶数次中查找单独出现一次的数 Given an array of integers, every element appears twice except for o ...

  3. 5.有2个数组,第一个数组内容为:[黑龙江省,浙江省,江西省,广东省,福建省], 第二个数组为:[哈尔滨,杭州,南昌,广州,福州], 将第一个数组元素作为key,第二个

    代码 import java.util.HashMap; import java.util.Map; import java.util.Set;/* 5.有2个数组,第一个数组内容为:[黑龙江省,浙江 ...

  4. php得到第一个数组_php怎么获取数组第一个元素

    php获取数组第一个元素,我们可以通过reset函数来实现.那么在我们日常项目开发过程中,PHP获取数组第一个元素有时候也会需要用到的,对于PHP新手来说,可能还不太清楚. 下面我们就通过简单的代码示 ...

  5. code第一部分数组:从有序数组中移除重复的数据

    code第一部分数组:从有序数组中移除重复的数据 第二题 从有序数组中移除重复的数据,但是可以保留2个重复的数. For example, Given sorted array A = [1,1,1, ...

  6. code第一部分数组:第十七题 爬楼梯问题

    code第一部分数组:第十七题 爬楼梯问题 You are climbing a stair case. It takes n steps to reach to the top. Each time ...

  7. 遍历两个数组,使得值相等的时候,给第一个数组增加一个值为 true 的属性。

    问题: 遍历两个数组,使得值相等的时候,使第一个数组中的istrue值为 true .如果值不相等则使第一个数组中的istrue值为 false <template> <div cl ...

  8. 1.9UPC寒假个人训练第一场

    1.9UPC寒假个人训练第一场 问题 A: 数列 问题 B: 烦恼 问题 C: 停车计费 问题 D: 小区评比 问题 E: 贪婪的国王 问题 F: 等边三角形 问题 G: 甜蜜的烦恼 问题 H: 冰壶 ...

  9. 数据结构与算法学习笔记(python)——第一节 数组应用程序实战

    前言 本人是一个长期的数据分析爱好者,最近半年的时间的在网上学习了很多关于python.数据分析.数据挖掘以及项目管理相关的课程和知识,但是在学习的过程中,过于追求课程数量的增长,长时间关注于学习了多 ...

最新文章

  1. 全排列 ---java
  2. vue.js组件学习(上)
  3. Oracle的to_char()函数使用
  4. python多线程输出_萌新python多线程
  5. 计算机网络体系结构最有影响的标准,浅谈计算机网络中的体系结构
  6. 云linux搭建 arm开发,arm集成开发环境搭建
  7. 美国下注15亿美元重点搞芯片!电子复兴5年计划首批入围项目曝光
  8. css3-ghostButton
  9. 矩阵的谱(半径)及其性质
  10. 基于用户名/密码认证和流量控制 安装pam_mysql(太麻烦,已放弃;以下步骤可以参考,有报错解决...
  11. 直接插入排序-java
  12. 留言板php数据库_PHP 留言板教程数据库表设计
  13. openwrt1907使用mt7621+mt715 5G wifi吞吐量低问题解决方法
  14. 辞职信 求助编辑百科名片
  15. [iOS]手把手教你实现微信小视频
  16. ESN学习笔记——echotorch(2)narma10
  17. 有计划,坚决执行——写给大三犹豫的女生
  18. 使用jasypt加密配置的时候,报错:DecryptionException: Unable to decrypt
  19. 多 wan 口路由器配置
  20. linux tcp fin wait1,Linux tcp状态 FIN_WAIT1、TIME_WAIT、ESTABLISHED

热门文章

  1. 第16章 人口统计
  2. 【中等】只将元音字母变为大写
  3. mysql存储过参数拼接_mysql 存储过程动态拼接sql并执行赋值
  4. 青春热血:Cocos Club首次亮相北大!
  5. latex如何自定义图片的标题位置
  6. 一个程序员眼中的宋慧乔离婚、李晨范冰冰分手。。。
  7. 魔兽世界服务器卡顿原理,魔兽世界:正式服卡到爆炸,暴雪却还在为怀旧服提升游戏体验...
  8. 常用封BT的IP列表
  9. 用html做祝福语朋友,祝朋友考试成功的祝福语
  10. 你知道旋风图怎么制作吗?这个Excel技巧你一定要知道