lintcode 1095 最大的交換

2021-09-10 06:51:56 字數 698 閱讀 2133

給定乙個非負整數,你可以交換兩個數字至多一次來獲得最大的合法的數。返回最大的合法的你能夠獲得的數。

給定的數字在 [0, 10^8] 內。

樣例1:

輸入: 2736

輸出: 7236

解釋: 交換數字2和數字7.

樣例2:

輸入: 9973

輸出: 9973

解釋: 不用交換.

解題的時候舉了幾個例子考慮這道題的搜尋域。暴力搜尋肯定是o(n^2)複雜度沒問題。

但是事實上o(n)就可以。建了乙個表從低位往高位掃瞄到每個位置的最大值,然後從高位往低位掃瞄比當前位置最大值小的位置。(有點繞,直接上**)

class solution 

int size = numbers.size();

reverse(numbers.begin(), numbers.end());

int mx = int_min;

for(int i=size-1; i>=0; i--)

else

}int res = num;

for(int i=0; i}

return res;

}};

Lintcode 最大矩形

類似於蓄水池問題,首先創造乙個矩形,記錄每一列上true的數量。1,1,0,0,1 0,1,0,0,1 0,0,1,1,1 0,0,1,1,1 0,0,0,0,1 可轉換為 1,1,0,0,1 0,2,0,0,2 0,0,1,1,3 0,0,2,2,4 0,0,0,0,5 第一種方案 a i j m...

lintcode最大子陣列

最大子陣列 給定乙個整數陣列,找到乙個具有最大和的子陣列,返回其最大和。注意事項 子陣列最少包含乙個數 您在真實的面試中是否遇到過這個題?yes 樣例給出陣列 2,2,3,4,1,2,1,5,3 符合要求的子陣列為 4,1,2,1 其最大和為6 挑戰 要求時間複雜度為o n 標籤 相關題目 分析 這...

LINTCODE 最大子陣列III

lintcode 最大子陣列iii 思路 動態規劃的方法,記mustthelast i j 為在前i個數中分成j段,且第j段必須有第i個數的最大值,notthelast i j 為前i個中分成j段,且第j段不一定含有第i個數的最大值 注意初始化的資料,不能全部初始化為0,不然在全部為負整數以及一些其...