leetcode247.中心对称数 II

1.题目描述

中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。

找到所有长度为 n 的中心对称数。

示例 :

输入:  n = 2
输出: ["11","69","88","96"]

2.解题思路

  1. 首先当n为1的时候,直接得到["0","1","8"]
  2. 当n为2的时候,得到["00","11","69","88","96"],但是由于“00”不是数字,所以得剔除
  3. 当n为3的时候,其实就是将n为2的结果,中间插入n为1时候的结果,也就是如下所示:
  • ["101","111","181","609","619","689",...],只要把最后的结果,前缀为0的去除就可以了
  • 所以可以总结出规律,当n大于2的时候,都是将n等于2的结果,中间夹上n-2时的结果,这样就可以使用递归了,其中递归的中间值,可以使用HashMap来暂存。

作者:Andymon
链接:https://leetcode-cn.com/problems/strobogrammatic-number-ii/solution/tong-guo-di-gui-de-suan-fa-zhao-gui-lu-java-by-and/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

3.代码实现

class Solution(object):
    def findStrobogrammatic(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        if n == 1:
            return ["0","1","8"]
        dic = {}
        t = self.dfs(n,dic)
        res = []
        for string in t:
            if string[0] != "0":
                res.append(string)
        return res
    
    def dfs(self,n,dic):
        if n in dic:
            return dic[n]
        elif n == 1:
            l = ["0","1","8"]
            dic[n] = l
            return l
        elif n == 2:
            # 不要忘记加入“00”
            l = ["00","11","69","88","96"]
            dic[n] = l
            return l
        res = []
        l1 = self.dfs(2,dic)
        l2 = self.dfs(n-2,dic)
        for i in range(len(l1)):
            for j in range(len(l2)):
                res.append(l1[i][0] + l2[j] + l1[i][1])
        dic[n] = res
        return res
                
        

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LeetCode是一个非常受欢迎的在线程序设计题库,其中包含了各种各样的算法问题。而对称美学则是指设计或艺术作品中呈现出的对称性,使人观察时能够感受到一种平衡、和谐和美感。 LeetCode的题目往往可以看作是一个个问题,而解决这些问题的算法和据结构则可以视为对称美学的表现。 首先,LeetCode题目中常常要求我们设计对称的据结构,例如对称的二叉树、堆、队列等等。这些对称性的设计让我们在解决问题时能够更加高效地处理据,提高了程序的性能和稳定性。 其次,LeetCode的算法问题也常常要求我们设计对称的算法,例如字符串中的回文子串问题、组中的最长递增子序列问题等等。这些对称性的算法设计让我们在解决问题时能够更加简洁、清晰地表达解决思路,使得我们的代码更加易读、易懂。 不仅如此,LeetCode题目中还有很多需要对称地解决问题的场景,例如求解一棵二叉树的镜像、判断一个字符串是否是回文串等等。这些对称的问题不仅仅是算法和据结构的对称,更是让我们思考问题时能够从不同的角度出发,具备创造性和灵活性的体现。 总的来说,LeetCode对称美学体现在解决问题的算法和据结构的对称性、算法的对称性以及解决问题的多样性上。这种对称美学不仅满足了人们对美感的需求,同时也能够提高我们解决问题的能力和水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值