每天一刷20200620

2021-10-07 08:39:50 字數 1720 閱讀 4162

問題

給定n個字串,請對n個字串按照字典序排列。

輸入描述:

輸入第一行為乙個正整數n(1≤n≤1000),下面n行為n個字串(字串長度≤100),字串中只含有大小寫字母。

輸出描述:

資料輸出n行,輸出結果為按照字典序排列的字串。

思路

看到字典序,哈哈哈,stl**好。。。

**

#include

#include

#include

using

namespace std;

intmain()

set::iterator it;

for(it=s.

begin()

;it!=s.

end();

++it)

cout<<

*it<}

問題

尋找峰值

峰值元素是指其值大於左右相鄰值的元素。

給定乙個輸入陣列 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素並返回其索引。

陣列可能包含多個峰值,在這種情況下,返回任何乙個峰值所在位置即可。

你可以假設 nums[-1] = nums[n] = -∞。

思路

log(n)的時間複雜度,提示使用二分法。要結合陣列的具體情況解決

**

o(n)解法:

class

solution

return nums.

size()

-1;}

};

o(logn)解法:

class

solution

return l;}}

;

ps:二分法這個邊界條件的確定是難點。。。預設nums[-1]和nums[len]都是負無窮,這個題確實需要特殊處理。

問題

求陣列的最大連續子串行

思路

dp**

int

greatestsum

(vector<

int> array)

// f(i)初始化, f(0) = array[0]

int sum = array[0]

;// maxsum初始化

int maxsum = array[0]

;for

(int i =

1; i < array.

size()

; i++

) sum =

(sum >0)

? sum + array[i]

: array[i]

;// 尋找全域性最大:maxsum = max( maxsum,f(i))

maxsum =

(sum < maxsum)

? maxsum : sum;

}return maxsum;

}

ps:這個**真的是相當精簡

每天一刷20200602

問題 寫出乙個程式,接受乙個正浮點數值,輸出該數值的近似整數值。如果小數點後數值大於等於5,向上取整 小於5,則向下取整。思路 其實就是實現乙個正浮點數的四捨五入,可以呼叫math.h中的round 函式直接完成,有點討巧。include include using namespace std in...

每天一刷20200603

問題 編寫乙個函式,計算字串中含有的不同字元的個數。字元在acsii碼範圍內 0 127 換行表示結束符,不算在字元裡。不在範圍內的不作統計。注意是不同的字元 思路 跟之前做過的乙個題相似,那個題是字串去重,稍作修改就行了。include include using namespace std in...

每天一刷20200605

昨天返校,沒有做題。問題 功能 等差數列 2,5,8,11,14 輸入 正整數n 0 輸出 求等差數列前n項和 返回 轉換成功返回 0 非法輸入與異常返回 1 思路 這個題其實就是簡單的等差數列求和,設定好初始項,然後控制好迴圈次數即可。ps 在處理輸入的時候要注意用while 來讀取輸入,不然提交...