五月训练第一天——数组
前言:
一、今日收获
今天练习数组,通过题目简单复习了一维二维数组的使用,后续考虑根据学习内容继续刷一下相关的知识点的题目,巩固与提升。
二、不足
今天的题目看到别人还有更好的办法,比如第三题里的单调栈,这是没想到的思路,可以学习借鉴一下。
解题报告:
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,此时更新最小值即可。
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)如果距离小,更新最小距离,距离相等选取大的值为答案
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,不然会减多了
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)出现次数与二维数组子数组的个数的比较
五月训练第一天——数组相关推荐
- 2017暑假训练第一场的一些题目
2017暑假ACM训练第一场(石油大学主办) B题:模拟 3635: 拯救小鸡 时间限制: 1 Sec 内存限制:128 MB 提交: 71 解决: 34 [提交][状态][讨论版] 题目描述 鸡 ...
- code第一部分数组:第二十二题 偶数次中查找单独出现一次的数
code第一部分数组:第二十二题 偶数次中查找单独出现一次的数 Given an array of integers, every element appears twice except for o ...
- 5.有2个数组,第一个数组内容为:[黑龙江省,浙江省,江西省,广东省,福建省], 第二个数组为:[哈尔滨,杭州,南昌,广州,福州], 将第一个数组元素作为key,第二个
代码 import java.util.HashMap; import java.util.Map; import java.util.Set;/* 5.有2个数组,第一个数组内容为:[黑龙江省,浙江 ...
- php得到第一个数组_php怎么获取数组第一个元素
php获取数组第一个元素,我们可以通过reset函数来实现.那么在我们日常项目开发过程中,PHP获取数组第一个元素有时候也会需要用到的,对于PHP新手来说,可能还不太清楚. 下面我们就通过简单的代码示 ...
- code第一部分数组:从有序数组中移除重复的数据
code第一部分数组:从有序数组中移除重复的数据 第二题 从有序数组中移除重复的数据,但是可以保留2个重复的数. For example, Given sorted array A = [1,1,1, ...
- code第一部分数组:第十七题 爬楼梯问题
code第一部分数组:第十七题 爬楼梯问题 You are climbing a stair case. It takes n steps to reach to the top. Each time ...
- 遍历两个数组,使得值相等的时候,给第一个数组增加一个值为 true 的属性。
问题: 遍历两个数组,使得值相等的时候,使第一个数组中的istrue值为 true .如果值不相等则使第一个数组中的istrue值为 false <template> <div cl ...
- 1.9UPC寒假个人训练第一场
1.9UPC寒假个人训练第一场 问题 A: 数列 问题 B: 烦恼 问题 C: 停车计费 问题 D: 小区评比 问题 E: 贪婪的国王 问题 F: 等边三角形 问题 G: 甜蜜的烦恼 问题 H: 冰壶 ...
- 数据结构与算法学习笔记(python)——第一节 数组应用程序实战
前言 本人是一个长期的数据分析爱好者,最近半年的时间的在网上学习了很多关于python.数据分析.数据挖掘以及项目管理相关的课程和知识,但是在学习的过程中,过于追求课程数量的增长,长时间关注于学习了多 ...
最新文章
- 全排列 ---java
- vue.js组件学习(上)
- Oracle的to_char()函数使用
- python多线程输出_萌新python多线程
- 计算机网络体系结构最有影响的标准,浅谈计算机网络中的体系结构
- 云linux搭建 arm开发,arm集成开发环境搭建
- 美国下注15亿美元重点搞芯片!电子复兴5年计划首批入围项目曝光
- css3-ghostButton
- 矩阵的谱(半径)及其性质
- 基于用户名/密码认证和流量控制 安装pam_mysql(太麻烦,已放弃;以下步骤可以参考,有报错解决...
- 直接插入排序-java
- 留言板php数据库_PHP 留言板教程数据库表设计
- openwrt1907使用mt7621+mt715 5G wifi吞吐量低问题解决方法
- 辞职信 求助编辑百科名片
- [iOS]手把手教你实现微信小视频
- ESN学习笔记——echotorch(2)narma10
- 有计划,坚决执行——写给大三犹豫的女生
- 使用jasypt加密配置的时候,报错:DecryptionException: Unable to decrypt
- 多 wan 口路由器配置
- linux tcp fin wait1,Linux tcp状态 FIN_WAIT1、TIME_WAIT、ESTABLISHED