LeetCode 實踐練習61 65

2021-09-13 02:59:27 字數 2276 閱讀 4876

方法:此題一種方法,是利用快慢指標,快指標先走k步,然後兩個指標一起走,當快指標走到末尾時,滿指標指的下乙個位置即是新順序的頭結點(特殊情況鍊錶為空,k>n)。另一種方法,乙個指標即可,就是先遍歷整個鍊錶獲得鍊錶長度n,然後鍊錶的頭和尾接起來,然後往後走 n - (k % n),就到達了新鍊錶的頭節點前乙個點,這是斷開鍊錶即可。

class solution 

cur -> next = head;

int m = n - k%n;

for(

int i =

0;i < m;i++

)//斷開鍊錶

方法:第一反應是遞迴的題目(dfs)因為是求全部合理的路徑,但是這樣做會超時。這道題利用動態規劃,dp方法,由於每個格仔的路徑選擇,只與它相鄰的上面與左面有關聯,則可得下圖。

;//dp從零開始}}

方法:跟上一道題,類似,一樣的方法,需要注意的是,當遇到障礙,將其賦值0.尤其要考慮特殊的情況。

c++**:跟上一題的思路類似,利用上一格的值與左一格的值作比較,取最小,然後加上現在的值,沒寫出來是因為不知道邊緣怎麼處理,直接單獨寫個迴圈就可以。在考慮其他的。

方法:我們從題目中給的一些例子可以分析出來,我們所需要關注的除了數字以外的特殊字元有空格』 『,小數點』.』,自然數』e/e』,

還要加上正負號』+/-』,除了這些字元需要考慮意外,出現了任何其他的字元,可以馬上判定不是數字。下面逐一分析情況:

1.空格』 『:兩種情況,出現在開頭或結尾,另一種出現在中間的字元。出現在開頭和末尾的空格不影響數字,而一旦中間出現了空格,則判定不是數字。

2.小數點』.』:小數點分的情況較多,首先的是小數點只能出現一次,但是小數點可以出現在任何位置,但是不能出現在自然數e/e之後,例如』1e.1』false,』1e1.1『false。還有小數點位於末尾時,前面必須是數字,』-.『false。三個位置分情況討論。

3.自然數』e/e』:自然數的前後必須有數字,即自然數不能出現在開頭或結尾,如 「e」 false, 「.e1」 false, 「3.e」 false, 「3.e1」 true。

4.符號』+/-』:符號前面如果有字元的話必須是空格或者自然底數。

c++**:

class solution 

else

if(s[i]

=='+'

|| s[i]

=='-'

)else

if(s[i]

>=

'0'&& s[i]

<=

'9')

else

if(s[i]

=='.'

)else

if(s[i]

=='e'

)else

return false;

}return num && numaftere;}}

;

6 16程式設計練習

1.編寫乙個程式,建立乙個具有26個元素的陣列,並在其中儲存26個小寫字母。並讓該程式顯示該陣列的內容。include int main void for index 0 index 26 index return 0 2.使用巢狀迴圈產生下列圖案 include define row 5 int ...

LeetCode 實踐練習16 20

方法 還是先將陣列排個序,然後遍歷陣列,思路跟上一題相似,都是先確定乙個數,然後用兩個指標left和right來滑動尋找另外兩個數,每確定就求三數之和,然後算和給定值的差的絕對值存在newdiff中,比較更新即可。遞迴的思想 不是很了解,需詳細了解 方法 在這裡為了避免重複項,我們使用了stl中的s...

LeetCode 實踐練習36 40

方法 遍歷每個數字的時候,就看看包含當前位置的行和列以及3x3小方陣中是否已經出現該數字,那麼我們需要三個標誌矩陣,分別記錄各行,各列,各小方陣是否出現某個數字,其中行和列標誌下標很好對應,就是小方陣的下標需要稍稍轉換一下.方法 求解數獨的題是在之前那道 valid sudoku 驗證數獨的基礎上的...