資料結構機試複習10 求和 最短字首

2021-08-14 10:49:41 字數 2148 閱讀 6107

給定乙個具有n個整數的陣列,問在s中是否存在3個元素a、b、c使得a + b + c = 0。

注意:三元組(a、b、c)必須是乙個非遞減順序(即a<=b<=c)。輸出的結果不能重複

例如,給定陣列s = [-1 0 1 2 -1 -4],輸出[-1, 0, 1]以及[-1, -1, 2]

**1

先上乙個針對matrix的ac**(輸入輸出沒有leetcode嚴格)

#include#include #include using namespace std;

int num[1000050];

set>> ans;

int main() );

while(left+1left && nums[right-1]==nums[right]) right--;

left++,right--;}}

}return ans;

}};

思路:

首先將陣列由小到大排序,使用sort函式,這裡我本來寫的是sort(num,num+n)在vs上是通過了,可是leetcode上出現了編譯錯誤,還沒有研究是什麼原因。

i先指向第乙個元素,left指向i後乙個元素,right指向陣列最後乙個元素,

然後求得他們的和sum,如果sum比0小,說明元素需要更大一點,所以就讓left右移;

反之,如果sum比0大,說明元素需要更小一點,所以就讓right左移。

如果sum為0,就將陣列nums[i],nums[left],nums[right]}加入ans中,同時將left右移,right左移。

只不過為了避免重複,在左右指標移動的時候要判斷下乙個指向的元素是不是和之前相同,指標i同理。

乙個字串的字首是從該字串的第乙個字元起始的乙個子串。例如「carbon」的字首是有「c」,「ca」,「car」,「carb」,「carbo」,和「carbon」。空串不是字首,但是每個非空串是它自身的子串。

我們希望能用字首來縮略地表示單詞。例如「carbohydrate」通常用「carb」來表示。在下面的例子中,「carbohydrate」能被縮寫成「carboh」,但是不能被縮寫成「carbo」(或其餘更短的字首),因為已經有乙個單詞用「carbo」開始。

carbohydrate

cart

carbonic

caribou

carriage

car乙個完全匹配會覆蓋乙個字首匹配,例如「car」完全匹配單詞「car」。因此「car」是「car」的縮略語是沒有二義性的,「car」不會被當成「carriage」或者任何在列表中以「car」開始的單詞。

現在給你一組單詞,要求找到所有單詞唯一標識的最短字首。

輸入描述:

輸入包含多組資料,每組資料第一行包含乙個正整數n(2≤n≤1000)。

緊接著n行單詞,單詞只有小寫字母組成,長度不超過20個字元。

輸出描述:

對應每一組資料,按照輸入順序依次輸出每個單詞的最短字首。

每組資料之後輸出乙個空格作為分隔。

示例輸入:3ab

aacb

6carbohydrate

cart

carbonic

caribou

carriage

car示例輸出:aba

accarboh

cart

carbon

cari

carr

car**1

針對matrix可以過

#include #include using namespace std;

string word[1050];

int main()

}if (valid)

}} cout << endl;

} return 0;

}

純暴力,三重迴圈。

對於每個word,先取前1個字元,看在其餘的字元中是否有重複字首;

若有重複字首,且當前的sub並非完全匹配,則sub向後擴充套件一位;

否則就是它的最短字首。

機試常見的資料結構

北航的機試要求用標準c程式設計,所以很多c 的庫都沒法用。因此我使用最簡單的 實現了幾個常見的資料結構。標準c庫參考 1.陣列實現的棧。此處棧的元素預設為int,也可以改為其他。struct stack void push int x int pop bool isempty bool isfull...

資料結構作業10複習

2 1 設有乙個10階的對稱矩陣a,採用壓縮儲存方式,以行序為主儲存,a11為第一元素,其儲存位址為1,每個元素佔乙個位址空間,則a85的位址為 2分 a.13 b.33 c.18 d.40 啊這考的線代吧,對稱矩陣轉為陣列儲存,第i行第j列元素位於 i i 1 2 j 注意第一元素下標 2 2 設...

資料結構機試複習2 賽馬 猴子選大王

ex1 賽馬 a與b之間將進行一場賽馬比賽,c為裁判。a與b分別擁有n匹馬,這2n匹馬中每匹馬擁有的能力值都不相同。比賽前,參賽的兩人先決定自己的馬的出場順序 比賽時,a的第一匹馬將對戰b的第一匹馬,a的第二匹馬將對戰b的第二匹馬,以此類推。在每一輪的比賽當中,能力值較高的馬將獲得勝利,並記其擁有者...