2023/11/26 星期日 每日总结 Day10

发布时间 2023-11-27 22:07:34作者: Nix_wq
  1. 今日份的英语:晚上睡觉前看看吧
  2. 今日份的算法:没太有思路,第一想到的是暴力解法,却忽略了数学在算法思想中的重要性。当暴力解法的时间复杂度过高时,可以使用数学的思想转化一下,得出一个结论或者公式,这样就便于代码的编写。
  3. 今日份的SQL
  4. 今日份的八股
  5. 今日份的锻炼:
  6. 今日份的阅读
  7. 今日份的项目:Web课设博客部分前端基本搭建完成,页面布局更加游刃有余,卡片也做得更漂亮了!也学会了调样式的方法
  8. 今日份的科研:python学了很久,学了元组,字符串,序列,字典,确实有很多简单的方法
  9. 今日份的娱乐:暂无
  10. 今日份的绘画:要不今天画一幅?还是去学概率论捏
  11. 今日份的学习:同上
    我决定每天必须坚持的:科研学习+绘画+算法。加油加油加油!

一、算法

  1. c++ Hashmap
//建立Hashmap
unordered_map<int,int> Hashmap;
//建立迭代器
unordered_map<int,int>::iterator it;
//插入键值对
//insert函数
Hashmap.insert(make_pair<int,int>(1,3));
Hashmap.insert(make_pair(1,3));
//以上两种皆可
//通过键添加
Hashmap[3]=1;
//其他函数
it = Hashmap.begin() //指向哈希表的第一个容器
it = Hashmap.end() //指向哈希表的最后一个容器,实则超出了哈希表的范围,为空
Hashmap.size() //返回哈希表的大小
Hashmap.empty() //判断哈希表是否为空,返回值为true/false
Hashmap.clear() //清空哈希表

//通过key值查找键值对
it = Hashmap.find(2) //查找key为2的键值对是否存在 ,若没找到则返回Hashmap.end()
if(Hashmap.find(2)!=Hashmap.end()) //判断找到了key为2的键值对

//通过key值查找该key值下的键值对对数
Hashmap.count(1) //返回 1

//swap交换两个Hashmap的键值对
Hashmap1.swap(Hashmap2);
swap(Hashmap1,Hashmap2);

//哈希表遍历
//第一种
unordered_map<int, int> Hashmap;
for (auto p : Hashmap) {
	int front = p.first;   //key
    int end = p.second;   //value
}

//第二种
unordered_map<int, int> Hashmap;
for(auto it=Hashmap.begin();it!=Hashmap.end();it++)
{
    int front = it->first;   //key
    int end = it->second;   //value
}

//第三种
unordered_map<int,int> hash;
unordered_map<int,int>::iterator it;
it = hash.begin();
while(it != hash.end())
{
	int front= it->first;   //key
	int end = it->second;   //value
	it++;
}

//原文链接:https://blog.csdn.net/Misty_Rain_/article/details/122971817
  1. 题解:今天的算法不太会,只能想到暴力解决的思路,却不会把问题转化。主要思路贴在下面图上,但是还有一些问题,就是如何避免重复计算字符出现的次数--确定该字符唯一出现的区间,这里不是很懂,这样就能避免重复计算了吗??

过啦!

class Solution {
public:
    int uniqueLetterString(string s) {
	//哈希表记录每个字母出现的所有下标,存在vector<int>里面
        unordered_map<char,vector<int>> mp;
        for(int i=0;i<s.length();i++){
            mp[s[i]].push_back(i);
        }
        int ans = 0;
        for(auto p : mp){
            vector<int> nums = p.second;
            int index=0;
            int left = 0;
            int right = 0;
			//找到相应的index,left和right
            for(int i=0;i<nums.size();i++){
                if(nums.size()==1){
                    index = nums[i];
                    left = 0;
                    right = s.length()-1;
                }else {
                    if(i==0){
                        index = nums[i];
                        left = 0;
                        right = nums[i+1]-1;
                    }else if(i==nums.size()-1){
                        index = nums[i];
                        left = nums[i-1]+1;
                        right = s.length()-1;
                    }else {
                        index = nums[i];
                        left = nums[i-1]+1;
                        right = nums[i+1]-1;
                    }
                }
                ans += (index-left+1)*(right-index+1);
            }
        }
        return ans;
    }
};

二、Web课设

  1. a标签样式修改
<style>
a {
    text-decoration: none;
    color: #000;
}

/* 状态一: 未被访问过的链接 */
a:link {
    text-decoration: none;
    color: #000;
}

/* 状态二: 已经访问过的链接 */
a:visited {
    text-decoration: none;
    color: #000;
}

/* 状态三: 鼠标划过(停留)的链接(默认红色) */
a:hover {
    text-decoration: none;
    color: #000;
}
/* 状态四: 被点击的链接 */
a:active {
    text-decoration: none;
    color: #000;
}
</style>
  1. 富文本编辑器MdEditor
1.下载 npm install md-editor-v3
2.引入(与上面博客不同)
import 'md-editor-v3/lib/style.css';
import { MdEditor } from 'md-editor-v3';
3.使用:
<MdEditor  :toolbarsExclude="['link', 'mermaid', 'katex', 'github','image']">
</MdEditor>
  1. el-input带来的调试样式小技巧
    右键-检查-找到大体的位置,点击右边元素,下面会出现css样式,就可以可以找到具体的class和id名,如果需要hover,focus,或active的话,就在左边做相应的操作,右下同样会显示出相应的css样式,如果直接写claas不行,记得使用深层选择器::deep或者/deep/
    如图:通过这种方式找到了el-input在focus时的样式
    image
    image

  2. 样式美化:卡片在鼠标hover时悬浮

第一行X改成Y,就变成向上位移
第三行能让动画过渡更自然,不生硬,注意需要在父元素都加上才能生效
.blog-card:hover {
    transform: translateX(-10px);
    box-shadow: 0 26px 40px -24px rgb(0 36 100 / 50%);
    transition: all 0.6 ease;
}

image
5. Elmessage.confirm
image
6. 父子组件传值 & 跳转传值

  • 父子组件传值
    父组件:引用并使用子组件,绑定变量传值
    image
    子组件:定义props,接收变量
    image
  • router跳转传值
    image