Letcodeを開きました.
Pick oneボタンを押してランダムに問題を選んだ.
906. Super Palindromes
[left,right]の間では,NとN*Nはいずれもパーズ症候群の人数を計算する問題であるようだ.
right<1 e 18なので、可能なN<1 e 9です.
まず1 e 9個のファリンドロンを作製し,平方数がファリンドロンであることを確認した.
小数位数がnより小さい法林絞りを作る時間的複雑さはO(10^(n/2))である.
このときに生じるファリンドロンの個数も同じであり,nより小さい数のファリンドロンを確認する時間の複雑さはO(n)であるため,時間は十分である.
906. Super Palindromes
[left,right]の間では,NとN*Nはいずれもパーズ症候群の人数を計算する問題であるようだ.
right<1 e 18なので、可能なN<1 e 9です.
まず1 e 9個のファリンドロンを作製し,平方数がファリンドロンであることを確認した.
小数位数がnより小さい法林絞りを作る時間的複雑さはO(10^(n/2))である.
このときに生じるファリンドロンの個数も同じであり,nより小さい数のファリンドロンを確認する時間の複雑さはO(n)であるため,時間は十分である.
func superpalindromesInRange(_ left: String, _ right: String) -> Int {
var p = (1...9).map { "\($0)" }
var res = 0
for i in 1..<Int(1e4) {
let s = "\(i)", r = String(s.reversed())
for j in (0..<10).map { "\($0)" } + [""] {
p.append(s + j + r)
}
}
for n in p.map { Int($0)! * Int($0)! } {
if Int(left)! <= n, Int(right)! >= n {
var s = "\(n)", r = String(s.reversed())
res += s == r ? 1 : 0
}
}
return res
}
Reference
この問題について(Letcodeを開きました.), 我々は、より多くの情報をここで見つけました https://velog.io/@a-paka/Leetcode-를-풀어-보았다-rc28kbeyテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol