目录
1. 成绩分布 ※
2. 汇总区间 🌟
3. 矩阵置零 🌟🌟
🌟 每日一练刷题专栏 🌟
Golang每日一练 专栏
Python每日一练 专栏
C/C++每日一练 专栏
Java每日一练 专栏
1. 成绩分布
原标题:统计某一单科成绩各分数段的分布人数
设某班有若干人,写一程序统计某一单科成绩各分数段的分布人数,每人的成绩随机输入,输入负数表示输入结束。
要求按下面的格式输出统计结果(“”表示实际分布人数) 0~39 40~49 50~59 …… 90~100 **
出处:
https://edu.csdn.net/practice/26466618
代码:
#include <string>
#include <iostream>
using namespace std;
int main()
{
int result[12] = {0};
int gold;
while (cin>>gold) {
if (gold < 0) {
break;
}
int code = gold / 10;
if (code < 4) {
result[3] ++;
}
else if(code == 10) {
result[9] ++;
}
else {
result[code] ++;
}
}
string word[] = {"0~39",
"40~49",
"50~59",
"60~69",
"70~79",
"80~89",
"90~100"};
for (int i=0; i<7; i++) {
cout<<word[i]<<" "<<result[i+3]<<endl;
}
return 0;
}
输出:
略
2. 汇总区间
给定一个无重复元素的有序整数数组 nums
。
返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表。也就是说,nums
的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums
的数字 x
。
列表中的每个区间范围 [a,b]
应该按如下格式输出:
"a->b"
,如果a != b
"a"
,如果a == b
示例 1:
输入:nums = [0,1,2,4,5,7] 输出:["0->2","4->5","7"] 解释:区间范围是: [0,2] --> "0->2" [4,5] --> "4->5" [7,7] --> "7"
示例 2:
输入:nums = [0,2,3,4,6,8,9] 输出:["0","2->4","6","8->9"] 解释:区间范围是: [0,0] --> "0" [2,4] --> "2->4" [6,6] --> "6" [8,9] --> "8->9"
示例 3:
输入:nums = [] 输出:[]
示例 4:
输入:nums = [-1] 输出:["-1"]
示例 5:
输入:nums = [0] 输出:["0"]
提示:
0 <= nums.length <= 20
-2^31 <= nums[i] <= 2^31 - 1
nums
中的所有值都 互不相同nums
按升序排列
出处:
https://edu.csdn.net/practice/26466619
代码:
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
vector<string> summaryRanges(vector<int> &nums)
{
int n = nums.size();
vector<string> ans;
int i = 0;
while (i < n)
{
int j = i;
while (j + 1 < n && nums[j + 1] == nums[j] + 1)
j++;
if (i == j)
ans.push_back(to_string(nums[i]));
else
ans.push_back(to_string(nums[i]) + "->" + to_string(nums[j]));
i = j + 1;
}
return ans;
}
};
string vectorToString(vector<string> vect) {
stringstream ss;
ss << "[";
for (size_t i = 0; i < vect.size(); i++)
ss << vect[i] << (i < vect.size() - 1 ? "," : "");
ss << "]";
return ss.str();
}
int main() {
Solution s;
vector<int> nums = {0,1,2,4,5,7};
cout << vectorToString(s.summaryRanges(nums)) << endl;
nums = {0,2,3,4,6,8,9};
cout << vectorToString(s.summaryRanges(nums)) << endl;
return 0;
}
输出:
[0->2,4->5,7]
[0,2->4,6,8->9]
3. 矩阵置零
给定一个 m x n
的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
进阶:
- 一个直观的解决方案是使用
O(mn)
的额外空间,但这并不是一个好的解决方案。 - 一个简单的改进方案是使用
O(m+n)
的额外空间,但这仍然不是最好的解决方案。 - 你能想出一个仅使用常量空间的解决方案吗?
示例 1:
输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]
示例 2:
输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
提示:
m == matrix.length
n == matrix[0].length
1 <= m, n <= 200
-2^31 <= matrix[i][j] <= 2^31 - 1
以下程序实现了这一功能,请你填补空白处内容:
```c++
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
void setZeroes(vector<vector<int>> &matrix)
{
int i = matrix.size();
int j = matrix[0].size();
vector<int> hang(i);
vector<int> lie(j);
for (int m = 0; m < i; m++)
{
for (int n = 0; n < j; n++)
{
if (!matrix[m][n])
{
hang[m] = lie[n] = true;
}
}
}
for (int m = 0; m < i; m++)
{
for (int n = 0; n < j; n++)
{
__________________;
}
}
}
};
```
出处:
https://edu.csdn.net/practice/26466620
代码:
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
void setZeroes(vector<vector<int>> &matrix)
{
int i = matrix.size();
int j = matrix[0].size();
vector<int> hang(i);
vector<int> lie(j);
for (int m = 0; m < i; m++)
{
for (int n = 0; n < j; n++)
{
if (!matrix[m][n])
{
hang[m] = lie[n] = true;
}
}
}
for (int m = 0; m < i; m++)
{
for (int n = 0; n < j; n++)
{
if (hang[m] || lie[n])
matrix[m][n] = 0;
}
}
}
};
string vectorToString(vector<int> vect) {
stringstream ss;
ss << "[";
for (size_t i = 0; i < vect.size(); i++)
ss << vect[i] << (i < vect.size() - 1 ? "," : "");
ss << "]";
return ss.str();
}
string vector2DToString(vector<vector<int>> vect) {
string res = "[";
size_t len = vect.size();
for (size_t i = 0; i < len; i++)
{
res += vectorToString(vect[i]);
if (i+1 != len)
res += ",";
}
res += "]";
return res;
}
int main() {
Solution s;
vector<vector<int>> matrix = {{1,1,1},{1,0,1},{1,1,1}};
s.setZeroes(matrix);
cout << vector2DToString(matrix) << endl;
matrix = {{0,1,2,0},{3,4,5,2},{1,3,1,5}};
s.setZeroes(matrix);
cout << vector2DToString(matrix) << endl;
return 0;
}
输出:
[[1,0,1],[0,0,0],[1,0,1]]
[[0,0,0,0],[0,4,5,0],[0,3,1,0]]
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页:https://hannyang.blog.csdn.net/
Golang每日一练 专栏 | |
Python每日一练 专栏 | |
C/C++每日一练 专栏 | |
Java每日一练 专栏 |