當前位置:首頁 » 股票買賣 » 買賣股票3leetcode
擴展閱讀
設計總院股票歷史股價 2023-08-31 22:08:17
股票開通otc有風險嗎 2023-08-31 22:03:12
短線買股票一天最好時間 2023-08-31 22:02:59

買賣股票3leetcode

發布時間: 2023-02-22 20:14:29

① 股票賣出技巧

買賣股票需要有股票賬戶,要到證券公司辦理開戶,在交易軟體上點擊需要賣出的股票,輸入賣出數量,點擊確定即可賣出。
買賣股票需要有股票賬戶才可以,開戶流程如下:
1、到證券公司開戶,辦理上證或深證股東帳戶卡、資金賬戶、網上交易業務、電話交易業務等有關手續。然後,下載證券公司指定的網上交易軟體。
2、到銀行開活期帳戶,並且通過銀證轉賬業務,把錢存入銀行。
3、通過網上交易系統或電話交易系統等系統把錢從銀行轉入證券公司資金賬戶。
4、在網上交易系統里或電話交易系統買賣股票。
5、手續費在100元左右(每家證券公司是不同的)。股市低迷時,一般免費開戶。
6、買股票必須委託證券公司代理交易,股票不可以直接到上海證券交易所買賣。
拓展資料:
1. 股票是股份制企業(上市和非上市)所有者(即股東)擁有公司資產和權益的憑證。上市的股票稱流通股,可在股票交易所(即二級市場)自由買賣。非上市的股票沒有進入股票交易所,因此不能自由買賣,稱非上市流通股。
2. 這種所有權為一種綜合權利,如參加股東大會、投票標准、參與公司的重大決策、收取股息或分享紅利等,但也要共同承擔公司運作錯誤所帶來的風險。
3.股票是一種有價證券,是股份公司在籌集資本時向出資人發行的股份憑證,代表著其持有者(即股東)對股份公司的所有權。股票是股份證書的簡稱,是股份公司為籌集資金而發行給股東作為持股憑證並藉以取得股息和紅利的一種有價證券。每股股票都代表股東對企業擁有一個基本單位的所有權。股票是股份公司資本的構成部分,可以轉讓、買賣或作價抵押,是資金市場的主要長期信用工具。
3. 證券交易規則
一、交易時間
周一至周五 (法定休假日除外)
上午9:30 --11:30
下午1:00 -- 3:00
二交易單位
(1) 股票的交易單位為「股」,100股=1手,委託買入數量必須為100股或其整數倍;
(2) 基金的交易單位為「份」,100份=1手,委託買入數量必須為100份或其整數倍;
(3) 國債現券和可轉換債券的交易單位為「手」,1000元面額=1手,委託買入數量必須為1手或其整數倍;
(4)當委託數量不能全部成交或分紅送股時可能出現零股 (不足1手的為零股),零股只能委託賣出,不能委託買入零股。
四、報價單位
股票以「股」為報價單位;基金以「份」為報價單位;債券以「手」為報價單位。例:行情顯示「深發展A」30元,即「深發展A」股現價30元/股。交易委託價格最小變動單位:A股、基金、債券為人民幣0.01元;深B為港幣0.01元;滬B為
美元0.001元;上海債券回購為人民幣0.005元。
五、漲跌幅限制
在一個交易日內,除首日上市證券外,每隻證券的交易價格相對上一個交易日收市價的漲跌幅度不得超過10%,超過漲跌限價的委託為無效委託。
六、"ST"股票
在股票名稱前冠以「ST」字樣的股票表示該上市公司最近兩年連續虧損,或虧損一年,但凈資產跌破面值、公司經營過程中出現重大違法行為等情況之一,交易所對該公司股票交易進行特別處理。股票交易日漲跌幅限制5%。

② 股票買賣操作流程

一、股票買賣操作流程

1、股票的交易過程包括了開立股東代碼卡以及資金賬號,同時通過銀證轉賬將資金轉移進去,然後才能夠進行股票委託交易。

2、投資人可以憑借著個人身份證件,在全國的任何一家證券公司營業部門代理開戶,上海證券交易所股東卡手續費用為40元人民幣,深圳證券交易所股東卡的手續費用為50元人民幣。

3、憑著身份證和股東卡賬戶到證券公司營業部門開立資金賬戶,上海證券交易市場的股東卡只能在一家證券公司開立資金賬戶,深圳證券交易市場沒有限制。

4、買賣股票的資金不能直接存入證券公司資金賬戶必須通過銀行轉賬,所以必須要有銀行活期賬戶和證券資金賬戶綁定雙向轉賬,到銀行開通銀證轉賬業務。

5、委託買賣股票的方式有營業部門委託、電話委託、網上委託,網上委託必須使用證券公司營業部專用的委託軟體,可以在證券公司網站上下載委託軟體,股票買入必須是一百股或者是整數倍,賣出沒有任何的限制可以不是整數賣出。

6、進入股票買入頁面之後,首先在賬戶名稱處選擇操作賬戶輸入股票代碼,選擇好了之後會出現想要買入的股信息,從這就可以查看到選定的賬戶類別、股票代碼、買入價格、買入股數、以及該股票的真實行情。

7、最後輸入買入的價格(不能超過該股當日漲跌幅限制)以及買入數量(100的倍數)。點擊買入即可下單成功。當股價小於或等於買入的價格系統就會自動成交。賣出就點賣出鍵,操作一樣。

二 、炒股注意事項

1、炒股一定要具備良好的心態。股市是會有風險的有盈利就會有虧損,所以心態要放好。跌了我們就採取措施就好了。

2、炒股要有專業的知識。盲目跟風、道聽途說、連K線圖都看不懂就入市跟賭博沒什麼區別勢必很難在股市裡盈利。最起碼要具備專業的炒股知識。

3、不能貪婪。盈利的時就想多賺一點就不顧一切買入,虧損的時就也拚命買入想早點回本,這種做法是不對的。作為業余的炒手,可以給自己定個價位,到了這個價位點就可以賣出盈利,盲目追求暴利,往往風險很高,做到適可而止才是明智的選擇。

4、要有耐心。抄底,追漲殺跌,沒有持股的耐心,反反復復進出股市你會發現這樣很容易虧損。所以要有持股的耐心。

5、不要輕於相信小道消息。小道消息往往是股庄放出的反面消息,是給散戶設的圈套。不能一聽到利好消息就拚命的買入,反之就賣出。但消息是難以免避免的,我們要學會去辨別去分析。

(2)買賣股票3leetcode擴展閱讀:

股票市場也稱為二級市場或次級市場,是股票發行和流通的場所,也可以說是指對已發行的股票進行買賣和轉讓的場所。股票的交易都是通過股票市場來實現的。

一般地,股票市場可以分為一、二級,一級市場也稱股票市場之為股票發行市場,二級市場也稱之為股票交易市場。 股票是一種有價證券。有價證券除股票外,還包括國家債券、公司債券、不動產抵押債券等等。

③ 103. leetcode筆記(1~60)

d1

https://leetcode-cn.com/problems/two-sum
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
【hashmap存儲】

給定兩個大小為 m 和 n 的有序數組 nums1 和 nums2。
請你找出這兩個有序數組的中位數,並且要求演算法的時間復雜度為 O(log(m + n))。

nums1 = [1, 2]
nums2 = [3, 4]
則中位數是 (2 + 3)/2 = 2.5
【奇偶判斷】

給定一個字元串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為 1000。
輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個有效答案。
【雙循環貪心】

d2

判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
輸入: 121
輸出: true
【折半比較】

給定一個包含大寫字母和小寫字母的字元串,找到通過這些字母構造成的最長的迴文串。
在構造過程中,請注意區分大小寫。比如 "Aa" 不能當做一個迴文字元串。
注意:
假設字元串的長度不會超過 1010。
示例:
輸入:
"abccccdd"
輸出:
7
【集合更新與判空】(add remove, 放入可迴文的字元,無重復)

給你一個字元串 s 和一個字元規律 p ,請你來實現一個支持 '.' 和 '*' 的正則表達式匹配。
'.' 匹配任意單個字元
'*' 匹配零個或多個前面的那一個元素
所謂匹配,是要涵蓋 **整個 **字元串 s 的,而不是部分字元串。
說明:

【正則包與結果項】

d3

給定一個排序數組,你需要在原地刪除重復出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。
不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間的條件下完成。
示例:
給定數組 nums = [1,1,2],
函數應該返回新的長度 2, 並且原數組 nums 的前兩個元素被修改為 1, 2。
你不需要考慮數組中超出新長度後面的元素。
【新計數索引】

給定一個數組 nums 和一個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後數組的新長度。
不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間的條件下完成。
元素的順序可以改變。你不需要考慮數組中超出新長度後面的元素。
示例:
給定 nums = [3,2,2,3], val = 3,
函數應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2。
你不需要考慮數組中超出新長度後面的元素。
【while val存在】

實現 strStr() 函數:
給定一個 haystack 字元串和一個 needle 字元串,在 haystack 字元串中找出 needle 字元串出現的第一個位置 (從0開始)。如果不存在,則返回 -1。
示例:
輸入: haystack = "hello", needle = "ll"
輸出: 2

【str.index(p)】

d4

【分支遞歸乘數】

給定一個整數數組 nums,求出數組從索引 i 到 j (i ≤ j) 范圍內元素的總和,包含 i, j 兩點。
給定 nums = [-2, 0, 3, -5, 2, -1],求和函數為 sumRange()
sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3
【緩存和】

給定一個二進制數組,你可以最多將 1 個 0 翻轉為 1,找出其中最大連續 1 的個數。
輸入:[1,0,1,1,0]
輸出:4
解釋:翻轉第一個 0 可以得到最長的連續 1。
當翻轉以後,最大連續 1 的個數為 4。
【最近0的出現位置】

d5

對於一個 正整數,如果它和除了它自身以外的所有正因子之和相等,我們稱它為「完美數」
輸出: True
解釋: 28 = 1 + 2 + 4 + 7 + 14
【折平根比較】

修改一個數,則變成非遞減數列,輸出True
【嵌套條件分支】

123456789101112...求出第N個數字對應的單字元數值
【while True中的數量級t和求解條件m】

d6

列表中存在最大長度為k的兩個相等的數,則返True
給定一個整數數組和一個整數 k,判斷數組中是否存在兩個不同的索引 i 和 j,使得 nums [i] = nums [j],並且 i 和 j 的差的絕對值最大為 k。如輸入: nums = [1,2,3,1], k = 3, 輸出: true

【集合表示滑動窗口】

【雙指針追蹤】

兩個數不是同一個數,存在某數2倍數的一個數則返回True
【判雙零】

d7

兩個數值型字元串,相加後返回結果字元串
【while中低位進位】

求節點與其祖先之間的最大差,如:

【左右遞歸dfs返回最大差】

一排人領糖果, 相鄰的人rating高的獲得較多糖,每人都有糖果。

老師想給孩子們分發糖果,有 N 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。
你需要按照以下要求,幫助老師給這些孩子分發糖果:
每個孩子至少分配到 1 個糖果。
相鄰的孩子中,評分高的孩子必須獲得更多的糖果。
那麼這樣下來,老師至少需要准備多少顆糖果呢?如輸入: [1,0,2], 輸出: 5
解釋: 你可以分別給這三個孩子分發 2、1、2 顆糖果。

【左右規則】

d8

返回鏈表中倒數第k個節點值
【雙指針追蹤】

是否平衡二叉樹,即任意一個節點其兩顆子樹的高度差不超過一。
【遞歸返回是否平衡和樹高】

【三重while中低位進位】

d9

刪除鏈表中的節點
【製造偽頭結點】

之字形層次遍歷二叉樹,如:

【遞歸含層數的層次遍歷與折返判斷】

如果一個數的左邊數組和與右邊數組和相等,則返回此中間數的索引。
【從左累加與總和比較】

d10

輸出二叉樹的鏡像, 如:

【製造臨時節點的自身遞歸】

自底向上遍歷二叉樹,如:

【遞歸層次遍歷】

【含hashmap[depth]的dfs遞歸】

d11

返回除法結果,不越界[-2**31, 2**31-1]
【正負/零劃分】

一個數的二進製表示中1的個數
【帶奇偶判斷的逐右移位】

移除所有值為val的節點,返回鏈表。如輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5
【含有目標比較的自身遞歸】

d12

實現int sqrt(int x)函數
【牛頓迭代】

【兩次判空與全存在的各自相加】

求出根到葉子節點路徑總和為固定值的所有路徑集

【目標遞減下葉子和當前更新的路徑和與目標值的比較】

d13

數組中是否有獨一無二的出現次數
【hashmap計數與值數組判重】

給定一個無序的整數數組,找到其中最長上升子序列的長度。如輸入: [10,9,2,5,3,7,101,18]
輸出: 4 ,解釋: 最長的上升子序列是 [2,3,7,101],它的長度是 4。

【雙循環動態規劃】

【遞歸判斷】

d14

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。
注意你不能在買入股票前賣出股票。如輸入: [7,1,5,3,6,4]
輸出: 5
解釋: 在第 2 天(股票價格 = 1)的時候買入,在第 5 天(股票價格 = 6)的時候賣出,最大利潤 = 6-1 = 5 。
注意利潤不能是 7-1 = 6, 因為賣出價格需要大於買入價格。

【最低股價與最大利潤同時更新】

輸入一個整型數組,數組里有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。
要求時間復雜度為O(n)。如輸入: nums = [-2,1,-3,4,-1,2,1,-5,4]
輸出: 6, 解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6。

【max0 sum0初始索引0賦值,與sum0>0判斷】

給定正整數 n,找到若干個完全平方數(比如 1, 4, 9, 16, ...)使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。如輸入: n = 12
輸出: 3 ,解釋: 12 = 4 + 4 + 4
【動態規劃雙循環解背包問題】

d15

統計所有小於非負整數 n 的質數的數量。如輸入: 10
輸出: 4,解釋: 小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。
【篩去法】

找出第 n 個丑數。
丑數就是只包含質因數 2, 3, 5 的正整數。如輸入: n = 10
輸出: 12, 解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個丑數。
【三指針動態規劃】

給定一個整數數組 prices,其中第 i 個元素代表了第 i 天的股票價格 ;非負整數 fee 代表了交易股票的手續費用。
你可以無限次地完成交易,但是你每次交易都需要付手續費。如果你已經購買了一個股票,在賣出它之前你就不能再繼續購買股票了。

返回獲得利潤的最大值。如輸入: prices = [1, 3, 2, 8, 4, 9], fee = 2
輸出: 8,解釋: 能夠達到的最大利潤:
在此處買入 prices[0] = 1
在此處賣出 prices[3] = 8
在此處買入 prices[4] = 4
在此處賣出 prices[5] = 9
總利潤: ((8 - 1) - 2) + ((9 - 4) - 2) = 8.
【買入賣出的動態規劃】

d16

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
設計一個演算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易(多次買賣一支股票)。
注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。
如輸入: [7,1,5,3,6,4]
輸出: 7
解釋:
在第 2 天(股票價格 = 1)的時候買入,在第 3 天(股票價格 = 5)的時候賣出,
這筆交易所能獲得利潤 = 5-1 = 4 。
隨後,在第 4 天(股票價格 = 3)的時候買入,在第 5 天(股票價格 = 6)的時候賣出,
這筆交易所能獲得利潤 = 6-3 = 3 。

【同leet714 多次買賣的動態規劃】

是否是相同的樹
【同空、不同空判斷後的自身遞歸】

不特定根節點和葉子節點,返迴路徑總和為固定值的路徑數
【自身遞歸與dfs遞歸】

d17

找出右邊的值小於當前值的數的個數:
使用線段樹構建左右子樹,並從右到左計算前面的數小於當前值的數的個數,最終返回依次進入結果數組的list的倒置值。

【list復製法】
將遍歷到的前兩個和數都去掉,雙重遍歷T(n)= O(n)

規范的路徑表示寫法轉換為最簡路徑
【棧進棧出,判斷'' '.' '..'()】

d18

【復制字元庫,逐次後移匹配庫起始點】

按要求分一個數組為m份,求其中子數組的最大值中最小一個
【二分查找、設定子數組最大的和mid作劃分節點】

【二分思想,拆分數組遞歸】(不用判斷平衡)

d19(52%)

兩個字元串對應位置移動總次數在指定步數內(ascii值的差),求字元串的最大可變換長
【滑窗記錄更新最初位置、不斷更新當前滑窗內移動步數最小值】

④ 如何買入或賣出股票

1、挑選著正確的買進賣出時機
買進時機主要有四個:
(1)日K線顯示某股票下跌二浪之後小幅波動,量縮至其流通股的千分之五以下,最好這樣縮量盤整三天以上,或者在此區域陰線陽線交錯,量能均衡且比前幾日有所放大、可介入。
(2)如某股票最好跌至兩年來的底部,即使跌破歷史低價,也只是瞬間,其實是莊家在刻意打壓吸籌,應果斷買進。
(3)某股票小陰小陽或中陽一路穩步爬升,且有一段不小的漲幅,某一天(該股沒有什麼利空)突然出現一根下跌型的中陰或長陰,十有八九是莊家在震盪洗籌,可適當跟進。
(4)特別注意那些流通股在3500萬以下,每股預期年化預期收益在0.40元以上的小盤績優次新股,由於其極強的股本擴張能力,深得主力青睞,只要市盈率在30倍以下,當股價回落時,便可吸納,中長線必有不俗的回報。
賣出時機主要也有四個:
(1)那些一年來沒有動作過,而今有庄介入的個股,一般漲幅都會超過50%,多數可達100%。慎重的投資者可在最低價上漲50%時拋出,進取型的可繼續持籌看漲,在股價創下某高點後回落,跌幅超10%時獲利了結。
(2)如某股票某天莫名其妙地拉出一根長紅,且放巨量(達到其流通股的10%以上),第二天一早可馬上出局。
(3)某股票已有一段較大的漲幅,許多報紙和股評人士在圈點介紹之時,也是該派發的時候了。
(4)不賭最低點買進、最高點拋出,但求心平氣和,買進股票後可定下一個標准,到心理價位後即可拋出,即使離場後還在上漲,也不必懊悔,畢竟你是股海中隨波逐流的一葉小舟,根本無法與莊家抗爭。
2、股票買進賣出的渠道
(1)當面委託。即委託人以面對面的形式當面委託證券商,確定具體的委託內容與要求,由證券商受理股票的買賣。
(2)電話委託。即委託人以電話形式委託證券商,確定具體的委託內容和要求,由證券商、經紀人受理股票的買賣交易。
(3)電傳委託。即委託人通過發電傳給證券商,確定具體的委託內容和要求,委託證券商代理買賣股票。
(4)傳真委託。即委託人以傳真的形式,將確定的委託內容與要求傳真給證券商,委託他們代理買賣股票交易。
(5)信函委託。即委託人用信函形式,將確定的委託內容和要求告知證券商,並委託他們代辦買賣股票的交易。
我國深圳、上海主要是當面委託。當面委託一般要委託人加以確認,受託證券商才予辦理委託手續,而電話委託,則必須在證券商具備錄音電話的條件下,才可辦理。委託人以電話委託買賣成交後應補交簽章,如有錯誤原因不是由證券商造成的,證券商不負責任。
3、網上買賣股票具體操作
只要你輸入股票代碼,股票價格和數量就能買入,注意最少買入100股,而且買入必須是100股的倍數。
等股票上漲到一定價格,你輸入股票代碼,股票價格和數量就能賣出,賣出沒有數量的限制。
比如一個股票現在10元,賣1的掛單是10元,賣2 的掛單是10.01元,賣3的掛單是10.02元,買1的掛單是9.99元,買2的掛單是9.98元,買3的掛單是9.97元。只要你根據賣1的價格輸入10元的價格買入就能成交,你輸入賣2或者賣2的價格進行買入,成交價格也是10元,因為遵循價格優先,數量優先的原則。而你輸入9.99或者以下的價格就不能立刻成交,需要價格跌到9.99和以下的價格才能成交。賣出同樣道理。

⑤ leetcode演算法

*最近在做一些 leetcode 的演算法題,我會將自己做過的演算法題記錄下來以供大家參考,如果查找不方便請看 油猴插件實現網站左側目錄生成。

給定一個排序數組,你需要在 原地 刪除重復出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。
不要使用額外的數組空間,你必須在 原地修改輸入數組 並在使用 O(1) 額外空間的條件下完成。

示例:

解答:

     

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
設計一個演算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易(多次買賣一支股票)。
注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。

示例:

提示:

解答:

     

給定一個數組,將數組中的元素向右移動 k 個位置,其中 k 是非負數。

示例:

說明:

解答:

     

給定一個整數數組,判斷是否存在重復元素。
如果任意一值在數組中出現至少兩次,函數返回 true 。如果數組中每個元素都不相同,則返回 false 。

示例:

解答:

     

給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

說明:
你的演算法應該具有線性時間復雜度。 你可以不使用額外空間來實現嗎?

示例:

解答:

     

給定兩個數組,編寫一個函數來計算它們的交集。

示例:

說明:

進階:

解答:

     

給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。
最高位數字存放在數組的首位, 數組中每個元素只存儲單個數字。
你可以假設除了整數 0 之外,這個整數不會以零開頭。

示例:

解答:

     

給定一個數組 nums ,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。

示例:

說明:

     

給定一個整數數組 nums 和一個目標值 target ,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。
你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素不能使用兩遍。

示例:

解答:

     

判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。

數獨部分空格內已填入了數字,空白格用 '.' 表示。

示例:

說明:

解答:

     

給定一個 *n *× *n* 的二維矩陣表示一個圖像。
將圖像順時針旋轉 90 度。

說明:
你必須在 原地 旋轉圖像,這意味著你需要直接修改輸入的二維矩陣。 請不要 使用另一個矩陣來旋轉圖像。

示例:

解答:

     

編寫一個函數,其作用是將輸入的字元串反轉過來。輸入字元串以字元數組 char[] 的形式給出。
不要給另外的數組分配額外的空間,你必須 原地修改輸入數組 、使用 O(1) 的額外空間解決這一問題。
你可以假設數組中的所有字元都是 ASCII 碼表中的可列印字元。

示例:

解答:

     

給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例:

注意:
假設我們的環境只能存儲得下 32 位的有符號整數,則其數值范圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。

解答:

     

給定一個字元串,找到它的第一個不重復的字元,並返回它的索引。如果不存在,則返回 -1。

示例:

解答:

     

給定兩個字元串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的字母異位詞。
長度一樣,包含的字母都一樣,每個字元出現的頻率也一樣,只是順序不同而已,這就屬於異位詞,

示例:

說明:
你可以假設字元串只包含小寫字母。

進階:
如果輸入字元串包含 unicode 字元怎麼辦?你能否調整你的解法來應對這種情況?

解答:

     

給定一個字元串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。
說明 :本題中,我們將空字元串定義為有效的迴文串。

示例:

解答:

     

請你來實現一個 atoi 函數,使其能將字元串轉換成整數。

首先,該函數會根據需要丟棄無用的開頭空格字元,直到尋找到第一個非空格的字元為止。接下來的轉化規則如下:

注意 :假如該字元串中的第一個非空格字元不是一個有效整數字元、字元串為空或字元串僅包含空白字元時,則你的函數不需要進行轉換,即無法進行有效轉換。

在任何情況下,若函數不能進行有效的轉換時,請返回 0 。

提示

示例:

解答:

     

實現 strStr() 函數。
給定一個 haystack 字元串和一個 needle 字元串,在 haystack 字元串中找出 needle 字元串出現的第一個位置 (從0開始) 。如果不存在,則返回 -1

示例:

說明:
當 needle 是空字元串時,我們應當返回什麼值呢?這是一個在面試中很好的問題。
對於本題而言,當 needle 是空字元串時我們應當返回 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符

解答:

     

「外觀數列」是一個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下:

1 被讀作 "one 1" ("一個一") , 即 11 。
11 被讀作 "two 1s" ("兩個一") , 即 21 。
21 被讀作 "one 2", "one 1" ("一個二" , "一個一") , 即 1211 。
給定一個正整數 n(1 ≤ n ≤ 30),輸出外觀數列的第 n 項。

注意 :整數序列中的每一項將表示為一個字元串。

示例:

解答:

     

編寫一個函數來查找字元串數組中的最長公共前綴。
如果不存在公共前綴,返回空字元串 "" 。

示例:

說明:
所有輸入只包含小寫字母 a-z 。

解答:

     

請編寫一個函數,使其可以刪除某個鏈表中給定的(非末尾)節點,你將只被給定要求被刪除的節點。
現有一個鏈表 -- head = [4,5,1,9],它可以表示為:

示例:

說明:

解答:

     

給定一個鏈表,刪除鏈表的倒數第 n 個節點,並且返回鏈表的頭結點。

示例:

說明:
給定的 n 保證是有效的。

進階:
你能嘗試使用一趟掃描實現嗎?

解答:

     

反轉一個單鏈表。

示例:

解答:

     

將兩個升序鏈表合並為一個新的升序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。

示例:

解答:

     

請判斷一個鏈表是否為迴文鏈表。

示例:

解答:

     

給定一個鏈表,判斷鏈表中是否有環。
為了表示給定鏈表中的環,我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1 ,則在該鏈表中沒有環。

示例:

解答:

     

給定一個二叉樹,找出其最大深度。
二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。

說明 : 葉子節點是指沒有子節點的節點。

示例:
給定二叉樹 [3,9,20,null,null,15,7] ,

返回它的最大深度 3 。

解答:

     

給定一個二叉樹,判斷其是否是一個有效的二叉搜索樹。
假設一個二叉搜索樹具有如下特徵:

示例:

解答:

     

給定一個二叉樹,檢查它是否是鏡像對稱的。

例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。

但是下面這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的:

解答:

     

給你一個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。

示例:
二叉樹: [3,9,20,null,null,15,7] ,

返回其層次遍歷結果:

解答:

     

將一個按照升序排列的有序數組,轉換為一棵高度平衡二叉搜索樹。
本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。

示例:
給定有序數組: [-10,-3,0,5,9] ,
一個可能的答案是: [0,-3,9,-10,null,5] ,它可以表示下面這個高度平衡二叉搜索樹:

解答:

     

給你兩個有序整數數組 nums1 和 nums2,請你將 nums2 合並到 nums1 中,使 nums1 成為一個有序數組。

說明:

示例:

解答:

     

你是產品經理,目前正在帶領一個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由於每個版本都是基於之前的版本開發的,所以錯誤的版本之後的所有版本都是錯的。
假設你有 n 個版本 [1, 2, ..., n] ,你想找出導致之後所有版本出錯的第一個錯誤的版本。
你可以通過調用 bool isBadVersion(version) 介面來判斷版本號 version 是否在單元測試中出錯。實現一個函數來查找第一個錯誤的版本。你應該盡量減少對調用 API 的次數。

示例:

解答:

     

假設你正在爬樓梯。需要 n 階你才能到達樓頂。
每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?
注意 :給定 n 是一個正整數。

示例:

解答:

     

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
如果你最多隻允許完成一筆交易(即買入和賣出一支股票一次),設計一個演算法來計算你所能獲取的最大利潤。
注意 :你不能在買入股票前賣出股票。

示例:

解答:

     

給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。

示例:

解答:

     

你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。
給定一個代表每個房屋存放金額的非負整數數組,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。

示例:

解答:

     

打亂一個沒有重復元素的數組。

示例:

解答:

     

設計一個支持 push , pop , top 操作,並能在常數時間內檢索到最小元素的棧。

示例:

解答:

     

寫一個程序,輸出從 1 到 n 數字的字元串表示。

示例:

解答:

     

統計所有小於非負整數 n 的質數的數量。

示例:

解答:

     

給定一個整數,寫一個函數來判斷它是否是 3 的冪次方。

示例:

解答:

     

羅馬數字包含以下七種字元: I , V , X , L , C , D 和 M 。

例如,羅馬數字 2 寫做 II ,即為兩個並列的 1 。 12 寫做 XII ,即為 X + II 。 27 寫做 XXVII , 即為 XX + V + II 。

通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做 IIII ,而是 IV 。數字 1 在數字 5 的左邊,所表示的數等於大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為 IX 。這個特殊的規則只適用於以下六種情況:

示例:

解答:

     

編寫一個函數,輸入是一個無符號整數,返回其二進製表達式中數字位數為 『1』 的個數(也被稱為 漢明重量 )。

示例:

提示:

⑥ 如何交易老三板的股票

老三板股票交易規則:

三板交易的時間是每周的星期一、星期三、星期五,轉讓委託申報時間為上午9:30至11:30,下午1:00至3:00;之後以集合競價方式進行集中配對成交。

委託方式可採用櫃台委託、電話委託、互聯網委託等。所有委託指令均以集合競價方式配對成交。股份轉讓價格實行漲跌幅限制,漲跌幅比例限制為前一轉讓日轉讓價格的5%。

比如,如果要買400001大自然,可以在交易時間內(當然也可以參與集合競價)買入,買入後成交與否,不像A股可以立馬看見的,要等到下午3點才能知道是否成交。三板當天的漲跌情況你可以在10點30分看到盤中情況。

(6)買賣股票3leetcode擴展閱讀:

老三板的股票交易具體流程:

1、開設帳戶,顧客要買賣股票,應首先找經紀人公司開設帳戶。

2、傳遞指令,開設帳戶後,顧客就可以通過他的經紀人買賣股票。每次買賣股票,顧客都要給經紀人公司買賣指令,該公司將顧客指令迅速傳遞給它在交易所里的經紀人,由經紀人執行。

3、成交過程,交易所里的經紀人一接到指令,就迅速到買賣這種股票的交易站(在交易廳內,去執行命令。

4、交割,買賣股票成交後,買主付出現金取得股票,賣主交出股票取得現金。交割手續有的是成交後進行,有的則在一定時間內,如幾天至幾十天完成,通過清算公司辦理。

5、過戶,交割完畢後,新股東應到他持有股票的發行公司辦理過戶手續,即在該公司股東名冊上登記他自己的名字及持有股份數等。完成這個步驟,股票交易即算最終完成。

⑦ LeetCode熱題100

1.兩數之和  簡單

https://leetcode-cn.com/problems/two-sum/

15. 三數之和 中等

https://leetcode-cn.com/problems/3sum/

49. 字母異位詞分組 中等

https://leetcode-cn.com/problems/group-anagrams/

56. 合並區間 中等

https://leetcode-cn.com/problems/merge-intervals/

148. 排序鏈表 中等

https://leetcode-cn.com/problems/sort-list/

1.兩數之和  簡單

https://leetcode-cn.com/problems/two-sum/

128. 最長連續序列 中等

https://leetcode-cn.com/problems/longest-consecutive-sequence/

438. 找到字元串中所有字母異位詞 中等

https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/

448. 找到所有數組中消失的數字 簡單 原地存儲次數

https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/

2.兩數相加 中等

https://leetcode-cn.com/problems/add-two-numbers/

21. 合並兩個有序鏈表 簡單

https://leetcode-cn.com/problems/merge-two-sorted-lists/

22. 括弧生成 中等

https://leetcode-cn.com/problems/generate-parentheses/

23. 合並K個升序鏈表 困難

https://leetcode-cn.com/problems/merge-k-sorted-lists/

39. 組合總和 中等

https://leetcode-cn.com/problems/combination-sum/

46. 全排列 中等

https://leetcode-cn.com/problems/permutations/

48. 旋轉圖像 中等

https://leetcode-cn.com/problems/rotate-image/

78. 子集 中等

https://leetcode-cn.com/problems/subsets/

105. 從前序與中序遍歷序列構造二叉樹 中等

https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/

114. 二叉樹展開為鏈表 中等

https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/

3. 無重復字元的最長子串 中等

https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

4. 尋找兩個正序數組的中位數 困難

https://leetcode-cn.com/problems/median-of-two-sorted-arrays/

11. 盛最多水的容器 中等

https://leetcode-cn.com/problems/container-with-most-water/

15. 三數之和 中等

https://leetcode-cn.com/problems/3sum/

31. 下一個排列 中等

https://leetcode-cn.com/problems/next-permutation/

55. 跳躍游戲 中等

https://leetcode-cn.com/problems/jump-game/

75. 顏色分類 中等

https://leetcode-cn.com/problems/sort-colors/

76. 最小覆蓋子串 困難

https://leetcode-cn.com/problems/minimum-window-substring/

283. 移動零 簡單

https://leetcode-cn.com/problems/move-zeroes/

581. 最短無序連續子數組 中等

https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/

32. 最長有效括弧 困難

https://leetcode-cn.com/problems/longest-valid-parentheses/

42. 接雨水 困難

https://leetcode-cn.com/problems/trapping-rain-water/

53. 最大子序和 簡單

https://leetcode-cn.com/problems/unique-paths/

70. 爬樓梯 簡單

https://leetcode-cn.com/problems/climbing-stairs/

96. 不同的二叉搜索樹 中等

https://leetcode-cn.com/problems/unique-binary-search-trees/

121. 買賣股票的最佳時機 簡單

https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/

139. 單詞拆分 中等

https://leetcode-cn.com/problems/word-break/

152. 乘積最大子數組 中等

https://leetcode-cn.com/problems/maximum-proct-subarray/

198. 打家劫舍 中等

https://leetcode-cn.com/problems/house-robber/

279. 完全平方數 中等

https://leetcode-cn.com/problems/perfect-squares/

300. 最長遞增子序列 中等

https://leetcode-cn.com/problems/longest-increasing-subsequence/

309. 最佳買賣股票時機含冷凍期 中等

https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/

337. 打家劫舍 III 中等

https://leetcode-cn.com/problems/house-robber-iii/

338. 比特位計數 簡單

https://leetcode-cn.com/problems/counting-bits/

5. 最長迴文子串 中等

https://leetcode-cn.com/problems/longest-palindromic-substring/

10. 正則表達式匹配 困難

https://leetcode-cn.com/problems/regular-expression-matching/

62. 不同路徑 中等

https://leetcode-cn.com/problems/unique-paths/

64. 最小路徑和 中等

https://leetcode-cn.com/problems/minimum-path-sum/

72. 編輯距離 困難

https://leetcode-cn.com/problems/edit-distance/

221. 最大正方形 中等

https://leetcode-cn.com/problems/maximal-square/

79. 單詞搜索 中等

https://leetcode-cn.com/problems/word-search/

94. 二叉樹的中序遍歷 簡單

https://leetcode-cn.com/problems/binary-tree-inorder-traversal/

98. 驗證二叉搜索樹 中等

https://leetcode-cn.com/problems/validate-binary-search-tree/

101. 對稱二叉樹 簡單

https://leetcode-cn.com/problems/symmetric-tree/

104. 二叉樹的最大深度 簡單

https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

124. 二叉樹中的最大路徑和 困難

https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/

226. 翻轉二叉樹 簡單

https://leetcode-cn.com/problems/invert-binary-tree/

236. 二叉樹的最近公共祖先 中等

https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/

297. 二叉樹的序列化與反序列化 困難

https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/

337. 打家劫舍 III 中等

https://leetcode-cn.com/problems/house-robber-iii/

437. 路徑總和 III 中等

https://leetcode-cn.com/problems/path-sum-iii/

538. 把二叉搜索樹轉換為累加樹 中等

https://leetcode-cn.com/problems/convert-bst-to-greater-tree/

543. 二叉樹的直徑 中等

https://leetcode-cn.com/problems/diameter-of-binary-tree/

617. 合並二叉樹 簡單

https://leetcode-cn.com/problems/merge-two-binary-trees/

17. 電話號碼的字母組合 中等

https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/

102. 二叉樹的層序遍歷 中等

https://leetcode-cn.com/problems/binary-tree-level-order-traversal/

200. 島嶼數量 中等

https://leetcode-cn.com/problems/number-of-islands/

17. 電話號碼的字母組合 中等

https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/

22. 括弧生成 中等

https://leetcode-cn.com/problems/generate-parentheses/

39. 組合總和 中等

https://leetcode-cn.com/problems/combination-sum/

46. 全排列 中等

https://leetcode-cn.com/problems/permutations/

78. 子集 中等

https://leetcode-cn.com/problems/subsets/

79. 單詞搜索 中等

https://leetcode-cn.com/problems/word-search/

301. 刪除無效的括弧 困難

https://leetcode-cn.com/problems/remove-invalid-parentheses/

394. 字元串解碼 中等

https://leetcode-cn.com/problems/decode-string/

19. 刪除鏈表的倒數第 N 個結點 中等

https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/

141. 環形鏈表 簡單

https://leetcode-cn.com/problems/linked-list-cycle/

142. 環形鏈表 II 中等 弗羅里德判圈法

https://leetcode-cn.com/problems/linked-list-cycle-ii/

287. 尋找重復數 中等 弗羅里德判圈法

https://leetcode-cn.com/problems/find-the-plicate-number/

20. 有效的括弧 簡單

https://leetcode-cn.com/problems/valid-parentheses/

42. 接雨水 困難

https://leetcode-cn.com/problems/trapping-rain-water/

84. 柱狀圖中最大的矩形 困難

https://leetcode-cn.com/problems/largest-rectangle-in-histogram/

85. 最大矩形 困難

https://leetcode-cn.com/problems/maximal-rectangle/

155. 最小棧 簡單

https://leetcode-cn.com/problems/min-stack/

739. 每日溫度 中等

https://leetcode-cn.com/problems/daily-temperatures/

33. 搜索旋轉排序數組 中等

https://leetcode-cn.com/problems/search-in-rotated-sorted-array/

48. 旋轉圖像 中等

https://leetcode-cn.com/problems/rotate-image/

96. 不同的二叉搜索樹 中等

https://leetcode-cn.com/problems/unique-binary-search-trees/

169. 多數元素 簡單

https://leetcode-cn.com/problems/majority-element/

238. 除自身以外數組的乘積 中等

https://leetcode-cn.com/problems/proct-of-array-except-self/

240. 搜索二維矩陣 II 中等

https://leetcode-cn.com/problems/search-a-2d-matrix-ii/

406. 根據身高重建隊列 中等

https://leetcode-cn.com/problems/queue-reconstruction-by-height/

34. 在排序數組中查找元素的第一個和最後一個位置 中等

https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/

136. 只出現一次的數字 簡單

https://leetcode-cn.com/problems/single-number/

338. 比特位計數 簡單

https://leetcode-cn.com/problems/counting-bits/

461. 漢明距離 簡單

https://leetcode-cn.com/problems/hamming-distance/

146. LRU 緩存機制 中等

https://leetcode-cn.com/problems/lru-cache/

160. 相交鏈表 簡單

https://leetcode-cn.com/problems/intersection-of-two-linked-lists/

206. 反轉鏈表 簡單

https://leetcode-cn.com/problems/reverse-linked-list/

234. 迴文鏈表 簡單

https://leetcode-cn.com/problems/palindrome-linked-list/

207. 課程表 中等

https://leetcode-cn.com/problems/course-schele/

208. 實現 Trie (前綴樹) 中等

https://leetcode-cn.com/problems/implement-trie-prefix-tree/

215. 數組中的第K個最大元素 中等

https://leetcode-cn.com/problems/kth-largest-element-in-an-array/

239. 滑動窗口最大值 困難

https://leetcode-cn.com/problems/sliding-window-maximum/

347. 前 K 個高頻元素 中等

https://leetcode-cn.com/problems/top-k-frequent-elements/

322. 零錢兌換 中等

https://leetcode-cn.com/problems/coin-change/

416. 分割等和子集 中等

https://leetcode-cn.com/problems/partition-equal-subset-sum/

494. 目標和 中等

https://leetcode-cn.com/problems/target-sum/

312. 戳氣球 困難

https://leetcode-cn.com/problems/burst-balloons/

322. 零錢兌換 中等

https://leetcode-cn.com/problems/coin-change/

399. 除法求值 中等

https://leetcode-cn.com/problems/evaluate-division/

560. 和為K的子數組 中等

https://leetcode-cn.com/problems/subarray-sum-equals-k/

621. 任務調度器 中等

https://leetcode-cn.com/problems/task-scheler/

二十三、馬拉車(中心擴散+對稱性)

647. 迴文子串 中等

https://leetcode-cn.com/problems/palindromic-substrings/

⑧ 股票買入賣出規則

一、股票買入賣出規則例舉如下:
1、交易時間,除了法定節假日以外,中國股市的交易時間為周一至周五的上午9:30—11:30,下午1:00—3:00,每天4個小時。股票賣出後當天是不能把錢提取出來的,只能等到下一個交易日。在買賣股票時還要注意漲跌幅度的限制,除了科創板20%以外,其餘的都是10%的漲跌幅度限制,被標注st的股票每天有5%的漲跌停限制。 股票實行T+1交易,即當天買入次日才能賣出,股票買入賣出時以1手為基本單位,1手等於100股,買入賣出時需要按照整數倍增加。科創板最低買入賣出為2手,超過2手可以以1股為基本單位增加。一隻股票在漲停跌停時停止交易,主板漲跌幅限制為10%,科創板為20%,ST股和*ST股為5%,節假日股市休市交易所停止股票交易。?
2、競價成交,股市的成交排序規則為:價格較高的委託買單優先於價格較低的委託買單,價格較低的委託賣單優先於價格較高的委託賣單。價格相同的委託,按委託時間排序。??
3、交易單位,股票的交易單位為「手」,一手即為100股,委託買入數量必須為100股或者為其整倍數。股票買入時只能按手為單位進行交易,主板最低1手,然後按照1手的整數倍增加,科創板最低2手買入,不過比2手多時可以按1股的數量逐步增加,比如可以購買201股。它和主板的買入規則有一定的出入。股票賣出時也必須按手進行交易,這里當科創板股票賣出高於2手後也可以按一股的數量增加賣出,也就是可以賣出201股。不論是什麼板塊的股票,當天買進之後不能當天賣出,至少等到下一個交易日賣出。
4、報價單位, 股票的報價單位與交易單位有所區別,股票的報價單位為「股」,即某某股票當前價位為10元每股。??
二、股票賣出基本策略
1、在市場上發現更好的機會時,如果此時資金不足,可以拋出手中股票回收資金買入新股;
2、當股價在阻力位無法繼續上漲,此時投資者應當適量減倉或者清倉,如果突破阻力位則視情況賣出獲利出局;
3、購入股票後股價到達止盈位時,及時獲利出局,避免猶豫或者貪婪造成損失;
4、購入股票後股價跌到止損位時應及時賣出止損,尋找更好的投資機會;
5、購入股票後公司基本面有了變化,並且這種變化對股價產生負面影響,投資者可以果斷出局。

⑨ 程序員演算法實現-買賣股票的最佳時機系列問題

主要思路:因為只有一股可以交易,所以我們可以枚舉 必須以i位置作為賣出時機的情況下,得到的最大收益是多少。如果我們得到每個i位置的最大收益,那麼最大收益必是所有位置的最大收益的最大值

使用兩個變數:

min變數:表示遍歷到的位置之前的最小值是什麼。

max變數:表示當前收集到必須以i位置賣出的最大收益是多少。

遍歷數組一遍,在遍歷到i位置的時候,min和max的更新邏輯如下:

遍歷完數組,返回max的值就是最終答案。完整代碼見:

主要思路:由於可以進行任意次的交易,但是任何時候最多隻能持有一股股票,所以我們可以把股票曲線的所有 上升段 都抓取到,累加收益就是最大收益。遍歷數組,遍歷到的位置減去前一個位置的值,如果是正數,就收集,如果是負數,就把本次收益置為0(就等於沒有做這次交易),這樣遍歷一遍數組,就不會錯過所有的收益。

設置一個變數max,初始為0,用於收集最大收益值,來到i位置,max更新邏輯如下:

完整代碼如下:

由本題可以簡單得出一個結論: 如果數組元素個數為N,則最多執行N/2次交易就可以抓取所有的上升段的值(極端情況下,當前時刻買,下一個時刻賣,保持這樣的交易一直到最後,執行的交易次數就是N/2)

主要思路:

在第2種情況下,我們定義

其中dp[i][j]表示[0...i]范圍內交易j次獲得的最大收益是多少。如果可以把dp這個二維表填好,那麼返回dp[N-1][k]的值就是題目要的答案。

dp這個二維矩陣中,

第一行的值表示數組[0..0]范圍內,交易若干次的最大收益,顯然,都是0。

第一列的值表示數組[0...i]范圍內,交易0次獲得的最大收益,顯然,也都是0。

針對任何一個普遍位置dp[i][j]的值,

我們可以枚舉i位置是否參與交易,如果i位置不參與交易,那麼dp[i][j] = dp[i-1][j],如果i位置參與交易,那麼i位置一定是最後一次的賣出時機。

那最後一次買入的時機,可以是如下情況:

最後一次買入的時機在i位置,那麼dp[i][j] = dp[i][j-1] - arr[i] + arr[i]

最後一次買入的時機在i-1位置,那麼dp[i][j] = dp[i-1][j-1] - arr[i-1] + arr[i]

最後一次買入的時機在i-2位置,那麼dp[i][j] = dp[i-2][j-1] - arr[i-2] + arr[i]

...

最後一次買入的時機在0位置,那麼dp[i][j] = dp[0][j-1] - arr[0] + arr[i]

完整代碼如下:

上述代碼中包含一個枚舉行為

增加了時間復雜度,我們可以優化這個枚舉。

我們可以舉一個具體的例子來說明如何優化,

比如,

當我們求dp[5][3]這個值,我們可以枚舉5位置是否參與交易,假設5位置不參與交易,那麼dp[5][3] = dp[4][3],假設5位置參與交易,那麼5位置一定是最後一次的賣出時機。那最後一次買入的時機,可以是如下情況:

最後一次買入的時機在5位置,那麼dp[5][3] = dp[5][2] - arr[5] + arr[5]

最後一次買入的時機在4位置,那麼dp[5][3] = dp[4][2] - arr[4] + arr[5]

最後一次買入的時機在3位置,那麼dp[5][3] = dp[3][2] - arr[3] + arr[5]

最後一次買入的時機在2位置,那麼dp[5][3] = dp[2][2] - arr[2] + arr[5]

最後一次買入的時機在1位置,那麼dp[5][3] = dp[1][2] - arr[1] + arr[5]

最後一次買入的時機在0位置,那麼dp[5][3] = dp[0][2] - arr[0] + arr[5]

我們求dp[4][3]這個值,我們可以枚舉4位置是否參與交易,假設4位置不參與交易,那麼dp[4][3] = dp[3][3],假設4位置參與交易,那麼4位置一定是最後一次的賣出時機。那最後一次買入的時機,可以是如下情況:

最後一次買入的時機在4位置,那麼dp[4][3] = dp[4][2] - arr[4] + arr[4]

最後一次買入的時機在3位置,那麼dp[4][3] = dp[3][2] - arr[3] + arr[4]

最後一次買入的時機在2位置,那麼dp[4][3] = dp[2][2] - arr[2] + arr[4]

最後一次買入的時機在1位置,那麼dp[4][3] = dp[1][2] - arr[1] + arr[4]

最後一次買入的時機在0位置,那麼dp[4][3] = dp[0][2] - arr[0] + arr[4]

比較dp[5][3]和dp[4][3]的依賴關系,可以得到如下結論:

假設在求dp[4][3]的過程中,以下遞推式的最大值我們可以得到

dp[4][2] - arr[4]

dp[3][2] - arr[3]

dp[2][2] - arr[2]

dp[1][2] - arr[1]

dp[0][2] - arr[0]

我們把以上式子的最大值定義為best,那麼

dp[5][3] = Math.max(dp[4][3],Math.max(dp[5][2] - arr[5] + arr[5], best + arr[5]))

所以dp[5][3]可以由dp[4][3]加速得到,

同理,

dp[4][3]可以通過dp[3][3]加速得到,

dp[3][3]可以通過dp[2][3]加速得到,

dp[2][3]可以通過dp[1][3]加速得到,

dp[1][3]可以很簡單得出,dp[1][3]有如下幾種可能性:

可能性1,1位置完全不參與,則

可能性2,1位置作為最後一次的賣出時機,買入時機是1位置

可能性3,1位置作為最後一次的賣出時機,買入時機是0位置

此時,best的值為

然後通過dp[1][3]加速dp[2][3],通過dp[2][3]加速dp[3][3]......,所以二維dp的填寫方式是按列填,

先填dp[1][0],dp[1][2]一直到dp[1][k],填好第一列;

然後填dp[2][0],dp[2][1]一直到dp[2][k],填好第二列;

...

依次填好每一列,直到填完第N-1列。

枚舉行為被優化,優化枚舉後的完整代碼如下:

主要思路:上一個問題中,令k=2就是本題的答案。

主要思路:因為有了冷凍期,所以每個位置的狀態有如下三種:

定義三個數組,分別表示i位置這三種情況下的最大值是多少

顯然有如下結論:

針對一個普遍位置i

最大收益就是如上三種方式的最大值。完整代碼見:

由於三個數組有遞推關系,所以可以用三個變數替換三個數組,做空間壓縮,優化後的代碼如下:

主要思路:由於沒有冷凍期,所以在i位置的時候,狀態只有兩種

針對0位置

針對普遍位置i

完整代碼如下:

同樣的,兩個數組都有遞推關系,可以做空間壓縮,簡化後的代碼如下:

原文鏈接:買賣股票的最佳時機系列問題 - Grey Zeng - 博客園

⑩ 買賣股票計算公式

安卓系統設置鎖屏密碼的方法較多,可以有數字密碼、圖案密碼和PIN碼等等。但萬一忘記這些密碼,解鎖的方法無外乎兩種。 一、 Google賬號解鎖 前提:被鎖機器之前設置並登錄了google賬號,賬號密碼已知,且手機可以聯網。 步驟: 1、隨意5次輸入密碼,系統提示5次輸入錯誤,30秒後重試。 2、此時解鎖界面下方會提示「忘記密碼」,點擊輸入之前設置過的Google賬號和密碼即可立即解鎖。 ? 二、清空數據解鎖 前提:無任何限制條件,但手機中最好沒有重要的用戶數據資料。 1、關機狀態下同時按住開機鍵和音量加鍵,進入recovery。 2、依次選擇簡體中文-清空數據-清空用戶數據,重啟進入系統,此操作只刪除用戶數據,應用軟體得以保留。