628.三个数的最大乘积
给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。
示例 1:
输入:nums = [1,2,3]
输出:6
示例 2:
输入:nums = [1,2,3,4]
输出:24
示例 3:
输入:nums = [-1,-2,-3]
输出:-6
提示:
3 <= nums.length <= 104
-1000 <= nums[i] <= 1000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
int maximumProduct(vector<int>& nums) {
int len=nums.size();
if(len<3) return 0;
sort(nums.begin(),nums.end());
int max1,max2,max3;
if(nums[0]>0||nums[len-1]<0)
{
max1=nums[len-1];
max2=nums[len-2];
max3=nums[len-3];
return max1*max2*max3;
}
else if(nums[len-2]<0)
{
max1=nums[0];
max2=nums[ 1];
max3=nums[len-1];
return max1*max2*max3;
}
else if(nums[len-1]*nums[len-2]*nums[len-3]>nums[len-1]*nums[0]*nums[1]&&nums[len-3]>0)
{
max1=nums[len-1];
max2=nums[len-2];
max3=nums[len-3];
return max1*max2*max3;
}
else
{
return nums[len-1]*nums[0]*nums[1];
}
}
};
思路:
1.要先设置一个变量len=nums.size();//这是因为要确定数组长度
2.因为数组里的数字是杂乱无章的,所以要先进行排序(这里我用了冒泡但是最后是超时了)sort(nums.begin(),nums.end());题解都是这样进行排序的,用了之后就通过了
3.因为要三个元素的乘积的最大值,所以要设置三个变量max1,max2,max3
4.这里有三种情况第一种是全部的元素大于0,那就用数组最后三个元素相乘即可
5.第二种情况是只有一个正数,那就用数组元素的第一个元素和第二个元素还有最后一个元素进行相乘因为第一个和第二个元素是数组最小的两个数并且为负数,所以相乘之后得最大的两个正数再成一个最大的正数即可
6.第三种就是如果数组最后三个元素相乘和数组第一个和第二个还有最后一个相乘进行比较并且倒数第三个元素要大于0,因为要保证第二个数是大于0的
9.回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
bool isPalindrome(int x) {
if(x<0||x%10==0&&x!=0)
return false;
long b=0;
int a=x;
while(x)
{
b=b*10+x%10;
x=x/10;
}
return b==a?true:false;
}
};
思路:
1.首先回文数不能小于0或者数字的尾部不能为0,因为这样不能构成回文数
例如:-121 倒过来之后121-这不是回文数
例如:1210 倒过来之后变成0121,这不是一个回文数因为数字的首部不能为0除法这个数本身就为0
2.要是都不是上面的类型那就用一个循环来处理这个数,我们可以设置一个变量b=0;必须等于0
并且为long,因为这个数处理了之后可能会溢出,所以用long来避免这个问题,再设置一个变量a=x;
b=b*10+x%10;这个表达式是为了把每次将x最后一位数字进行加和然后把前一位的数字乘10就能达到倒置的目的
3.最后一步判断一下b是不是等于x等于就是回文数不等于就不是
例如:121倒置之后还是121