例1 最小的k个数
输入n个整数,找出其中最小的k个数。
5 3
5 4 3 2 11 2 3
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[99];
int n,k;
cin>>n>>k;
for(int i = 0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
for (int i = 0; i <k; i ++ )
{
cout<<a[i]<<" ";
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int input[N];
int main()
{
int n, k;
cin >> n >> k;
for(int i = 1; i <= n;i++)
scanf("%d", &input[i]);
sort(input + 1, input + n + 1);
for (int i = 1; i <= k; i ++ )
{
cout<<input[i]<<" ";
}
return 0;
}
/*小问题:把sort里面的内容去掉加一 输出的for遍历从0开始
class Solution {
public:
vector<int> getLeastNumbers(vector<int>& arr, int k) {
sort(arr.begin(),arr.end());
vector<int> res;
for(int i = 0; i < k; i++)
res.push_back(arr[i]);
return res;
}
};
例2 和为S的两个数字
输入一个数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。
输入:nums = [2,7,11,15], target = 9
输出:[2,7] 或者 [7,2]
class Solution {
public:
vector<int> findNumbersWithSum(vector<int>& nums, int target) {
unordered_set<int> S;
for (auto x : nums)
{
if (S.count(target - x)) return {
x, target - x};
S.insert(x);
}
}
};