頭條2018實習生筆試

2021-08-19 20:31:52 字數 1924 閱讀 7807

這個題的核心是用了乙個map,key是每一種喜好程度值k,然後把同乙個k的使用者id放在乙個vector裡。即map>,每乙個查詢直接在要查詢的喜好程度k相應的使用者id陣列中找。

#include #include #include using namespace std;

int main()

//查詢

這個題我也是用了同樣的map,顏色號為key,把同乙個顏色的不同珠子的序號放在乙個vector裡,即map>。對每一種顏色檢視是否符合要求。先是兩兩檢查,然後頭尾檢查,用到取模。

注意這個題我一開始把首位檢查寫在兩兩檢查的for迴圈外面了,導致有些兩兩不符合要求首位也不符合要求的顏色被加了兩次,調了很久才發現。。。

#include #include #include using namespace std;

#include int main()

}for(int i = 1; i <= c; ++i)

if(j == mm[i].size()-1)}}

// 如果把頭尾比較放在for的外面,那麼在前後和頭尾都有錯的情況下,會重複加到結果集裡

這是乙個動態規劃題,對我來說有難度。我的做法還是定義了乙個map,這次是讓字母為key,把字母出現過的下標放在vector裡。即map>。

例如a出現過的下標為0,4,5,9.要找出不少於m次操作的情況下,最多能把多少個a聚在一起,假設答案為res。換個思路想,找出把2個a聚在一起的最少操作次數,把3個a聚在一起的最少操作次數,4個a聚在一起的最少操作次數,len個a聚在一起的操作次數。如果這些操作次數小於m,那麼可以更新res為len。

接下來的問題是,怎樣找出把len個a聚在一起的最少操作次數?這裡用動態規劃。設下標的陣列為pos[4],dp[4][4],其中dp[i][j]表示把pos[i]到pos[j]的a聚集起來需要的最少操作次數,初始化為0.  要操作次數最少,肯定是往中間聚。已知聚起來的長度為len。那麼有dp[i][i+len-1] = dp[i+1][i+len-2] + pos[i+len-1]-pos[i]-len+1.

這個表示式是什麼意思?比如現在要求出4個a聚集起來最少操作次數。已經知道把中間兩個聚集起來的次數為dp[i+1][i+len-2],然後就是要把下標為0的a和下標為9的a聚到中間去。這兩個a加起來需要移動的次數是,他倆中間的所有數字有多少個,減去已經排好了的a的個數。即pos[i+len-1] - pos[i] - 1 - (len - 2)。

#include #include #include using namespace std;

int main()

for(auto a : mm)}}

cout << res << endl;

return 0;

}

實習生筆試

這幾天參加過幾場筆試。讓我對筆試有了新的認識。無論是前端,還是後端,最開始的筆試都只是乙個簡單的測試,測試你的邏輯思維能力,演算法能力。單項選擇題基本上是一些計算機的基礎題目,包括網路協議 http tcp ip 記憶體 暫存器。程式的設計。而程式設計題目是一些簡單的演算法題目,不會太難,但是反映的...

阿里2018實習生筆試題 大數相加

兩個大數使用string 表示,請實現乙個函式,將他們相加。注意 1.大數可能包含小數,比如 123.07 8796 2.輸入可能有誤,請檢查是否合法,不合法返回值為false 3.大數不包含科學計數法。檢查string是否合法 不合法返回 false 分離string,分成整數部分和小數部分。對整...

實習生筆試面試 騰訊2013實習生電話面試總結

總結下今天的電面,自我感覺不怎麼好,說出來和大家交流下!本人計算機小碩一枚,學渣乙個 面試官挺隨和的,問了下我名字,然後問我說話便否,接著說咱倆聊聊吧 偶趕緊找了個安靜偏僻的地方,做好審訊準備!面試官基本是對著簡歷問問題的,簡歷上寫什麼就問什麼。先是問的專案。說實話,自己主要做的只有乙個專案,然後也...