心情
题目在此
麻木了😭
第一题(学生分数的最小差值)
class Solution {
public:
int minimumDifference(vector<int>& nums, int k) {
sort(nums.begin(),nums.end());
int n = nums.size();
int res = 999999;
for (int i = 0; i+k-1 < n; i ++){
if (res > nums[i+k-1]-nums[i])res = nums[i+k-1]-nums[i];
}
return res;
}
};
第二题(找出数组中的第 K 大整数)
字符串数组排序。
class cmp{
public:
bool operator()(const string &a,const string &b) {
if (a.size() > b.size())return true;
if (a.size() < b.size())return false;
for (int i = 0; i < a.size(); i ++){
if (a[i] > b[i])return true;
if (a[i] < b[i])return false;
}
return false;
}
};
class Solution {
public:
string kthLargestNumber(vector<string>& nums, int k) {
sort(nums.begin(),nums.end(),cmp());
return nums[k-1];
}
};
第三题(完成任务的最少工作时间段)
简单状态压缩DP(我没做出来😭 )
d
p
[
s
]
[
t
]
表
示
状
态
s
剩
余
时
间
t
最
少
的
需
要
的
时
间
段
数
量
dp[s][t]表示状态s剩余时间t最少的需要的时间段数量
dp[s][t]表示状态s剩余时间t最少的需要的时间段数量
int dp[1<<14][18]; //2^14中状态
class Solution {
public:
int minSessions(vector<int>& tasks, int sessionTime) {
int n = tasks.size();
int lim = 1<<n;
memset(dp, -1, sizeof(dp)); //初值设置为-1,便于识别
dp[0][0] = 0; //一个工作都没选,不用耗时间
for (int s = 0; s < lim; s++){
for (int lt = 0; lt <= sessionTime; lt++){
if (dp[s][lt] == -1) continue;//这个状态没有被更新过,就不能用它来更新别的状态
for (int i = 0; i < n; i++){
if ((s>>i)&1) continue; //第i个位子的工作已经在状态里面了
if (tasks[i] <= lt){//时间足够第i个工作,那就把第i个工作加入当前这个时间段
//如果dp[s | (1<<i)][lt - tasks[i]]这个状态还没更新过,或者这个状态的值大于dp[s][lt]的值,那么就需要更新。
if (dp[s | (1<<i)][lt - tasks[i]] == -1 || dp[s | (1<<i)][lt - tasks[i]] > dp[s][lt])
dp[s | (1<<i)][lt - tasks[i]] = dp[s][lt];
}else{ //当前状态剩余时间不够这个工作,那么就多加一个时间段
//如果dp[s | (1<<i)][lt - tasks[i]]这个状态还没更新过,或者这个状态的值大于dp[s][lt]+1的值,那么就需要更新。
if (dp[s | (1<<i)][sessionTime - tasks[i]] == -1 || dp[s | (1<<i)][sessionTime - tasks[i]] > dp[s][lt] + 1)
dp[s | (1<<i)][sessionTime - tasks[i]] = dp[s][lt] + 1;
}
}
}
}
int ans = -1;
for (int i = 0; i <= sessionTime; i++){
if (dp[lim - 1][i] == -1) continue;
if (ans == -1 || ans > dp[lim - 1][i]) ans = dp[lim - 1][i];//枚举所有满足条件的状态,取一个最小值。
}
return ans;
}
};
第四题(不同的好子序列数目)
下 次 一 定 😭 下次一定😭 下次一定😭