C/C++每日一练(20230322)
创始人
2025-06-01 06:10:26

目录

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
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(" 总销售 ");elseprintf("平均销售\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 
using namespace std;class Solution
{
public:int maxProduct(vector &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 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 
using namespace std;class Solution
{
public:vector maxSlidingWindow(vector &nums, int k){vector ans;int n = nums.size();if (n == 0 || k > n)return ans;deque 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 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 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每日一练 专栏

相关内容

热门资讯

今年我省粮食产量达515.56... (来源:辽宁日报)转自:辽宁日报 图为在中储粮(盘锦)储运有限公司,装运粮食的重型卡车排起长队...
国家发展改革委部署促进投资止跌... (来源:辽宁日报)转自:辽宁日报 新华社北京12月13日电 (记者魏玉坤) 记者13日从全国发展和改...
江苏省实施《中华人民共和国森林... (来源:新华日报) 目 录 第一章 总则 第二章 森林、林木和林地权属管理...
姜堰数字化产品讲“活”理论 (来源:新华日报) □ 本报记者 卢佳乐 通讯员 姜宣 “王教授,您约我‘喝茶论道’,...
联合国维和部队在苏丹遇袭 6人... 转自:财联社【联合国维和部队在苏丹遇袭 6人死亡】财联社12月14日电,当地时间13日,苏丹武装部队...