wy的leetcode刷题记录_Day15

目录

  • wy的leetcode刷题记录_Day15
    • 2441. 与对应负数同时存在的最大正整数
      • 题目介绍
      • 思路
      • 代码
      • 收获
    • 2442. 反转之后不同整数的数目
      • 题目介绍
      • 思路
      • 代码
      • 收获

2441. 与对应负数同时存在的最大正整数

leetcode周赛系列之:2441. 与对应负数同时存在的最大正整数

题目介绍

给你一个 不包含任何零的整数数组 nums ,找出自身与对应的负数都在数组中存在的最大正整数 k 。返回正整数 k ,如果不存在这样的整数,返回 -1 。

示例 1:
输入:nums = [-1,2,-3,3]
输出:3
解释:3 是数组中唯一一个满足题目要求的 k 。

示例 2:
输入:nums = [-1,10,6,7,-7,1]
输出:7
解释:数组中存在 1 和 7 对应的负数,7 的值更大。

思路

1.双指针法
先对数组进行升序排序,然后从排序后的数组俩端进行遍历,俩段元素相加如果为0即为题目所求的最大相反值(因为我们排序过了,所以数组俩端的绝对值最大),如果不为0的话根据情况移动单个指针:1如果小于0则是因为nums[left]过小所以left++,如果大于0是因为nums[right]过大所以right–
2.hash表法
遍历nums,将元素放入set中(每次遍历顺便放入一个 或者一开始用个循环全部放入也可以),判断此遍历时的num其相反值是否在set中,如果在set中则再将其与当前符合条件的最大值比较,如果小于最大值则跳过,如果大于最大值则覆盖最大值。最后遍历结束后返回这个最大值,这个最大值初始化为-1,这样即使nums中都不满足条件的话也可以直接返回它。

代码

class Solution {public:int findMaxK(vector<int>& nums) {int n=nums.size();sort(nums.begin(),nums.end());int i=0,j=n-1;while(i!=j){if(nums[i]+nums[j]==0)return abs(nums[i]);else if(nums[i]+nums[j]<0){i++;}else if(nums[i]+nums[j]>0){j--;}}return -1;}
};
class Solution {public:int findMaxK(vector<int>& nums) {unordered_set<int> numSet;int maxNum=-1;for(auto num:nums){int absNum=abs(num);if(numSet.count(-num)&&absNum>maxNum){maxNum=absNum;}numSet.insert(num);}return maxNum;}
};

收获

简单的模拟题,巩固了双指针法的思路,尤其是其遍历条件。巩固了STL的应用,unordered_set的用法。

2442. 反转之后不同整数的数目

2442. 反转之后不同整数的数目

题目介绍

给你一个由 正 整数组成的数组 nums 。你必须取出数组中的每个整数,反转其中每个数位,并将反转后得到的数字添加到数组的末尾。这一操作只针对 nums 中原有的整数执行。返回结果数组中不同整数的数目。

示例 1:
输入:nums = [1,13,10,12,31]
输出:6
解释:反转每个数字后,结果数组是[1,13,10,12,31,1,31,1,21,13] 。反转后得到的数字添加到数组的末尾并按斜体加粗表示。注意对于整数 10,反转之后会变成 01 ,即 1 。 数组中不同整数的数目为 6(数字 1、10、12、13、21 和 31)。

示例 2:
输入:nums = [2,2,2]
输出:1
解释:反转每个数字后,结果数组是 [2,2,2,2,2,2] 。 数组中不同整数的数目为1(数字 2)。

思路

一个简单的模拟题,使用哈希表的特性来记录不同的数。实在不行用一个超大数组也ok。

代码

class Solution {public:int countDistinctIntegers(vector<int>& nums) {int n=nums.size();unordered_map<int,int> hash;int ans=0;for(int i=0;i<n;i++){if(hash.find(nums[i])==hash.end()){ans++;hash[nums[i]]=1;}int reverse_val=reverse(nums[i]);if(hash.find(reverse_val)==hash.end()){ans++;hash[reverse_val]=1;}}return ans;}int reverse(int num){int res=0;while(num!=0){res=res*10+num%10;num/=10;}return res;}
};

收获

熟练掌握STL中的set

wy的leetcode刷题记录_Day15相关推荐

  1. wy的leetcode刷题记录_Day45

    wy的leetcode刷题记录_Day45 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2022-11-18 前言 补 目录 wy的leetcode刷题记录_Da ...

  2. wy的leetcode刷题记录_Day66

    wy的leetcode刷题记录_Day66 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2023-4-10 前言 目录 wy的leetcode刷题记录_Day66 ...

  3. LeetCode刷题记录15——21. Merge Two Sorted Lists(easy)

    LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) 目录 LeetCode刷题记录15--21. Merge Two Sorted Lists(easy) ...

  4. LeetCode刷题记录14——257. Binary Tree Paths(easy)

    LeetCode刷题记录14--257. Binary Tree Paths(easy) 目录 前言 题目 语言 思路 源码 后记 前言 数据结构感觉理论简单,实践起来很困难. 题目 给定一个二叉树, ...

  5. LeetCode刷题记录13——705. Design HashSet(easy)

    LeetCode刷题记录13--705. Design HashSet(easy) 目录 LeetCode刷题记录13--705. Design HashSet(easy) 前言 题目 语言 思路 源 ...

  6. LeetCode刷题记录12——232. Implement Queue using Stacks(easy)

    LeetCode刷题记录12--232. Implement Queue using Stacks(easy) 目录 LeetCode刷题记录12--232. Implement Queue usin ...

  7. LeetCode刷题记录11——290. Word Pattern(easy)

    LeetCode刷题记录11--290. Word Pattern(easy) 目录 LeetCode刷题记录11--290. Word Pattern(easy) 题目 语言 思路 源码 后记 题目 ...

  8. LeetCode刷题记录10——434. Number of Segments in a String(easy)

    LeetCode刷题记录10--434. Number of Segments in a String(easy) 目录 LeetCode刷题记录9--434. Number of Segments ...

  9. LeetCode刷题记录9——58. Length of Last Word(easy)

    LeetCode刷题记录9--58. Length of Last Word(easy) 目录 LeetCode刷题记录9--58. Length of Last Word(easy) 题目 语言 思 ...

最新文章

  1. autoware框架与功能简介(一)
  2. 域计算机开机默认用户,怎么实现让域账户开机自动登陆
  3. ov5640帧率配置_逃离塔科夫怎么提升帧率 帧率优化建议_单机游戏_游戏攻略
  4. npm包管理器安装模块
  5. vue 一个组件内多个弹窗_使用vue实现各类弹出框组件
  6. Silverlight 解谜游戏 之十七 胜利界面优化
  7. 机器学习代码实战——梯度下降(gradient descent)
  8. 【剑指 offer】(十九)—— 二叉树镜像
  9. 边缘计算的前景和挑战
  10. 在kettle中实现数据验证和检查
  11. java ojdbc14.jar_ojdbc14_g.jar
  12. Mac不用Boot Camp 安装双系统
  13. R语言实战应用精讲50篇(十七)--使用R语言实现时间序列分析
  14. Win10 易升更新 安装wls2 部署docker
  15. 嵌入式设备NFS挂载目录(基于iTop 4412)
  16. 高端蓝牙耳机哪个牌子好?四款高音质不错的蓝牙耳机推荐
  17. Summer School实验
  18. 关于ios XCode hangs at Attaching to (app name)
  19. Mysql innodb 间隙锁
  20. OpenCalib:自动驾驶多传感器开源标定工具箱

热门文章

  1. 看图说话:如此细致的对比
  2. java代码开发规范_java代码开发规范
  3. Coremail论客全新推出邮件安全品牌CACTER,邮件安全官网重磅上线!
  4. 【飞桨】【图像分类】【PaddlePaddle】蝴蝶图像识别
  5. 阿里云企业邮箱购买流程
  6. 潭州课堂25班:Ph201805201 tornado 项目 第二课 项目 基本功能模块和 Git 使用 (课堂笔记)...
  7. 苹果手机备份占内存吗 苹果手机备份到电脑怎么操作
  8. 【初学】iOS学习笔记1-iOS模拟器中文输入法设置
  9. 如何在电脑上测试手机网站(全)
  10. Alertmanager邮箱和企业微信的告警模板分享