leetcode刷题55.环形链表——Java版

Posted 一条coding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode刷题55.环形链表——Java版相关的知识,希望对你有一定的参考价值。

⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐

排序之后最大乘积就两种情况:1、如果全是正数就是最后三个数相乘 2、如果有负数最大的乘机要么是最后三个数相乘,要么是两个最小的负数相乘再乘以最大的正数

——leetcode此题热评

前言

哈喽,大家好,我是一条。

糊涂算法,难得糊涂

《糊涂算法》专栏上线倒计时——7天

Question

628. 三个数的最大乘积

难度:简单

给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

示例 1:

输入:nums = [1,2,3]
输出:6

示例 2:

输入:nums = [1,2,3,4]
输出:24

示例 3:

输入:nums = [-1,-2,-3]
输出:-6

Solution

  • 注意可以有负数
  • 注意两个负数相乘为正数

三个数乘积最大有几种情况?

  • 三个最大正数的乘积,以及两个最小负数与最大正数的乘积,二者之间的最大值即为所求答案。
  • 如何找打最大正数和最小负数?
  • 排序 or 线性扫描

Code

所有leetcode代码已同步至github

欢迎star

/**
 * @author 一条coding
 */
class Solution {
    public int maximumProduct(int[] nums) {
      // 升序
        Arrays.sort(nums);
        int n = nums.length;
        return Math.max(nums[0] * nums[1] * nums[n - 1], nums[n - 3] * nums[n - 2] * nums[n - 1]);
    }
}

Result

复杂度分析

  • 时间复杂度:O(N)

🌈寻宝

⭐今天是坚持刷题更文的第47/100天

⭐各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力

⭐更多算法题欢迎关注专栏《leetcode》

为了回馈各位粉丝,礼尚往来,给大家准备了一些算法教学视频和电子书

需要的小伙伴可以点这里

以上是关于leetcode刷题55.环形链表——Java版的主要内容,如果未能解决你的问题,请参考以下文章

leetcode刷题16.环形链表——Java版

LeetCode Java刷题笔记—141. 环形链表

Leetcode刷题Python142.环形链表II

Leetcode刷题100天—141.环形链表(链表)—day01

Leetcode刷题100天—141.环形链表(链表)—day01

LeetCode刷题141-简单-环形链表