目录
1. 商家商品销售量统计 🌟
2. 乘积最大子数组 🌟🌟
3. 滑动窗口最大值 🌟🌟🌟
🌟 每日一练刷题专栏 🌟
Golang每日一练 专栏
Python每日一练 专栏
C/C++每日一练 专栏
Java每日一练 专栏
1. 商家商品销售量统计
现在有一个网站上半年的商品销售量,请你写一段代码帮助店主统计前半年的总销量和平均销量。
商品销售表
1月份 2月份 3月份 4月份 5月份 6月份 总销量 平均销量
64 53 77 59 61 42 0 0
(1)函数中应定义一个包含8个元素的一维数据,用来存放6个月的商品销量和统计后的总销量及平均销量;
(2)完成6个月销量的输入;
(3)计算半年的总销量及平均销量;
(4)按照程序运行效果图,输出商品销量表。
出处:
https://edu.csdn.net/practice/23387034
代码:
#include<stdio.h>
int main()
{
int a[8],s=0;
printf("----------商家商品销售统计----------\n");
printf("\n");
printf("请输入商品6个月的销售量:");
for (int i = 0; i < 6; i++)
{
scanf("%d", &a[i]);
s += a[i];
}
printf("\n\t\t\t商品销量表\t\t\t\n");
printf("—————————————————————————————————\n");
for (int i = 1; i <= 8; i++)
{
if (i <= 6)
printf(" %d月份 ", i);
else if (i == 7)
printf(" 总销售 ");
else
printf("平均销售\n");
}
for (int i = 0; i < 8; i++)
{
if (i < 6)
printf(" %d |", a[i]);
else if (i == 6)
{
a[i] = s;
printf(" %d |", a[i]);
}
else
{
a[i] = s / 6;
printf(" %d |",a[i]);
}
}
return 0;
}
输入输出:
----------商家商品销售统计----------
请输入商品6个月的销售量:64 53 77 59 61 42
商品销量表
—————————————————————————————————
1月份 2月份 3月份 4月份 5月份 6月份 总销售 平均销售
64 | 53 | 77 | 59 | 61 | 42 | 356 | 59 |
2. 乘积最大子数组
给你一个整数数组 nums
,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
示例 1:
输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。
示例 2:
输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
出处:
https://edu.csdn.net/practice/23387032
代码:
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
int maxProduct(vector<int> &nums)
{
int ans = -10000000;
int n = nums.size();
int max1 = 1, min1 = 1, mx, mn;
for (int i = 0; i < n; i++)
{
mx = max1;
mn = min1;
max1 = max(mx * nums[i], max(nums[i], mn * nums[i]));
min1 = min(mn * nums[i], min(nums[i], mx * nums[i]));
ans = max(max1, ans);
}
return ans;
}
};
int main()
{
Solution s;
vector<int> nums = {2,3,-2,4};
cout << s.maxProduct(nums) << endl;
nums = {-2,0,-1};
cout << s.maxProduct(nums) << endl;
return 0;
}
输入输出:
6
0
3. 滑动窗口最大值
给你一个整数数组 nums
,有一个大小为 k
的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k
个数字。滑动窗口每次只向右移动一位。
返回滑动窗口中的最大值。
示例 1:
输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 --------------- ----- [1 3 -1] -3 5 3 6 7 3 1 [3 -1 -3] 5 3 6 7 3 1 3 [-1 -3 5] 3 6 7 5 1 3 -1 [-3 5 3] 6 7 5 1 3 -1 -3 [5 3 6] 7 6 1 3 -1 -3 5 [3 6 7] 7
示例 2:
输入:nums = [1], k = 1 输出:[1]
示例 3:
输入:nums = [1,-1], k = 1 输出:[1,-1]
示例 4:
输入:nums = [9,11], k = 2 输出:[11]
示例 5:
输入:nums = [4,-2], k = 2 输出:[4]
提示:
1 <= nums.length <= 10^5
-10^4 <= nums[i] <= 10^4
1 <= k <= nums.length
出处:
https://edu.csdn.net/practice/23387033
代码:
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
vector<int> maxSlidingWindow(vector<int> &nums, int k)
{
vector<int> ans;
int n = nums.size();
if (n == 0 || k > n)
return ans;
deque<int> que;
for (int i = 0; i < n; i++)
{
if (!que.empty())
{
if (i >= que.front() + k)
que.pop_front();
while (!que.empty() && nums[i] >= nums[que.back()])
que.pop_back();
}
que.push_back(i);
if (i + 1 >= k)
ans.push_back(nums[que.front()]);
}
return ans;
}
};
string vectorToString(vector<int> vect) {
stringstream ss;
ss << "[";
for (int i = 0; i < vect.size(); i++)
{
ss << to_string(vect[i]);
ss << (i < vect.size() - 1 ? "," : "]");
}
return ss.str();
}
int main()
{
Solution s;
vector<int> nums = {1,3,-1,-3,5,3,6,7};
cout << vectorToString(s.maxSlidingWindow(nums, 3)) << endl;
return 0;
}
输入输出:
[3,3,5,5,6,7]
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
Golang每日一练 专栏 | |
Python每日一练 专栏 | |
C/C++每日一练 专栏 | |
Java每日一练 专栏 |