目录
1. 排序问题 🌟
2. 查找小值 🌟
3. 寻找峰值 🌟🌟
🌟 每日一练刷题专栏 🌟
Golang每日一练 专栏
Python每日一练 专栏
C/C++每日一练 专栏
Java每日一练 专栏
1. 排序问题
输入10个数,按绝对值从大到小排序输出。
输入形式:输入10个float实数
输出形式:保留小数点后两位有效数字;输出从大到小排列
以下程序实现了这一功能,请你填补空白处的内容:
```c++
#include <math.h>
#include <stdio.h>
void paixu(float *p, int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (fabs(p[j]) < fabs(p[j + 1]))
{
float tmp;
_______________;
}
}
}
}
int main()
{
float f[10];
int i;
for (i = 0; i < 10; i++)
scanf("%f", &f[i]);
paixu(f, 10);
for (i = 0; i < 10; i++)
printf("%.2f ", f[i]);
return 0;
}
```
出处:
https://edu.csdn.net/practice/28002599
代码:
#include <math.h>
#include <stdio.h>
void paixu(float *p, int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (fabs(p[j]) < fabs(p[j + 1]))
{
float tmp;
tmp = p[j];
p[j] = p[j + 1];
p[j + 1] = tmp;
}
}
}
}
int main()
{
float f[10];
int i;
for (i = 0; i < 10; i++)
scanf("%f", &f[i]);
paixu(f, 10);
for (i = 0; i < 10; i++)
printf("%.2f ", f[i]);
return 0;
}
输出:
略
2. 输入一个数查找比它小的元素
一个整型数组有10元素,请先给这10个元素赋值,然后随便输入一个数,最后输出数组中比这个数小的所有元素,每个数用空格隔开,如果没有找到,则输出not find。
以下程序实现了这一功能,请你填补空白处内容:
```c++
#include <stdio.h>
int main()
{
int a[10], i, n;
int isfind = 0;
printf("please set array values:");
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
printf("please enter one num:");
scanf("%d", &n);
for (i = 0; i < 10; i++)
{
______________;
}
if (isfind)
printf("\n");
else
printf("not find\n");
return 0;
}
```
出处:
https://edu.csdn.net/practice/28002600
代码:
#include <stdio.h>
int main()
{
int a[10], i, n;
int isfind = 0;
printf("please set array values:");
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
printf("please enter one num:");
scanf("%d", &n);
for (i = 0; i < 10; i++)
{
if (a[i] < n)
{
isfind = 1;
printf("%d ", a[i]);
}
}
if (isfind)
printf("\n");
else
printf("not find\n");
return 0;
}
输出:
略
3. 寻找峰值
峰值元素是指其值严格大于左右相邻值的元素。
给你一个整数数组 nums
,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞
。
你必须实现时间复杂度为 O(log n)
的算法来解决此问题。
示例 1:
输入:nums = [1,2,3,1] 输出:2 解释:3 是峰值元素,你的函数应该返回其索引 2。
示例 2:
输入:nums = [1,2,1,3,5,6,4] 输出:1 或 5 解释:你的函数可以返回索引 1,其峰值元素为 2; 或者返回索引 5, 其峰值元素为 6。
提示:
1 <= nums.length <= 1000
-2^31 <= nums[i] <= 2^31 - 1
- 对于所有有效的
i
都有nums[i] != nums[i + 1]
出处:
https://edu.csdn.net/practice/28002601
代码:
#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
int findPeakElement(vector<int> &nums)
{
int l = 0, r = nums.size() - 1;
while (l < r)
{
int mid = l + (r - l) / 2;
if (nums[mid] > nums[mid + 1])
{
if (mid == 0 || nums[mid] > nums[mid - 1])
return mid;
else
r = mid;
}
else
{
if (mid + 1 == nums.size() - 1 || nums[mid + 1] > nums[mid + 2])
return mid + 1;
else
l = mid + 1;
}
}
return l;
}
};
int main()
{
Solution s;
vector<int> nums = {1,2,3,1};
cout << s.findPeakElement(nums) << endl;
nums = {1,2,1,3,5,6,4};
cout << s.findPeakElement(nums) << endl;
return 0;
}
输出:
2
5
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页:https://hannyang.blog.csdn.net/
Golang每日一练 专栏 | |
Python每日一练 专栏 | |
C/C++每日一练 专栏 | |
Java每日一练 专栏 |