122株を売却するための最良の時間、125検証文字列回文、162ピークを見つけます

122銘柄IIを取引するための最良の時間

i番目の要素が与えられた株式のi日の価格である配列を、与えられました。

あなたが得ることができる最大の利益を計算するアルゴリズムを設計します。あなたは、可能な限り(株式を売買)より取引を閉じることができます。

注:同時に複数のトランザクション(あなたは秋の前に再び株式を購入する前に売却しなければならない)に関与することはできません。

例1:

入力:[7,1,5,3,6,4]
出力:7
説明:2日目(= 1つの株価)、買って、3日目(株価= 5)で販売する場合、この取引は= 5-1 = 4を利益を得ることができます。
  売り切れの際はその後、5日目(株価= 6)で購入し、4日目(株価= 3)に、この取引は= 6-3 = 3を利益を得ることができます。
例2:

入力:[1,2,3,4,5]
出力:4を
説明する:(株価= 1)売却したときに、5日目(株価= 5)に、1日目に購入する際、これを取引所は、利益= 5-1 = 4することができます。
  あなたは、彼らが販売されて、その後の後、1日2一連の株式を購入することができないことに注意してください。
  それは複数のトランザクションに関与し、同じ時間に属しているので、あなたは再び購入する前に秋の前に在庫を売却しなければなりません。
例3:

入力:[7,6,4,3,1]
出力:0を
説明する。この場合、トランザクションが完了していない、最大の利益はゼロです。
この質問は、実際のインタビューの中で遭遇しましたか?

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii

クラス溶液:
DEF maxProfit(自己、価格):
lenの場合(価格)<= 1:
戻り0
合計= 0
の範囲でI(1、(価格)LEN):
もし価格[I]>価格[I-1] :
合計+ =価格[I] -価格[I-1]
リターントータル


源泉徴収ネットワークからのすべての著作権。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。


125回文配列を確認してください

文字列を考えると、大文字小文字を無視することができる、唯一のアルファベットと数字を検討し、それが回文文字列であることを確認してください。

説明:この問題では、我々は有効な回文配列として空の文字列を定義します。

例1:

入力:「男、計画、運河:パナマ」
出力:真の
例2:

入力:「カーレース」
出力:偽

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/valid-palindromeは
すべてのネットワークからの控除が著作権を保有。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。

クラス溶液:
isPalindrome(自己、S)DEF:
I、J = 0、(LEN(S)-1)
iが<jのつつ:
iがjとしないSを<しながら、[I] .isalnum():
I + = 1つの
一方:私はjとないS [J] .isalnum()<
= 1 - J
)の場合は[i]を.lower()= S [J] .lower(:!
返す偽
I + = 1
J - = 1
trueを返します

162見るとピーク

素子は、左右に隣接する要素の値よりも大きいピーク値を指します。

NUMS [i]は≠NUMS [I + 1]、そのピークを返す要素のインデックスを発見される入力配列NUMS、与えられました。

アレイは、この場合には、ピーク位置への復帰を複数のピークを含んでいてもよいです。

あなたはNUMS [-1] = NUM​​S [N] =-∞をとることができます。

例1:

入力:NUMSは= [1,2,3,1]
出力:2
説明:3がピーク要素である、それはあなたの関数インデックス2を返す必要があります。
例2:

入力:NUMS = [1,2,1,3,5,6,4]
出力:1又は5
説明:あなたができる機能は、インデックス1、ピーク2つの要素を返し、
  またはインデックス5、要素6のピークを返します。

出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/find-peak-element
すべてのネットワークからの控除が著作権を保有。商業転載は許可公式、非商用の転載は、ソースを明記してくださいお問い合わせください。

それは半分のピークがあることをなぜバイナリ検索大:(注意?(IEのNUMS [中期] <NUMS [ミッド+ 1]と、半ば+ 1〜Nがピークに存在している必要があります)私の理解では、最初に知られNUMSということです[中間+ 1]> NUMS [中間]は、次いで、2つだけの中間+ 2が中間+ 1より大きくてもよい、ミッド+ 1未満である、中間+ 1未満である場合、ピークミッド+ 1は、中間+よりも大きいです1)アレイの端部よりも大きくなるまで、その後確か最後の要素が原因NUMS [nums.length] =負の無限大、ピークである場合、右にプッシュし続けます

クラス溶液:
DEF findPeakElement(自己、NUMS:リスト[INT]) - > INT:
方法一
#サイズ= LEN(NUMS)
の範囲内のiについて(#1、サイズ1):
もしNUMS [i]が> NUMS [I-1]とNUMS [I]> NUMS [I + 1]:
私は#リターン
#戻り[0、サイズ- 1] [NUMS [0] <NUMS [サイズ-1]]
の方法の二
左右、= 0、LEN(NUMS) - 1つの

一方は<右から左:
2 //半ば=(右+左)
NUMS場合[中間] <NUMS [中間+ 1]:
左=ミッド+ 1
他:
右=ミッド
戻り左

 

おすすめ

転載: www.cnblogs.com/xqy-yz/p/11440898.html