方法:此題一種方法,是利用快慢指標,快指標先走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 驗證數獨的基礎上的...