一 前言:
断更有些时间了,主要是自己的原因,要调整回来,坚持自己的选择。
二 原题如下:
给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
审题:
由题意要由三个数组成最大的乘积,存在下面的情况
情况一:只有一个正数
情况二:没有正数或者不止一个正数
针对情况一取最大数和最小的两个数相乘即可;争对情况二,将最大的三个数相乘即可。
解题思路:
思路一: 线性扫描依次取出各个数据按照上述两种情况简单处理
思路二: 将数据进行排序,排序后取数据进行判断。再这里选择用插入排序中的----直接插入排序来对数据进行排序。
有关直接插入排序的知识,在往期的文章中有介绍,有兴趣的可以了解一下。
直接插入排序,看这篇就够了
四 代码实现:
线性扫描:
//C实现:
int maximumProduct(int* nums, int numsSize){
int firMax=-1000;//标记最大值
int secMax=-1000;//标记次大值
int thrMax=-1000;//标记第三大值
int firMin=1000;//标记最小值
int secMin=1000;//标记次小值