LeetCode 回文鍊錶的判斷

2022-06-22 10:09:07 字數 1253 閱讀 5217

編寫乙個函式,檢查輸入的鍊錶是否是回文的。

我的思路:

1.如果能知道長度的話,就可以把前半段鍊錶倒置,然後與後半段依次判斷。

2.直接把整個鍊錶倒置,再依次比對,但時間複雜度滿足不了o(n)。

/*

* * definition for singly-linked list.

* struct listnode

* }; */

class

solution

while

(reverse)

head=head->next;

reverse=reverse->next;

}return

true

; }

};

官方答案:

把鍊錶中的值儲存在乙個陣列中,再判斷轉置的陣列與原陣列是否相等。

class

solution:

def ispalindrome(self, head: listnode) -> bool

: vals =

current_node =head

while current_node is

not none:

current_node =current_node.next

return

vals == vals[::-1]

這個方法可以延伸到很多地方,值得一記。

2021 / 9 / 16 更新

關於c++中字串反轉的操作

1.reverse(iterator begin, iterator end)

需要呼叫 algorithm庫

#include #include #include #include using namespace std;

int main()

else

} }

if (temp < 0)

if (result[result.length()-1] == ',')

//for (int i = result.length() - 1; i >= 0; i--)reverse(result.begin(), result.end());

cout << result;

return 0;

}

鍊錶回文判斷

判斷一條單向鍊錶是不是 回文 回文,英文palindrome,指順著讀和反過來讀都一樣。判斷回文單向鍊錶跟判斷回文字串很大的區別就是遍歷。字串可以自由向前遍歷,而單向字串不行,因此最簡單直觀的思路就是將鍊錶翻轉,然後再進行比較。但是這種方法就比較笨,因為還需要建立另外乙個單鏈表來儲存原有的單鏈表,然...

判斷回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。鍊錶為單向無環鏈表 示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 這題是讓判斷鍊錶是否是回文鍊錶,所謂的回文鍊錶就是以鍊錶中間為中心點兩邊對稱。我們常見的有判斷乙個字串是否是回文字串,這個比較簡單,可以使用兩個指標,乙個最左邊...

leetcode 鍊錶 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?head null 空鍊錶,回文,返回true head.next null 只有乙個節點的列表,回文,返回tru...