筆記試験:
1. MySQLインデックス、クエリの速度を上げる通常のインデックス、フィールドの一意性を保証する一意のインデックス
2.プライベートアドレス:ローカルエリアネットワークで使用されるアドレス、NAT-ネットワークアドレス変換ネットワークアドレス変換、パブリックネットワークアドレスに変換
3つのIPアドレスがプライベートIPアドレスとして予約されています。
クラスA:10.0.0.0 ——— 10.255.255.255
クラスB:172.16.0.0-172.31.255.255
クラスC:192.168.0.0-192.168.255.255
3.メッセージの到着時間は異なりますが、TCPメッセージはソートされますが、UDPはソートされません
4.高い対称暗号化パフォーマンス、SSL暗号化には対称暗号化と非対称暗号化が含まれます
5.二重リンクリストはノードsを挿入します
6.車が20分以内に通過する確率は84%ですが、車が10分以内に通過する確率はどれくらいですか。
P(車の通過なしで20分)= 1-84%= 0.16; 0.16 = P(車の通過なしで最初の10分)* P(車の通過なしで最後の10分); P(車の通過なしで10分)= 0.4; P(車の通過ありで10分)後)= 0.6
7.38、25、74、63、52、48 use H(Key)= Key%7線形検出法の平均検索時間は(1 + 1 + 2 + 1 + 4 + 3)/ 6 = 2、ジッパー法を使用した平均検索回数は(1 + 1 + 2 + 1 + 2 + 1)/6=1.333
8.プロセス、スレッド
9.バブルソーティングの最も複雑な時間はO(n)であり、記録は1度便利です。スワップがない場合は、1度スキャンできます。平均的な複雑度はO(n²)です。
10. 32ノードの完全なバイナリツリーの深さは6です。
11タイムスライスが使い果たされると、ブロッキング状態ではなく、準備完了状態になります。
12.ファクトリーモード
1. 最も長い部分文字列
#include<bits\stdc++.h>
using namespace std;
int fun(string s){
int hash[256];
fill(hash, hash+256, -1);
int f=0,res=0;
for(int i=0;i<s.length();i++){
if(hash[s[i]]!=-1){
f = i-hash[s[i]];//找到相同的就更新f
}
else f = f+1;//没有相同的就直接+1
hash[s[i]] = i;
res = max(res, f);
}
return res;
}
int main(){
string s;
cin>>s;
cout<<fun(s);
return 0;
}
2.文字配列の完全な配列(ああ、完全な配列は書き込めない、皿)
3. 3で割り切れる最大の合計
アイデア:O(n)、すべての結果は1回のトラバース後に追加されます。ケース①res%3 == 0②res%3 == 1(1つの3サープラス1または2つの3サープラス2が原因)③res%3 == 2(2つの3サープラス1または1つの3サープラス2による)。コードは少し醜いです
#include<iostream>
#include<string>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
int fun(vector<int> &v){
priority_queue<int, vector<int>, less<int> > tmp1, tmp2;
int res=0;
for(int i=0;i<v.size();i++){
res = res+v[i];
if(v[i]%3==1){
if(tmp1.size()<2) tmp1.push(v[i]);
else{
if(v[i]<tmp1.top()){
tmp1.pop();
tmp1.push(v[i]);
}
}
}
else if(v[i]%3==2){
if(tmp2.size()<2) tmp2.push(v[i]);
else{
if(v[i]<tmp2.top()){
tmp2.pop();
tmp2.push(v[i]);
}
}
}
}
if(res%3==1){
int min_yu1=999999, add_yu2=999999;
if(tmp1.size()>=1){
while(tmp1.size()!=0){
min_yu1 = min(min_yu1, tmp1.top());
tmp1.pop();
}
}
if(tmp2.size()==2){
add_yu2=0;
while(tmp2.size()!=0){
add_yu2 += tmp2.top();
tmp2.pop();
}
}
if(min_yu1!=999999 && add_yu2!=999999)
res = res - min(min_yu1, add_yu2);
else if(min_yu1==999999) res = res - add_yu2;
else if(add_yu2==999999) res = res - min_yu1;
}
else if(res%3==2){
int min_yu2=999999, add_yu1=999999;
if(tmp2.size()>=1){
while(tmp2.size()!=0){
min_yu2 = min(min_yu2, tmp2.top());
tmp2.pop();
}
}
if(tmp1.size()==2){
add_yu1=0;
while(tmp1.size()!=0){
add_yu1 += tmp1.top();
tmp1.pop();
}
}
if(min_yu2!=999999 && add_yu1!=999999)
res = res - min(min_yu2, add_yu1);
else if(min_yu2==999999) res = res - add_yu1;
else if(add_yu1==999999) res = res - min_yu2;
}
return res;
}
int main(){
//获取数据
vector<int> vv;
int x;
while(~scanf("%d ", &x)){
vv.push_back(x);
}
cout<<fun(vv);
return 0;
}