第三大的数、字符串中的单词数、排列硬币

LeetCode 第三大的数 给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2: 输入: [1, 2] 输出: 2 解释: 第三大的数不存在, 所以返回最大的数 2 . 示例 3: 输入: [2, 2, 3, 1] 输出: 1 解释: 注意,要求返回第三大的数,是指第三大且... 阅读详情

🍅 Java学习路线:搬砖工逆袭Java架构师

🍅 简介:Java领域优质创作者🏆、优快云哪吒公众号作者✌ 、Java架构师奋斗者💪

🍅 百日刷题计划:第 16 / 100 天。

🍅 扫描主页左侧二维码,加入群聊,一起学习、一起进步 

🍅 欢迎点赞 👍 收藏 ⭐留言 📝 

大连棒棰岛


算法是进阶架构师的基础,基础不牢,地动山摇,2021-8-14起开始刷题,目标100天,300道LeetCode算法题,分享是学习的最好方式,加油,嗨起来。

本期特别推荐:

Java学习路线总结❤️搬砖工逆袭Java架构师❤️(全网最强,建议收藏)

1、LeetCode 414.第三大的数

题目

给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。

小编思路

1、先进行去重,然后按从小到大排序

2、如果只有一个或两个数,则取最小的那个

3、如果有两个以上的数字,则取第三大的数字

小编菜解

public static int thirdMax(int[] nums) {
    if (nums == null || nums.length == 0){
        return -1;
    }
    Set<Integer> set = new HashSet<>();
    //先进行去重、大小排序
    Arrays.sort(nums);
    for (int num : nums) {
        set.add(num);
    }
    //再放入list中
    List<Integer> list = new ArrayList<>(set);
    //如果只有一个或两个数,则取最小的那个
    if (list.size() < 3){
        return list.get(list.size()-1);
    }else{
        //如果有两个以上的数字,则取第三大的数字
        return list.get(list.size()-3);
    }
}

不对吗? 

大佬指点江山

public int thirdMax(int[] nums) {
    int len  = nums.length;

    // 长度小于等于 2 时,取最大值即可
    if (len <= 2) {
        return Math.max(nums[0], nums[len - 1]);
    }

    long first, second, third;
    first = second = third = Long.MIN_VALUE;

    for (int i = 0; i < nums.length; i++) {

        int cur = nums[i];

        // 由于第几大都是不能重复的,也就是说当前元素 cur 如果等于 first, second 时,忽略即可
        if (cur == first || cur == second) {
            // 忽略当前元素
            continue;
        }
        if (cur > first) {
            third = second;
            second = first;
            first = cur;
            continue;
        }
        if (cur > second) {
            third = second;
            second = cur;
            continue;
        }

        if (cur > third) {
            third = cur;
        }
    }

    return third == Long.MIN_VALUE ? (int)first : (int)third;
}

思路上都差不多,可我的不对啊,所以还是有差距的。 

2、LeetCode 434.字符串中的单词数

题目

统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。

请注意,你可以假定字符串里不包括任何不可打印的字符。

小编菜解

public static int countSegments(String s) {
    if (s.length()==0){
        return 0;
    }
    return s.split(" ").length;
}

 这题是不是有点侮辱人了?这么简单,也叫算法?

但是,提交失败,事情往往没有想象中的那么简单!

输入", , , ,  a,   eaefa"会报错。

哦,也对,如果多个连续的空格,就有问题了。

大佬指点江山

public int countSegments(String s) {
    String temp = s.trim();
    if (temp.length()==0){
        return 0;
    }
    return temp.split("\\s+").length;
}

连续的空格用正则表达式分隔就可以了。

3、LeetCode 441.排列硬币

题目

你总共有 n 枚硬币,你需要将它们摆成一个阶梯形状,第 k 行就必须正好有 k 枚硬币。

给定一个数字 n,找出可形成完整阶梯行的总行数。

n 是一个非负整数,并且在32位有符号整型的范围内。

小编菜解

public static int arrangeCoins(int n) {
    //第一行是1,第二行是2,第三行是3,第四行是4.。。
    int line = 1;
    int sum = 0;
    //为倒数第二行的行号
    int last = 0;
    while (sum < n){
        last = sum;
        sum += line;
        line++;
    }
    //如果n - last = 最后一行的行号,也就是说最后一行是满行,否则不是
    if(n - last == line-1){
        return line-1;
    }else{
        return line - 2;
    }
}

思路及算法

每一行的合计(从第一行合计到当前行)

第一行是1,第二行是2,和为3,第三行是3,和为6,第四行是4,和为10.。。

1*(1+1)/2=1
2*(2+1)/2=3
3*(3+1)/2=6
4*(4+1)/2=10
n*(n+1)/2

大佬指点江山

public static int arrangeCoins(int n) {
    //第一行是1,第二行是2,和为3,第三行是3,和为6,第四行是4,和为10.。。
    int line = 1;
    int left = 1;
    int right = n;
    while (left<=right){
        //二分查找
        int middle = left+(right-left)/2;
        //按照规律计算总数和
        long total = (long)middle * (middle + 1)/2;
        if (total > n){
            right = middle - 1;
        }else{//如果total小于n,则表示累加还在继续,直到left<=right,获取最后一个line
            left = middle + 1;
            line = middle;
        }
    }
    return line;
}

        
【信息科学与工程学】【控制科学】第二篇 决策控制与决策科学01 多属性决策分析马尔可夫决策过程和行为决策理论。多属性决策分析:静态、多准则决策问题的结构化方法马尔可夫决策过程:动态、序贯决策的数学框架行为决策理论:描述实际决策行为的心理学基础每个表格都严格遵循要求的18个维度理论基础(定理/规律/数学特征)算法实现核心数学描述关键参数精度与误差分析边界条件影响因素计量方法多学科关联实现目标完整工作流程应用场景优点与局限瓶颈知识连接点决策控制知识体系的特点多层次:从描述性(行为理论)到规范性(MCDA、MDP)多学科。 阅读详情

相关推荐

电机传动机构的转矩与惯量折算

参考《工业运动控制》

庐州牧 1万+

LeetCode算法题解 414-第三大的数

题目描述 题解: 这道题如果不看时间复杂度那是挺容易的,一个排序就解决了,但是限制到O(n)还是要点方法才能解出来的: 方法1: 如果元素的个数<=2,直接返回最大的值即可。 如果元素的个数>3,首先找出最大的(注意:可能有多个),把最大的数标记为INT_MAX,然后把这个最大的数记录下来为:realMaxV,然后找出第二大的(也可以有多个),把次大的也标记为INT_MAX,最后找...

东瓜blog 512

【ENVI初学】查看影像空间分辨率及重采样

例如,如果线段长度为900米,对应的像素数量为30个,那么影像的空间分辨率为30米。通过计算长度与像素数量的比值,即可得到影像的空间分辨率。,在弹出的对话框中,输入重采样后输出文件的xy分辨率大小。在测量结果窗口中,可以看到该线段的长度以及角度。在影像上点击并拖动鼠标,绘制一条直线段。工具,选择要重采样的影像后点击ok。,避免了插值过程中光谱信息的改变。:最近邻插值法通过选择原始影像中。在ENVI中打开影像后右键选择。指示了每个像素的地理跨度(聚合为一个新像素,通常通过。方法一:查看影像的元数据。

weixin_41619112的博客 5569

LeetCode——寻找数组中第三大的数

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

zwz的学习之路 7855

Comsol超声空化气泡仿真入门:从零搭建模型到网格划分的完整流程

本文详细介绍了使用Comsol进行超声空化气泡仿真的完整流程,从物理基础理解到模型搭建、网格划分及求解器设置。通过具体步骤和示例代码,帮助初学者和工程师快速掌握这一关键技术,应用于医疗设备和工业清洗等领域。

weixin_29289821的博客 160

MS1030超声波流量计电路实战:如何用15ps精度优化水表设计(附配置代码)

本文深入探讨了如何利用MS1030超声波流量计芯片实现15ps高精度测量,以优化水表设计。文章从系统误差分配出发,详细解析了硬件电路设计要点、SPI通信配置及核心优化技巧,如利用可编程偏置电压和8回波累加功能来提升抗干扰能力与测量稳定性,并附有实用的配置代码示例。

svm4gardener的博客 330

[Leetcode] 414. 第三大的数

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

技术小二郎的博客 651

【Docker】如何让docker容器正常使用nvidia显卡

描述了如何在docker容器中使用英伟达显卡的过程和问题解决方法。

NameLoadingFailed的博客 8372

第三大的数

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 该题来自力扣题库 示例 示例 1: 输入: [3, 2, 1] 输出: 1 第三大的数是 1 示例 2: 输入: [1, 2] 输出: 2 第三大的数不存在, 所以返回最大的数 2 示例 3: 输入: [2, 2, 3, 1] 输出: 1 注意,要求返回第三大的数,是指第三大且唯一出现的...

qq_45619426的博客 514

VL53L0X测距不准?手把手教你做RefSPAD校准与环境补偿(附Arduino/STM32代码)

本文详细解析了VL53L0X激光测距传感器精度不足的原因,并提供了RefSPAD校准与环境补偿的完整解决方案。通过Arduino和STM32代码示例,手把手教你实现毫米级测距稳定性,适用于机器人避障、工业检测等场景。

weixin_28744423的博客 256

Linux ARM平台开发系列讲解(GPIO子系统) 2.3.2 GPIO子系统常用函数解析

1. 概述 该章节会记录一年常用的GPIO子系统常用函数,会更具情况不断更新 static inline int gpio_get_value(unsigned int gpio) 功能 :用于获取某个GPIO引脚上的值 gpio : gpio引脚号 返回值:非负值,得到的 GPIO 值;负值,获取失败。 static inline void gpio_set_value(unsigned int gpio, int value) static inline int gpio_cansleep(unsi

DSMGUOGUO的博客 668

Leetcode 第401,412,414,434,441,448,453,459,463,482题(Java解法)

Java解leetcode,助力面试之简单10道题(十三)第401题 二进制手表解题思路代码第412题 Fizz Buzz/font>解题思路代码第414题 第三大的数解题思路代码第434题 字符串中的单词数解题思路代码第441题 排列硬币解题思路代码第448题 找到所有数组中消失的数字解题思路代码第453题 最小操作次数使数组元素相等解题思路代码第459题 重复的子字符串解题思路代码第463题 岛屿的周长解题思路代码第482题 密钥格式化解题思路代码 第401题 二进制手表 二进制手表顶部有 4 个

qq_42417189的博客 1061

【实战】YOLOv5/v8模型→RK3588 NPU高效部署:模型转换/量化/精度调优完整指南​

摘要: 本教程详细介绍了YOLOv5模型在RK3588 NPU上的优化部署流程,重点解析了架构转换与量化技术。通过将检测头输出结构与decode操作分离,显著提升了模型在NPU上的兼容性和计算效率。LetterBox预处理方案有效保持图像宽高比,相比直接resize提升检测精度。INT8量化技术采用非对称量化策略,通过scale和zero_point参数实现浮点到整数的转换,在保证精度的同时大幅提升推理速度。实验表明,优化后的模型在RK3588上实现了高效的实时目标检测性能,为边缘AI部署提供了完整解决方案

LXY_LOVE36的博客 625

21年10月第二周 力扣每日一题记录

本周每日一题 题目 lc482. 密钥格式化 lc284. 窥探迭代器 10-04 lc482. 密钥格式化 今天是个简单题,也是非常简单的一道题 给一个字符串,经过处理 然后给k值,将字符串分成多个k字符的分组,第一个小于等于k,那么很简单,第一个直接是n%k就可以了,后面的全部是k,当然,如果结果是0,那么每个都是k,第一个就置为k 简单题,直接看代码,不多bb class Solution { //按照-来分割字符串,然后第一个分组小于等于k,至少有一个,后面的要刚好包含k个字符

或左的博客 271

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

2021.10 LeetCode每日一题(10.01-10.15)

1436. 旅行终点站 class Solution { public: string destCity(vector<vector<string>> &paths) { unordered_set<string> citiesA; for (auto &path : paths) { citiesA.insert(path[0]); } for (auto &

忆_恒心的博客 579

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

力扣练习3(十题)

1.(1436)旅行终点站 给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。 题目数据保证线路图会形成一条不存在循环的线路,因此恰有一个旅行终点站。 示例 1: 输入:paths = [["London","New York"],["New York","Lima"],["Lima","Sao .

qq_44716544的博客 375

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

力扣Day25

414、第三大的数 给你一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。 set是无序(不能保证元素的排列顺序:存在set集合哪个位置由这个值的hashCode决定,String类并不是说根据hashcode的值从小到大排序)、不重复的集合。 如何求hashCode: 1、Integer类:他们的hashCode就是数字本身。 2、String类:(空字符串的哈希值为0) String类不是根据hashCode的值从小到大排序,但是Integer类会根据h...

qq_51329170的博客 364

2021年10月LeetCode每日一题

目录(模拟-简单)旅行终点站 (模拟-简单)旅行终点站 题目链接 class Solution { public: string destCity(vector<vector<string>>& p) { int n = p.size(); unordered_map<string,int> mp; for (int i = 0; i < n; i ++){ mp[p[i][0

欢迎来到我的世界 863

iOS LeetCode 汇总(400 ~ 499)

第 N 位数字

HumorousGhost 1114

Java练习 day6

java练习

qq_56086076的博客 205

算法提升

作为一名准软件开发工程师,算法当然是必须要研究探索的东西。为了算法能力得到更好的提升,博主开始在leedcode上刷题。在leedcode上,我按照标签分类的顺序锻炼自己每一部分的能力。标签分类如下图: 介于数学对算法的重要性,我先是对“数学”进行学习。每天三道,从简单题刷起,一点一点总结。希望可以对自学算法的小伙伴有用处。 第一周: 答案:2020-09-06 — 2020-09-13 2020-09-06 第一题: 十进制整数的反码 第二题:最小移动次数使数组元素相等 第三题:最少移动次数使数组元素

Excellencest的博客 550

leetcode(简单)

解法1: 解法2: 回文数 解法1: 解法2: 罗马数字转整数 最长公共前缀 解法1:分治 解法2:纵向扫描 解法3:横向扫描 有效的括号 合并两个有序链表 删除有序数组中的重复项 移除元素 实现strStr 解法1:暴力 解法2:KMP 搜索插入位置 最大数组和 解法1:贪心 解法2:分治 最后一个单词长度 加一 二进制求和 x的平方根 解法1:直接调库 解法2:袖珍计算器算法 解法3:二分法 爬楼梯 解法1:非递归 解法2:非递归 解法3:矩阵快速幂 删除排序链表中的重复元素 合并两

qq_43716830的博客 3823

Python机器学习:从零基础到项目实战

当您翻开此书,您正踏入一场数据与智慧的修行。机器学习,并非冰冷的符码,而是机器模拟人类洞察世界的法门。本书将带您,以Python为舟,泛游于算法之海。我们不只传授“术”,更探求其后的“道”——从数据的生灭流转中观照规律,于模型的迭代演进里体悟得失。愿您合上书卷时,收获的不仅是驾驭数据的技能,更有一双洞悉复杂、化繁为简的“智慧之眼”。现在,让我们一同启程。

YunWisdom 963

<LeetCode>414. 第三大的数

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

Sonihr的犀牛园 1636

LeedCode414. Third Maximum Number

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

MasssA 325

414 Third Maximum Number 第三大的数

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例 1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例 2:输入: [1, 2]输出: 2解释: 第三大的数不存在, 所以返回最大的数 2 .示例 3:输入: [2, 2, 3, 1]输出: 1解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。存在两个值为2...

weixin_30706507的博客 133
上一篇: ❤️连续面试失败后,我总结了57道面试真题❤️,如果时光可以倒流...(附答案,建议收藏)
下一篇: Java学习路线总结,搬砖工逆袭Java架构师
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2933原创
评论 62
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值