写在开头,这个专栏是记录刷题/学习/求职面试的小号专栏。主要方向约等于是混口饭吃干啥都行,希望能够在学习的过程中有所输出,也能帮助到别人~

废话少说,首先是经典的《剑指offer》系列,题目顺序是参考牛客网,以下都是python实现:剑指Offer_编程题_牛客网​www.nowcoder.com

1.二维数组中的查找

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

思路:举个栗子,数组长这个样子:

[[1,2,3,4,5],

[3,4,5,6,7],

[8,9,10,11,12]]

如果想找数字7,假设从左上角开始找,要么向右边找,要么向下面找(有两个方向要看);

假设右下角开始找,要么向上边找,要么向左边找(有两个方向要看);

假设从右上角开始找,只能选择一个方向,要么比5大的向下找,要么比5小的向左找(只看一个方向);

假设从左下角开始找,只能选择一个方向,要么比8小的向上找,要么比8大的向右找(只看一个方向)。

这样看来,只有一个方向的找起来更容易!所以我们可以从右上角开始(左下角也行没毛病)

找数字7的过程:

[[1,2,3,4,5],

[3,4,5,6,7],

[8,9,10,11,12]]

参考代码如下:

class Solution:

# array 二维列表

def Find(self, target, array):

# write code here

len_row = len(array) - 1 # 行的长度范围

len_col = len(array[0]) -1 # 列的长度范围

i = 0 # 从右上角开始,二维数组索引为array[0][len_col]

j = len_col # 用i,j来查找数组中的元素,i对应行,j对应列

while i <= len_row and j >= 0:

if target == array[i][j]:

return True

# 如果没找到且当前array[i][j]数值比target小,继续向下查找

elif target >= array[i][j]:

i += 1

# 如果没找到且当前array[i][j]数值比target大,向 查找

else:

j -= 1

# 搜索到数组边界也没找到target,说明没有,返回false

return False

最后运行结果:为啥运行时间这么久...TAT

2.替换空格

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

思路:第一个想到的就是用python中的replace方法:str.replace(old, new[, max]) ,把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

class Solution:

# s 源字符串

def replaceSpace(self, s):

# write code here

s = s.replace(' ', '%20')

return s

感觉这个方法有点,是不是误解了出题者意图,然后又尝试了另一种方法,用split方法分隔字符串,分隔符是空格,这个结果会保存到一个数组中。再用join方法把数组中每一个元素连接起来,连接符是“%20”:

class Solution:

# s 源字符串

def replaceSpace(self, s):

return "%20".join(s.split(' '))

好像变快了一点点,占用内存也变小了~

3. 从尾到头打印链表

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

思路:从头到尾遍历一遍链表,把它所有的值存到一个栈里,利用栈的先入后出特性,完成从尾到头打印。由于这个题里的输出需要时一个列表,所以这里利用列表作为存储结果,每次都存储到列表的第一个位置(伪装是栈),然后将列表返回。

一个丑陋的图示:有被丑到:)

# -*- coding:utf-8 -*-

# class ListNode:

# def __init__(self, x):

# self.val = x

# self.next = None

class Solution:

# 返回从尾部到头部的列表值序列,例如[1,2,3]

def printListFromTailToHead(self, listNode):

# write code here

stack = []

h = listNode # 用h代替listNode遍历

while h: # 停止条件,遍历到了链表的最后一个节点

stack.insert(0, h.val) # 向栈压入数值,模拟栈的push操作

h = h.next # 接着遍历

return stack困了

明天继续更~

剑指offerpython_剑指offer系列python实现 日更(一)相关推荐

  1. 剑指offer python实现_剑指offer系列python实现 日更(三)

    今天来讲讲斐波那契数列和它的孩子们~先讲个冷笑话:今天来一盘斐波那契炒饭,它等于昨天的炒饭加上前天的炒饭 ‍ 7.斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第 ...

  2. leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列

    剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...

  3. 在要求输入数字处找到非数字字符_剑指 Offer 67. 把字符串转换成整数 leetcode 剑指offer系列...

    点击专辑上方"蓝字"关注我吧 题目难度: 中等 原题链接[1] 今天继续更新剑指 offer 系列, 老样子晚上 6 点 45 分准时更新公众号 每日精选算法题, 大家记得关注哦~ ...

  4. 数组中其余的排除_[leetcode 剑指offer系列] 面试题04. 二维数组中的查找

    题目难度: 简单 原题链接 今天继续更新剑指 offer 系列, 这道题的优化空间非常大, 个人感觉很适合作为面试题, 值得一做. 大家在我的公众号"每日精选算法题"中的聊天框中回 ...

  5. 剑指offer系列-03.数组中的重复数字

    剑指offer系列第03题.数组中的重复数字 找出数组中重复的数字.在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内. 数组中某些数字是重复的,但不知道有几个数字重复了,也不 ...

  6. 剑指offer系列-24.反转链表

    剑指offer系列第24题.反转链表 题目描述: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例:输入: 1->2->3->4->5->N ...

  7. 剑指offer系列-06.从尾到头打印链表

    剑指offer系列第06题.从尾到头打印链表 题目描述: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1:输入:head = [1,3,2] 输出:[2,3,1] /* ...

  8. 剑指offer系列-30.包含min函数的栈

    剑指offer系列第30题.包含min函数的栈 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中, 调用 min.push 及 pop 的时间复杂度都是 ...

  9. 剑指offer系列-09.用两个栈设计队列

    剑指offer系列第09题.用两个栈设计队列 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead , 分别完成在队列尾部插入整数和在队列头部删除整 ...

最新文章

  1. 微服务“大门”如何选择?
  2. 史上最全的ubuntu16.04安装nvidia驱动+cuda9.0+cuDnn7.0
  3. 2 0 1 8 全球人工智能技术大会--邀请函
  4. 05传智_jbpm与OA项目_部门模块中增加部门的jsp页面增加一个在线编辑器功能
  5. 近业务=困死在一条船上?
  6. JavaScript遇到浏览器不兼容与解决方案
  7. 【讨论】不得不重视的问题:信息太多!信息太杂!
  8. [ SHELL编程 ] 远程服务器传输文件
  9. HAproxy配置文件操作
  10. scott用户对象维护
  11. 微信应用开发简单示例,学生自助报道系统
  12. 使用FFmpeg 编解码 FLV的HEVC(H265)格式的视频
  13. 电子科技大学计算机学院拟录取,2021年电子科技大学硕士研究生拟录取名单
  14. systemverilog之覆盖率
  15. ToolBar修改返回按钮图标
  16. R语言|导入excel数据
  17. 用Vue完成加减乘除运算
  18. Excel后缀名 .xls和.xlsx 有什么区别?
  19. vue视频播放插件vue-video-player
  20. 人机交互软件又添新成员,CarLink认证流程详解

热门文章

  1. python3.x中的生成器generator调用next方法
  2. FIFOQueue '_4_batch_processing/batch_join/fifo_queue' is closed and has insu
  3. python-opencv3 kmeans图像分类
  4. 奇异值的物理意义是什么?
  5. 十五、Redis三种特殊类型之二HyperLoglog
  6. oracle form 头行合计,FORM主从块头行金额汇总
  7. 文章收录查询 php,php实现检查文章是否被百度收录,_PHP教程
  8. 梁体混凝土弹性模量计算_预应力混凝土连续梁多点转向顶推施工技术研究
  9. parquet to mysql_在hive中使用parquet (CDH4.3)
  10. php 微信第三方登录demo,第三方登录 - 快速接入微信、QQ、微博等第三方登录方式 – 基于ThinkPHP和Bootstrap的极速后台开发框架...