IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【题解】《算法零基础100讲》(第17讲) 线性枚举(一) - 最值算法(java版) -> 正文阅读

[数据结构与算法]【题解】《算法零基础100讲》(第17讲) 线性枚举(一) - 最值算法(java版)

😁算法小白欢迎加入此社区:https://bbs.csdn.net/forums/hero?category=0
由英雄大佬带领的抱团学算法队伍,从0开始,期待你的加入
🥳
在这里插入图片描述
本博文是对此文章习题所作的题解,如有不足,请多指教:https://blog.csdn.net/WhereIsHeroFrom/article/details/121174370

今日题解:
第一题:https://leetcode-cn.com/problems/max-consecutive-ones/
在这里插入图片描述

直接遍历,符合相应的条件就让对应的个数相加。

class Solution {
    public int findMaxConsecutiveOnes(int[] nums) {
        int number = 0;
        int count = 0;
        for(int i = 0; i < nums.length; i++){
            if(nums[i] == 1){
                count++;
                number = Math.max(number, count);
            }else{
                count = 0;
            }   
        }
        return number;
    }
}

在这里插入图片描述
第二题:https://leetcode-cn.com/problems/maximum-product-of-two-elements-in-an-array/
在这里插入图片描述

直接用sort函数排序,然后我们把数组里面的每一位的数字先减去一,然后我们一定知道最大值就出现在最后两位。

class Solution {
    public int maxProduct(int[] nums) {
        Arrays.sort(nums);
        int i,max; 
        for(i=0; i<nums.length; i++){
            nums[i] = nums[i] - 1;
        }
        int len = nums.length;
        max = nums[len-1] * nums[len-2];
        return max;
    }
}

在这里插入图片描述

第三题:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/
在这里插入图片描述
在这里插入图片描述

一步解决,直接重拳出击!

class Solution {
    public int findMin(int[] nums) {
        Arrays.sort(nums);
        return nums[0];
    }
}

在这里插入图片描述

或者使用二分法,无非就是用中间的值与两边的关系,因为题里面说了这个数组原来是升序的,所以我们不管怎么转,一定是要考虑中间的那个数字和左右两边的关系,比如中间的数字比右边的数字大,是不是我们的开始那个最小的数字在我们的此时中间值与最右端之间。

class Solution {
    public int findMin(int[] nums) {
        int low = 0, high = nums.length-1;
        while(low < high){
            int mid = low + (high - low)/2;
            if(nums[mid] <= nums[high]){
                high = mid;
            }else{
                low = mid+1;
            }
        }
        return nums[low];
    }
}

在这里插入图片描述
第四题:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/
在这里插入图片描述

一样的题目,这里直接重拳出击了。

class Solution {
    public int findMin(int[] nums) {
         Arrays.sort(nums);
         return nums[0];
    }
}

在这里插入图片描述
第五题:https://leetcode-cn.com/problems/third-maximum-number/
在这里插入图片描述

对于重复的元素处理没有想到快速的方法,参考了一位大佬的想法,先去重,再排序。针对数组里面的元素个数进行分类讨论。

class Solution {
    public int thirdMax(int[] nums) {
        Set set= new HashSet();//发生多态(Set集合具有互异性)
        for (int i:nums) {
            set.add(i);
        }
        Object[] array=set.toArray();
        Arrays.sort(array);
        int len=array.length;
        if(len>=3){
            return (int) array[len-3];
        }
        return (int) array[len-1];
    }
}

在这里插入图片描述

第六题:https://leetcode-cn.com/problems/maximum-product-of-three-numbers/
在这里插入图片描述

三个数的最值,那么就要考虑是否含有负数。我们可以先对数组进行升序排序,如果我们的数组开始没有负数,或者只有一个负数,那么我们可以确定,最值出现在最后三位。但是如果有两个负数,或者三个甚至更多,我们可以确定,两个负数才可以诞生一个正数,所以我们只需要判断排序完后的前两位和最后一位的乘积与最后三位的乘积大小。

class Solution {
    public int maximumProduct(int[] nums) {
        Arrays.sort(nums);
        int max = nums[nums.length-1]*nums[nums.length-2]*nums[nums.length-3];
        int maxn = nums[0]*nums[1]*nums[nums.length-1];
        if(max > maxn){
            return max;
        }else{
            return maxn;
        }
    }
}

在这里插入图片描述

有问题欢迎留言,欢迎加入“万人千题”社区,在这里一起努力。

(今日立冬,今日大雪)

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:49:07  更:2021-11-09 19:50:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:38:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码