本次是来参加一个训练营,但是因为自己经验和实力确实不足,因此写下题解
6174数字黑洞
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| int findshuzi(int n){ vector<int> arr; while(n != 0){ arr.push_back(n%10); n=n/10; } sort(arr.begin(),arr.end()); int a = 0; int b = 0; for(int i = arr.size()-1;i >= 0;--i){ a = a*10 + arr[i]; } for(int i = 0;i < arr.size();++i){ b = b*10 + arr[i]; } return a-b; } string f(int n){ if(n < 1000 && n > 9999)return ""; string result = to_string(n); while(n != 6174){ result += "->"; n = findshuzi(n); result += to_string(n); } return result; }
|
字符串匹配
给定一个字符串和一个字符串组,字符串中可以重复,排序,求出最大的匹配值(活动窗口)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| string maxword(string s,vector<char> arr){ if(s.size() == 0)return ""; if(arr.size() == 0)return ""; unordered_map<char,int> mp; for(int i = 0;i < arr.size();++i){ mp[arr[i]] = 1; } int left = 0; int right = 0; string temp = ""; string ans = ""; while(right <= (s.size()-1)){ if(!mp.count(s[right])){ ++right; left = right; temp = ""; }else{ temp += s[right]; if(temp > ans){ ans = ""; ans = temp; } right++; } } return ans; }
|
选择最大分
第一个点主要是数据处理分析,因为是字符串信息比较多,所以处理时间需要比较多
第二个点主要是bfs(具体我也有点忘记)
/* 在网上没有找到类似的题 */
一个无序数组中,两个数组的和为n,求出它的结果值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| vector<int> add_Sum(vector<int> arr,int n){ unordered_map<int,int> mp; vector<vector<int>> res; for(int i = 0;i < arr.size();++i){ if(mp.count(n-arr[i])){ res.push_back({n-arr[i],arr[i]}); if(mp.count(n-arr[i]) == 1){ mp.erase(n-arr[i]); }else{ mp[n-arr[i]]--; } }else{ mp[arr[i]]++; } } return res; }
|
Top k问题(暂时不会处理)
现在有大量文本文件(10000+),预计一共涉及单词数量1000W左右。要求并发计算,最终输出出现频率最高的100个单词及对应次数
思路应该是分块思路或者堆
将1000…..个数分成m组,每组寻找top K个数,得到m×K个数,在这m×k个数里面找top K个数。
hashmap底层实现和unordered_map的初始化
hashmap的底层一个数组方式存储和list列表,对于同一个数组下标的位置元素,即是key的hash值相同,key值不同。
Entry是hashMap中封装key-value键值对的
put方法:根据key的hash值,数组长度计算该Entry<key,value>的数组下标
hash表处理冲突问题:1、开放定址法,主要是线性探测;2、链地址法:将所有哈希地址相同的记录都链接在同一个链表中;3、再哈希法:产生冲突时计算另外一个哈希函数地址,直至冲突不再发生;4、建立一个公共溢出区;
计网的三握手 syn的特性
客户端发出SYN报文请求,服务器端响应SYN+ACK报文,客户端回应ACK报文。
SYN攻击:扩容,过滤网关防护,加固TCP/IP协议线。SYN网关,SYN代理
ISN:客户端和服务端交换ISN,以便让对方知道接下来接收数据的时候如何按照序列号组装数据;ISN是动态生成的。
RST攻击:关闭连接