陣列的遍歷刷題總結

2021-10-10 17:04:51 字數 2248 閱讀 3781

第一周刷題總結

#leetcode

#陣列的遍歷

本週所做的陣列型別題目大多是關於陣列遍歷,統計陣列中的元素的。

一、 485 最大連續1的個數

題目詳情:

給定乙個二進位制陣列, 計算其中最大連續1的個數。

示例 :

輸入: [1,1,0,1,1,1]

輸出: 3

解釋: 開頭的兩位和最後的三位都是連續1,所以最大連續1的個數是 3.

int

findmaxconsecutiveones

(int

* nums,

int numssize)

else

if(l>max)

}return max;

}

二、 495 提莫攻擊

在《英雄聯盟》的世界中,有乙個叫 「提莫」 的英雄,他的攻擊可以讓敵方進入中毒狀態。現在,給出提莫對艾希的攻擊時間序列和提莫攻擊的中毒持續時間,你需要輸出艾希的中毒狀態總時長。

示例:輸入: [1,4], 2

輸出: 4

原因: 第 1 秒初,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒末結束。

第 4 秒初,提莫再次攻擊艾希,使得艾希獲得另外 2 秒中毒時間。

所以最終輸出 4 秒。

int

findpoisonedduration

(int

* timeseries,

int timeseriessize,

int duration)

else

}return count+duration;

}

三、 414 第三大的數

給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o(n)。

示例 1:

輸入: [3, 2, 1]

輸出: 1

解釋: 第三大的數是 1.

示例 2:

輸入: [1, 2]

輸出: 2

解釋: 第三大的數不存在, 所以返回最大的數 2 .

*此題用到了三指標思想,在陣列的遍歷過程中,不斷地將第

一、第二、第三大的數進行替換,當在陣列中找到了大於最大數的值,立即將第三大的數指向當前第二大的數,第二大的數指向當前第一大的數,第一大的數指向此時陣列的值。同理,當此時陣列中的值在第一第二大的數之間,將第三大的數指向當前第二大的數,第二大的數指向當前陣列的值,第一大的數保持不變。

int

thirdmax

(int

* nums,

int numssize)

else

if(nums[i]

>q)

else

if(nums[i]

>r)}if

(r==long_min)

return r;

}

四、 628 三個數的最大乘積

給定乙個整型陣列,在陣列中找出由三個數組成的最大乘積,並輸出這個乘積。

示例 1:

輸入: [1,2,3]

輸出: 6

示例 2:

輸入: [1,2,3,4]

輸出: 24

注意:陣列中所有的元素範圍是[-1000, 1000],是存在負數的。

*此題任然會用多指標思想求出陣列中最大或最小的幾個數,不同的是,前幾大的數和前幾小的數可以是相等的。最後結果1:兩個最小的負數乘以乙個最大的正數;結果2:三個最大的正數相乘,取其中較大者即可。

int

maximumproduct

(int

* nums,

int numssize)

else

if(nums[i]

>=p && nums[i]

}int a=p,b=p,c=p;

for(i=

0;i)else

if(nums[i]

>=b)

else

if(nums[i]

>c)

} sum1 = p*q*a;

//兩個最小的負數乘以乙個最大的數

sum2 = a*b*c;

//三個最大的數相乘

return sum1>sum2 ? sum1 : sum2;

}

2019暑假刷題筆記 樹的遍歷 總結

關於樹這一塊,前期沒有做乙個學習的緒論,因為時間來不及了。在總結上回顧一下這些題目的一些特點 樹的遍歷的是資料結構樹這一塊中的一部分。樹的遍歷和二叉樹的遍歷本質上相同。二叉樹用指標也可以做,但是在考試中用靜態陣列處理樹更有優勢 樹的遍歷一般的模板是 輸入 遞迴 設定邊界 遞迴兩步 輸出 輸入形式的 ...

演算法刷題及總結 陣列篇

演算法總結 leetcode題目35 搜尋插入位置 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 2 輸出 1 解法一 暴力法 時間複雜度 o n ...

2020 01 24 陣列刷題

題目說明 給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 的空間大小等於 m n,這樣它就有足夠的空間儲存來自 nums2 的元素...