剑指offer-Python3版(一)

剑指offer Python3 版 (一)

daily learn

二维数组查找

Q:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

有不对的请大佬指正

思路 我的策略是从第一个数字开始往右找,到头了就往下一列继续往右找,直到最后一个
别把 i 和 j 搞混了

[[ * * * ]

[ * * * ]

[ * * * ]]

class Solution:
    def find(self, target, array):
        """
        查找一个顺序数组内是否有目标数字
        @param target:
        @param array:
        @return:
        """
        i = 0  # 行   #从头开始找
        j = 0  # 列
        while True:

            if target == array[i][j]:  # 等了就找到了
                return '找到%s了' % target
            if target < array[i][j]:  # 反正你第一个数字都比要找的数字大,那肯定就找不到了
                return '数字%s太小了' % target


            if target > array[i][j]:  # 要是要找的数字比array[i][j]大,就往后走
                if j < len(array[0]) - 1:
                    j += 1
                else:  # 到头了就让行数+1 列变0
                    i += 1
                    j = 0
                    if i > len(array) - 1:  # 你找到尾了,oops!
                        return '找不到%s' % target





if __name__ == '__main__':
    s = Solution()
    # 命令行输入版本
    arr = list(eval(input('输入二维数组:'))) # eval要带的 不带的话arr就是个str
    tar = int(input('输入要找的数字:'))
    # 写死版本
    # tar = 4
    # arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    # 测试版本
    # for num in range(1, 12):
    #     print(s.find(num, arr))
    print(s.find(tar, arr))

测试可以用注释的for循环看一下

找到1了
找到2了
找到3了
找到4了
找到5了
找到6了
找到7了
找到8了
找到9了
找不到10
找不到11

空格替换

Q: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy

这个easy

class Solution:
    def replacespace(self, stringing):
        """

        @param string:
        @return:
        """
        if ' ' in stringing:
            return stringing.replace(' ', '%20')
        else:
            return 'no space'



if __name__ == '__main__':
    s = Solution()
    req = 'Hello World !'
    print(s.replacespace(req))

结果展示

Hello%20World%20!

打印链表

Q: 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

说实话没怎么用到过链表,虽然简单

class Node(object):
    """
    节点类
    """

    def __init__(self, val):
        self.val = val
        self.next = None


class Solution:
    def tailTohead(self, listnode):
        """

        @return:
        """
        result = []
        while listnode:
            result.append(listnode.val)
            listnode = listnode.next
        return result[::-1] # 一个一个放进去,再倒着return出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值