劍指offer 18 21記錄

2021-10-03 16:48:55 字數 2348 閱讀 3607

給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。

返回刪除後的鍊錶的頭節點。

注意:此題對比原題有改動

示例 1:

輸入: head = [4,5,1,9], val = 5

輸出: [4,1,9]

解釋: 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 1 -> 9.

示例 2:

輸入: head = [4,5,1,9], val = 1

輸出: [4,5,9]

解釋: 給定你鍊錶中值為 1 的第三個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 5 -> 9.

說明:題目保證鍊錶中節點的值互不相同

若使用 c 或 c++ 語言,你不需要 free 或 delete 被刪除的節點

思路:注意頭結點即可,製造乙個假節點解決問題是常用方法。

/**

* definition for singly-linked list.

* public class listnode

* }*/class solution

}return temp.next;

}}

請實現乙個函式用來匹配包含'. '和'*'的正規表示式。模式中的字元'.'表示任意乙個字元,而'*'表示它前面的字元可以出現任意次(含0次)。在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"ab*ac*a"匹配,但與"aa.a"和"ab*a"均不匹配。

示例 1:

輸入:s = "aa"

p = "a"

輸出: false

解釋: "a" 無法匹配 "aa" 整個字串。

示例 2:

輸入:s = "aa"

p = "a*"

輸出: true

解釋: 因為 '*' 代表可以匹配零個或多個前面的那乙個元素, 在這裡前面的元素就是 'a'。因此,字串 "aa" 可被視為 'a' 重複了一次。

示例 3:

輸入:s = "ab"

p = ".*"

輸出: true

解釋: ".*" 表示可匹配零個或多個('*')任意字元('.')。

示例 4:

輸入:s = "aab"

p = "c*a*b"

輸出: true

解釋: 因為 '*' 表示零個或多個,這裡 'c' 為 0 個, 'a' 被重複一次。因此可以匹配字串 "aab"。

示例 5:

輸入:s = "mississippi"

p = "mis*is*p*."

輸出: false

s 可能為空,且只包含從 a-z 的小寫字母。

p 可能為空,且只包含從 a-z 的小寫字母,以及字元 . 和 *。

思路:字串dp,注意仔細讀題。

class solution 

for (int i = 0; i < slen; i++) }}

return dp[slen][plen];

}}

請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100"、"5e2"、"-123"、"3.1416"、"0123"及"-1e-16"都表示數值,但"12e"、"1a3.14"、"1.2.3"、"+-5"及"12e+5.4"都不是。

思路1:try catch

class solution 

double.valueof(s);

return true;

} catch (exception exception)

}}

思路2:正則

class solution:

def isnumber(self, s: str) -> bool:

return bool(re.match(r' *[+-]?([0-9]+(\.[0-9]*)?|\.[0-9]+)(e[+-]?[0-9]+)? *$', s))

輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。

示例:輸入:nums = [1,2,3,4]

輸出:[1,3,2,4] 

注:[3,1,2,4] 也是正確的答案之一。

1 <= nums.length <= 50000

1 <= nums[i] <= 10000

思路:和快排一趟partation類似

class solution 

return nums;

}}

記錄劍指offer

1.四種與型別轉換相關的關鍵字 p23 type conversions 2.單例模式設計 p32 todo 單例模式設計 在真實的面試中有被問到過 餓漢式 多執行緒安全 餓漢式 在定義例項的時候就去new物件 以空間換時間 class csingleton private class garbag...

劍指offer學習記錄

原碼 機器碼 反碼 除符號位,各位取反 補碼 反碼加一 此時沒有符號位的概念,即符號位也參與運算 例子 於是補碼的出現,解決了0的符號以及兩個編碼的問題 1 1 1 1 0000 0001 原 1000 0001 原 0000 0001 補 1111 1111 補 0000 0000 補 0000 ...

劍指offer 難題記錄

將最近幾天遇到的難題,整理記錄下來,以備複習!記錄兩個有趣的 csdn排行第一部落格和左耳朵陳浩關於fork 一 正規表示式匹配 本文參考 正規表示式 題目描述 請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配...