Leetcode 414

我的题解:O(n)

class Solution {public:int thirdMax(vector<int>& nums) {int min = -2147483648;int first=min,second=min,third=min;int len = nums.size();int level=0;int flag=0;for(int i=0;i<len;i++){if(flag==0 && nums[i]==min){flag=1;}else if(nums[i]==first || nums[i]==second || nums[i]==third){continue;}if(nums[i]<third){continue;}else if(nums[i]>=first){third=second;second=first;first=nums[i];if(level<3) level++;}else if(nums[i]>=second){third=second;second=nums[i];if(level<3) level++;}else if(nums[i]>=third){third=nums[i];if(level<3) level++;}}if(level<3) return first;return third;}
};

不想排序所以用了三个变量,初始值设置为int范围的最小值。后来也是因为这个,在极端测试例里面试了好几次。挺乱的一个代码。

看到了leetcode上面百分百的范例,使用了指针,感觉很棒,留着收藏。
解读:int *p 定义p是一个指针,*p代表p指向的值
num是一个int,&num代表他的内存地址

class Solution {public:int thirdMax(vector<int>& nums) {int *a=nullptr,*b=nullptr,*c=nullptr;for(int &num:nums){//不对num==*a/*b/*c的情况做处理,自动排除重复数字if(a==nullptr||num>*a){c=b;b=a;a=&num;}else if(*a>num&&(b==nullptr||*b<num)){c=b;b=&num;}else if(b!=nullptr&&*b>num&&(c==nullptr||*c<num))c=&num;}return c==nullptr?*a:*c;//三目运算符,根据是否有第三大做出判断}
};

Leetcode 414相关推荐

  1. leetcode 414.第三大的数

    leetcode 414.第三大的数 题目描述 给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1] ...

  2. Leetcode 414. 第三大的数(详解 C语言实现)

    414. 第三大的数(点击查看原题) 给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1]输出: 1解 ...

  3. LeetCode 414. Third Maximum Number

    题目: Given a non-empty array of integers, return the third maximum number in this array. If it does n ...

  4. [Leetcode] 414. 第三大的数

    题目描述: 给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1]输出: 1解释: 第三大的数是 1. ...

  5. LeetCode | 414. Third Maximum Number

    . 题目 Given an integer array nums, return the third distinct maximum number in this array. If the thi ...

  6. LeetCode题解目录

    最新更新于2020.11.27 前往LeetCode主页. 前往GitHub源码.(服务器原因,暂停同步.) 前往码云主页. 已解决 456/1878 - 简单353 中等 90 困难 13 2020 ...

  7. 《算法基础》线性枚举(一)——最值算法

    目录 1.LeetCode--485. 最大连续 1 的个数 2.LeetCode--1464. 数组中两元素的最大乘积 3.LeetCode--153. 寻找旋转排序数组中的最小值 4.LeetCd ...

  8. LeetCode412_412. Fizz Buzz

    LeetCode412_412. Fizz Buzz 一.描述 给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果, ...

  9. leetcode(3)——414. 第三大的数(C++中的 set,::作用符号,迭代器),628 三个数的最大乘积(sort函数的用法)

    文章目录 前言 414 程序 疑惑 set ::在c++中什么意思 一.作用域符号: 二.全局作用域符号: 三.作用域分解运算符: C++ 迭代器 628 程序 疑惑 sort函数 前言 大佬的程序, ...

最新文章

  1. 作为HTC在MWC2012移动世界大会上推出的全新系列产品。
  2. [分享]关于windows下的小技巧
  3. Vertica数据库
  4. Simulink代码生成: 延时模块及其代码
  5. 一篇文章搞定,SpringBoot 创建定时任务
  6. 爱因斯坦最熟悉的中国人,曾被学校开除的自学天才周培源
  7. 蚂蚁森林上线三周年,5亿人“手机种树”1.22亿棵...
  8. 设置element-iu中table滚动条位置
  9. 解决office2003无法卸载的问题
  10. ajax如何用编号查询姓名,Ajax js 使用Ajax检测用户名是否存在
  11. C# 图解教程 第一章 C#和.NET框架
  12. 遗传算法详解及代码实现
  13. 绘制计算机网络拓扑图,绘制网络拓扑图1.ppt
  14. 三.minio 的分布式部署、单节点多磁盘、多节点模式
  15. linux输入文件后clustalw,ClustalW----多序列比对分析(一)
  16. UUP, Windows 11 更新机制的未来
  17. 热炒了的《消防设施操作员》,想报考却为何冷中带静?
  18. 如何高效的学习高等数学
  19. c语言用for或while计算,C语言趣味编程:使用while循环结构计算圆周率pi
  20. Nexus arm Linux,[原创] Nexus 6p 刷入Kali Linux NetHunter 2019.3方法

热门文章

  1. 湖南艺术职业学院计算机音乐,湖南艺术职业学院音乐系
  2. java 上转型对象_Java上转型和下转型对象
  3. 三菱四节传送带控制梯形图_三菱plc控制传送带三级 编程 fx2n 模拟四节传送带控制实验三菱...
  4. 《奔跑吧 Linux内核》之处理器体系结构
  5. 洛杉矶警局用 AI “预测犯罪”;北欧银行拟裁员六千,用智能机器取而代之
  6. Debezium系列之:Debezium2.X之PostgreSQL数据库的Debezium连接器
  7. 流/批/OLAP一体的Flink引擎
  8. Pangu and Stones 解题报告
  9. Python+Vue计算机毕业设计框架的综合性电商6si2i(程序+LW+源码+部署)
  10. 46、万维网之一(应用层)