日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【牛客网】字节跳动2019春招研发部分编程题汇总

發(fā)布時(shí)間:2024/3/24 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【牛客网】字节跳动2019春招研发部分编程题汇总 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1-萬(wàn)萬(wàn)沒(méi)想到之聰明的編輯

解題思路

此題的編輯規(guī)則如下

  • 三個(gè)同樣的字母連在一起,一定是拼寫(xiě)錯(cuò)誤,去掉一個(gè)的就好啦:比如 helllo -> hello
  • 兩對(duì)一樣的字母(AABB型)連在一起,一定是拼寫(xiě)錯(cuò)誤,去掉第二對(duì)的一個(gè)字母就好啦:比如 helloo -> hello
  • 上面的規(guī)則優(yōu)先“從左到右”匹配,即如果是AABBCC,雖然AABB和BBCC都是錯(cuò)誤拼寫(xiě),應(yīng)該優(yōu)先考慮修復(fù)AABB,結(jié)果為AABCC
  • 從題目可以看出,本題的規(guī)則實(shí)際上只有兩個(gè),1和2,1是指連續(xù)3個(gè)同樣的字母,則去掉一個(gè);
    2是指兩對(duì)一樣的字母,則去掉第二對(duì)的一個(gè)字母。第3條規(guī)則告訴我們規(guī)則是從左往右匹配,因此每次我們?nèi)サ舻淖帜付紝⑹切纬蛇@種規(guī)則的最后一個(gè)字母。
    所以對(duì)給定的字符串,先對(duì)其執(zhí)行規(guī)則1,再執(zhí)行規(guī)則2。

    代碼

    #include<iostream> #include<string> using namespace std; int main() {int n;cin >> n;while (n--) {string s;cin >> s;//規(guī)則1for (int i = 2; i < s.length(); i++) {if (s[i] == s[i - 1] && s[i - 1] == s[i - 2]) {s.erase(i, 1);//滿(mǎn)足規(guī)則1,刪除一個(gè)該字符i--;if (s.length() < 3) break;}}//規(guī)則2for (int i = 3; i < s.length(); i++) {if (s[i] == s[i - 1] && s[i - 2] == s[i - 3]) {s.erase(i, 1);//滿(mǎn)足規(guī)則2,刪除一個(gè)該字符i--;if (s.length() < 3)break;}}cout << s << endl;} }

    2-萬(wàn)萬(wàn)沒(méi)想到之抓捕孔連順

    解題思路

    參考自該博客

    題目的意思,就是給定一系列已排序的數(shù),從這些數(shù)中任選三個(gè)數(shù),使其滿(mǎn)足最大和最小的數(shù)差值小于等于給定值。

    我覺(jué)得下面該blog的思想有些不對(duì),如果打印出具體的組合將是錯(cuò)誤的結(jié)果,但是由于其計(jì)算組合數(shù)的數(shù)目是對(duì)的,因此產(chǎn)生了正確的結(jié)果;
    例如下面的輸入

    輸入: 4 3 1 2 3 4

    對(duì)于blog中的思想,其將產(chǎn)生的組合分別為:

    #此時(shí)left=0,right=2 1 2 3 #此時(shí)left=0,right=3 1 2 3 1 2 4 1 3 4

    可以看出組合數(shù)量是對(duì)的,但真正的組合并沒(méi)有求對(duì),在right=3時(shí),發(fā)生了重復(fù),多了一組,而這組應(yīng)該為2 3 4

    代碼

    #include<iostream> #include<vector> using namespace std; long long C(long long n) {//計(jì)算Cn2的值return (n - 1) * n / 2; } int main() {int N,D;while (cin >> N >> D) {vector<int> arr(N);for (int i = 0; i < N; i++) {cin >> arr[i];}//固定p_left,移動(dòng)p_right,如果滿(mǎn)足兩者之差<=D,則從[p_left+1,p_right]中選擇兩個(gè),即為存在的個(gè)數(shù)long p_left = 0,p_right =2,count = 0;for (; p_right < N;p_right++) {while (arr[p_right] - arr[p_left] > D) {p_left++;}count += C(p_right - p_left);}cout<<count%99997867;}return 0; }

    4-特征提取

    解題思路

    使用map<pair<int, int>, pair<int, int>>;//key-特征(x,y)-value-(起點(diǎn)幀的序號(hào),特征計(jì)數(shù))
    遍歷每個(gè)幀,加入新特征或者更新已存在特征的幀起點(diǎn),特征計(jì)數(shù)
    1、如果該特征不存在,則添加該特征到map
    2、如果該特征存在
    通過(guò)判斷(當(dāng)前幀號(hào)==特征起點(diǎn)幀號(hào)+特征計(jì)數(shù)),相等表示連續(xù)
    (1)如果該特征是連續(xù)的,特征計(jì)數(shù)+1;
    (2)如果該特征是不連續(xù)的,更新特征起點(diǎn)為當(dāng)前幀號(hào),特征計(jì)數(shù)+1;

    參考自題解

    代碼

    #include<iostream> #include<map> #include<algorithm> using namespace std; int main() {int n;cin >> n;//樣例數(shù)for (int k = 0; k < n; k++) {int m;//幀數(shù)cin >> m;map<pair<int, int>, pair<int, int>> mp;int maxLen = 1;for (int i = 0; i < m; i++) {int t;//本幀特征數(shù)cin >> t;for (int j = 0; j < t; j++) {int x, y;pair<int, int> p;cin >> p.first >> p.second;//判斷該幀是否存在//不存在if (mp.find(p) == mp.end()) {//原本無(wú)該特征,添加該特征mp[p].first = i;//該幀的起點(diǎn)幀mp[p].second = 1;//該特征初始計(jì)數(shù)為1}//存在else {//連續(xù)if (i == mp[p].second + mp[p].first) {mp[p].second++;maxLen = max(maxLen, mp[p].second);}//不連續(xù)else {mp[p].first = i;//更新起始幀號(hào)mp[p].second = 1;//更新計(jì)數(shù)}}}}cout << maxLen << endl;}return 0; }

    總結(jié)

    以上是生活随笔為你收集整理的【牛客网】字节跳动2019春招研发部分编程题汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。