分析:
是一道數學題。
距離最近的回文子串,總計三種可能情況。一是左半邊拷貝到右半邊,二是中間為0,則一半減一,再拷貝,三是中間為9,則一半加一,再拷貝。還有一些特殊情況。針對三位數,最近回文串範圍一定在[99,1001]之間,則再加上兩種情況。總共五種,減去與自身重複的選項。放進set。找到diff最小,若相同,則數值較小的結果,再輸出。
python
class solution:
def nearestpalindromic(self, n: str) -> str:
ans_set = set()
p1 = pow(10, len(n)-1)-1
p2 = pow(10, len(n))+1
ans_set.add(p1)
ans_set.add(p2)
mid = len(n)//2
for i in [-1, 0, 1]:
temp = str(int(n[: mid+(len(n)&0x01)])+i)
ans_set.add(int(temp + temp[-1-(len(n)&0x01)::-1]))
ans_set.discard(int(n))
mindiff = float('inf')
res = n
for i in ans_set:
if abs(int(n) - i) < mindiff:
mindiff = abs(int(n) - i)
res = str(i)
elif abs(int(n) - i) == mindiff:
res = str(min(i, int(res)))
return res
LeetCode 尋找最近的回文數
給定乙個整數 n 你需要找到與它最近的回文數 不包括自身 最近的 定義為兩個整數差的絕對值最小。示例 1 輸入 123 輸出 121 注意 n 是由字串表示的正整數,其長度不超過18。如果有多個結果,返回最小的那個。思路分析 如果陣列的字串長度 1,數字n 1 開頭為1,9 9為乙個候選答案 例 1...
尋找最近點對
一維的數很簡單,先排序,再掃瞄已排好的數,相鄰兩個進行比較即可,時間複雜度為o n log2n n o n log2n 兩維的話 把平面上n個點分成兩部分left和right。假設分別求出left和right兩部分最短距離mindistleft和mindistright,還有一種情況就是點對中乙個點...
尋找最近點對
問題 在空間中有n個點,尋找空間中最近的2個點。法一 遍歷,o n 2 法二 分治演算法 將點分為左右兩半,分別找到最近的2個點,然後考慮交叉位置的點對中的最小距離,在這3者中取最小的那個。o nlogn 步驟 1.按照x軸排序 2.找到中間點,分別進行處理 3.2邊處理完成,將進行 merge 過...