邏輯演算法題 思路感悟

2021-08-04 05:34:43 字數 673 閱讀 3267

最近在做一些邏輯演算法題,以前在學校的相關課程比較水,一直沒怎麼做過比較考邏輯的演算法題,一看到題就像用大量的for和if窮舉,**複雜度過高,各種tle。

今天在第n次被正確答案吊打之後忽然有了一絲感悟,記下來留個紀念。

做邏輯演算法題的時候首先要考慮結果的可能情況!比如:

1、是否有分界線可以讓我們定出結果就在這個分界線的左面或者右面,如下題:

給定乙個柱形圖(每個柱子之間沒有空隙),高度隨機給出,寬度為固定值,求這些柱子可以構成的矩形的最大面積。

因為面積明顯受制於最低的那個柱子的高度,設這個高度為l,所以以此為出發點發現了答案有三種情況:

1)最大面積包含當前最低的柱子,則面積肯定為l * n(n為總寬度及柱子的數目*單個寬度)

2)最大面積不包含當前最低柱子,則此時只有兩種可能:

在當前最小柱子的左面,此時計算左面區域的最大面積

在當前最小柱子的右面,此時計算右面區域最大面積

之後比較三種情況的面積大小就可以得出最大面積,用遞迴的方法不斷判斷了,直至只有乙個柱子的時候即可

2、是否可以通過(結果矩陣)相鄰上下左右的值累加來逐步計算結果,經典動態規劃問題裡的找錢問題就屬於這種

等等等等

ps:編完邏輯**後最好帶入幾個簡單的特殊例子嘗試一下!比如一系列相同的值,一些特殊值:比如 1、0、2 什麼的

演算法題思路

鍊錶反轉 思路雙鏈表頭插法 利用棧查詢陣列不重複的值 思路利用異或運算 相同數值為0 任何職異或0為他本身的特性 計算質數 思路首先依次判斷2 n的各個數是否是質數 在暴力解法上優化,判斷乙個數是否是質數 只需要不能整除2到根號n之間的數就不是質數 2 n n大於1的數可以直接跳過肯定不是質數 使用...

演算法題思路分享

本人為一名演算法愛好者同時也是一名演算法小白,在此僅分享自己的思路,歡迎各位大神批評指正!題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示...

演算法邏輯題(2018 6 14)

問題描述 答案 德國人 問題描述 對一批編號為1 100,全部開關朝上 開 的燈進行以下操作 凡是1的倍數反方向撥一次開關.2的倍數反方向又撥一次開關.3的倍數反方向又撥一次開關.仍此類推.問 最後為關熄狀態的燈的編號.實現 using system namespace cchoopdemo 進行操...