上午是《最优化方法》,起床一想到下午还要开会就头疼。
今天讲什么无约束的最优化,和之前比全是证明题,看到人脑子疼,刚开始讲两个例题还能懂一些,后面越听越听不懂,迷迷糊糊就讲完了,边听还边等开会的消息,到中文还是没有。
下午会宿舍还是等消息,到2点还是没有,起来边等边复盘之前写的笔记。
到3点,还是没有消息,就开始边干活,边等消息。
还是刷了3道题:
1简单,2中等。
49. 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
vector<vector<string>> ans;
int n=strs.size();
unordered_map<string,vector<int>> hash;
for(int i=0;i<n;i++)
{
string s=strs[i];
sort(s.begin(),s.end());
hash[s].emplace_back(i);
}
int c=0;
for(auto it = hash.begin(); it != hash.end(); ++it)
{
ans.emplace_back();// 先添加一个空的子向量到ans,此时ans[c]存在
vector<int> num=it->second;
for(int j=0;j<num.size();j++)
{
ans[c].emplace_back(strs[num[j]]);
}
c++;
}
这边学一下哈希表的第二个值可以是数组,直接存放内容,官解是直接存放string,试了下用int存放也可以。
二维数组进行插入时,要先添加一个空的子向量到ans,此时ans[c]存在。
451. 根据字符出现频率排序
给定一个字符串 s ,根据字符出现的 频率 对其进行 降序排序 。一个字符出现的 频率 是它出现在字符串中的次数。
int n=s.size();
unordered_map<char,int> hash;
for(int i=0;i<n;i++)
{
char ch=s[i];
hash[ch]++;
}
string ans="";
// 将频率和字符存入vector,便于排序(用vector替代哈希表遍历找最大值)
vector<pair<char, int>> vec(hash.begin(), hash.end());
// 按频率从高到低排序
sort(vec.begin(), vec.end(), [](const pair<char, int>& a, const pair<char, int>& b)
{
return a.second > b.second;
});
int m = vec.size();
for (int i = 0; i < m; i++)
{
char ch = vec[i].first; // 提取当前字符
for (int j = 0; j < c; j++) {
ans += ch;
}
}
题目实现上应该没有什么难度,应该能够正常写出来,但是学习一下这个:
sort(vec.begin(), vec.end(), [](const pair<char, int>& a, const pair<char, int>& b)
{
return a.second > b.second;
});
怎么直接对这个2个参数的数组进行排序,不然直接写的话会超出内存。
然后再等的过程中,忙里偷闲把昨天看到的一个静态的个人博客网站搭了一下,是mizuki主题用astro写的,我对方面也不是很熟,就是装了环境,在本低修改了东西就能跑了,看了文档说明书,稍微能看看那个config,ts的内容,TypeScript跟java有关吧,可惜我的java很垃圾也不太懂,不过前端的东西也是能看看的,稍微改了下页面,后续继续搭建符合自己的。

后面在看看继续了解一下,修改一些自己的内容,能写写自己的东西,然后看看能不能部署到服务器上,昨天的那个看的有点道心破碎,还是比较愿意看这个了。
晚上上完课回来,还是看了一个小时数据库的内容,然后接着折腾网站。
感觉一天什么都干了点,但好像又没干什么。
