剑指offer(python实现)
不服输的南瓜
这个作者很懒,什么都没留下…
展开
-
日常算法练习
练习总结原创 2023-01-13 14:30:12 · 245 阅读 · 1 评论 -
二叉树中和为某一值的路径
递归方法:class Solution: # 返回二维列表,内部每个列表表示找到的路径 def FindPath(self, root, expectNumber): # write code here def FindAllPath(root, expectNumber): if root: ...原创 2019-07-07 12:23:29 · 282 阅读 · 0 评论 -
目录
平衡二叉树原创 2019-07-11 11:49:09 · 172 阅读 · 0 评论 -
平衡二叉树
题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。解题思路:1.从上到下,每个节点都计算一下左子树深度和右子树深度,然后计算差判断一下。代码实现:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None...原创 2019-07-10 22:29:16 · 157 阅读 · 0 评论 -
二叉树的镜像和对称的二叉树
二叉树的镜像题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。代码实现:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Sol...原创 2019-07-10 18:24:57 · 844 阅读 · 0 评论 -
滑动窗口的最大值
题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}。解题思路:利用双端队列,双端队列用数组就可以实现,一个个放数据到temp,如果新放的数据大于之前放入的数据就把之前数据都删除,保证temp[0]中放入的数据是当前窗口最大值。因...原创 2019-07-10 00:08:51 · 173 阅读 · 0 评论 -
左旋转字符串
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路:利用列表,在列表尾部添加列表的第一个元素,然后删除列表第一个元素。代码如下:后来发现...原创 2019-04-14 23:21:55 · 191 阅读 · 0 评论 -
和为S的两个数字
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。题目分析其实这个题很好理解,但要注意,题意是查找两个数,且是该数组是递增的,并非是非递减。当有多对时,根据题目中递增可知,在和一定的情况下两个数越远乘积越小。代码如下另附大佬的简洁代码:...原创 2019-04-11 21:53:59 · 161 阅读 · 0 评论 -
把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路先将正整数数组转换成字符串数组,然后排序,最后将排好序的字符串数组拼接起来,并转为int型。排序规则如下:若ab > ba 就a > b,则交换 刚开始尝试的规则是:若a >...原创 2019-04-11 20:43:04 · 273 阅读 · 0 评论 -
连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...原创 2019-04-11 20:00:33 · 170 阅读 · 0 评论 -
反转链表
题目描述:输入一个链表,反转链表后,输出新链表的表头。思路:比如1->2->3->4,遍历链表,把1的next置为None,2的next置为1,以此类推,4的next置为3,得到1<-2<-3<-4,即4->3->2->1。具体如下:代码如下:...原创 2019-04-06 11:21:50 · 182 阅读 · 0 评论 -
青蛙跳(递归)
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。分析:对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来,所以F(n) = F(n-1) + F(n-2),看到这儿就熟悉了吧,这不就是斐波拉契数列嘛,对的,就是。只是换了说法而已。但是尝试用递归实现时却超时,如下:只能换种方法:...原创 2019-07-11 22:43:23 · 4015 阅读 · 0 评论 -
求1+2+3+...+n
题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。看到题目后我脑子里没有什么短路求值定理,只有利用python内部函数sum( )这一个想法。。。。。不过还是学习了一下这个东西:简单来说就是利用逻辑与的短路特性实现递归终止。知识点:其中: “or”运算符表示“或”,有一个为真则全部为真;前...原创 2018-11-27 15:59:30 · 2147 阅读 · 1 评论