leetcode
小美美眉
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指offer-求1+2+3+...+n
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解法一、def Sum_Solution(n): ans = n temp = ans and Sum_Solution(n-1) ans = temp + ans return ans如果a and b,a,b都不为0返回b,a为0返回a也就是0,a不为0b为0返回b也就是0...原创 2021-04-27 14:55:16 · 145 阅读 · 0 评论 -
剑指offer-孩子们的游戏(圆圈中最后剩下的数)
每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请你试着想下,哪个小朋友会得到这份礼品原创 2021-04-26 17:06:35 · 187 阅读 · 0 评论 -
剑指offer-整数中1出现的次数(从1到n整数中1出现的次数)
输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数例如,1~13中包含1的数字有1、10、11、12、13,因此共出现6次解法一、暴力解法join()方法map函数class Solution: def NumberOf1Between1AndN_Solution(self, n): # write code here return ''.join(map(str, range(n+1))).count('1')解法二、例:对于8248832原创 2021-04-26 15:39:12 · 195 阅读 · 1 评论 -
剑指offer-对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。输入:{8,6,6,5,7,7,5}输出:true输入:{8,6,9,5,7,7,5}输出:false思路一: 二叉树就要想到用递归class Solution: def isSymmetrical(self, pRoot): # write code here if not pRoot: return True原创 2021-03-16 15:05:23 · 96 阅读 · 0 评论 -
剑指offer-二叉搜索树的后序遍历序列
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜素树)输入:[4,8,6,12,16,14,10]输出:true思路一: 二叉搜索树中左子树的节点的值小于根节点的值小于右子树的节点的值class Solution: def VerifySquenceOfBST(self, sequence): # write code here if原创 2021-03-15 15:59:09 · 113 阅读 · 0 评论 -
剑指offer-从上往下打印二叉树
从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路一: 不用队列,????class Solution: # 返回从上到下每个节点值列表,例:[1,2,3] def PrintFromTopToBottom(self, root): # write code here if not root: return [] currentStack = [root] res = [] w原创 2021-03-15 14:18:11 · 105 阅读 · 0 评论 -
剑指offer-树的子结构
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)输入:{8,8,#,9,#,2,#,5},{8,9,#,2}输出:true**思路一:**对于两棵二叉树来说,要判断B是不是A的子结构 ,首先先找到数A中和树B值一样的节点。找到了这一节点之后再分别判断两个左子节点是否相等和两个右子节点是否相等。首先,我们先查找到这个相等的节点,采用递归的方法来遍历整棵树找到这个节点之后,第二步我们用另一个递归来分别比较左子节点和右子节点。class Solution:原创 2021-03-12 17:06:07 · 100 阅读 · 0 评论 -
剑指offer-把二叉树打印成多行
上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。输入:{8,6,10,5,7,9,11}输出:[[8],[6,10],[5,7,9,11]]**思路一:**定义队列储存current当前节点,next_layer储存当前节点的子节点,current临时存储每一行的数据,并将下一行数据存储在next_layer,然后将结果append到result里,再输进新的数据。class Solution: # 返回二维列表[[1,2],[4,5]] def Print(self,原创 2021-03-12 14:40:16 · 185 阅读 · 0 评论 -
剑指offer-二叉树的下一个结点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:中序遍历 左结点→根结点→右结点首先观察有无右节点,如果有右节点,则先指向右节点再指向最后一个左节点若没有右节点,则向前找根节点,找到第一个当前结点是父节点左孩子的节点class Solution: def GetNext(self, pNode): # write code here if pNode.right:#原创 2021-03-09 16:37:02 · 122 阅读 · 0 评论 -
剑指offer-二叉搜索树的第k个结点
给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。注:题目中要求的是返回结点,而不是结点的值根据二叉搜索树的性质:中序遍历自动排好序# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回对应节点TreeN原创 2021-03-09 15:49:37 · 96 阅读 · 0 评论 -
剑指offer-两个链表的第一个公共结点
输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)思路一:找到第一个公共结点,也可以理解为链表反转找到最后一个公共结点,可以用栈来实现从尾部出发寻找。class Solution: def FindFirstCommonNode(self, pHead1, pHead2): # write code here if not pHead1 or not pHead2:原创 2021-03-04 16:28:22 · 132 阅读 · 1 评论 -
剑指offer-链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个结点。快慢指针,判断好特殊情况:空链表k大于链表的节点长度class Solution: def FindKthToTail(self , pHead , k ): # write code here if not pHead: return None fast,slow = pHead,pHead while fast and k: fas原创 2021-03-03 14:08:19 · 97 阅读 · 0 评论 -
剑指offer-合并两个排序的链表
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。非递归解法:class Solution: # 返回合并后列表 def Merge(self, pHead1, pHead2): # write code here tmp = ListNode(0) pHead = tmp while pHead1 and pHead2: if pHead1.val <原创 2021-03-03 11:04:07 · 85 阅读 · 0 评论 -
剑指offer-找出数组中重复的数字
找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3法一:将数组排序,然后依次看相邻元素是否相同,有相同直接returnclass Solution(object): def findRepeatNumber(self, nums): """原创 2021-03-01 15:34:21 · 136 阅读 · 0 评论 -
剑指offer-不用加减乘数做加法
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。????????解法(仅限python):class Solution: def Add(self, num1, num2): # write code here res = [] res.append(num1) res.append(num2) return sum(res)位运算位运算加法分普通加法+位运算使用异或运算不能实现原创 2021-02-25 16:37:58 · 111 阅读 · 0 评论 -
剑指offer--数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。此题主要考虑base和exponent的三种情况:正数、负数、0引入numpy.power()用于数组元素求n次方numpy.power(x1,x2):写可以是数字,也可以是数组,但是x1和x2的列数要相同import numpy print(numpy.power(2, 3))特殊情况:0的0次方和0的负数次方无意义0的任何次方为0除0以外的任何数的0次方为1正常情况:原创 2021-01-26 17:26:05 · 93 阅读 · 0 评论 -
剑指offer--二进制中1的个数
输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。思路一:一个一个的数引入bin()函数:bin(x)将整数转换为前缀为“0b”的二进制字符串,x必须是一个python int对象。print(bin(3))print(type(bin(3)))print(bin(-10))print(type(bin(-10)))0b11<class 'str'>-0b1010<class 'str'>class Solution: def N原创 2021-01-25 17:34:58 · 135 阅读 · 0 评论 -
剑指offer--变态跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。方法一:假设????跳n阶有f(n)种方法,手动计算,比较笨的方法,计算出????跳1阶有1种方法,????跳2接有2种方法,????跳3阶有4种方法,????跳4接有8种方法…类推一下????跳n阶 f(n)=2∗f(n−1)f(n)=2*f(n-1)f(n)=2∗f(n−1)class Solution: def jumpFloorII(self, number):原创 2021-01-15 11:11:55 · 97 阅读 · 0 评论 -
剑指offer--跳台阶
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。假设跳到第n级有f(n)种跳法,????跳到第n级有两种方法:从第n-1级跳到第n级,跳到第n-1级有f(n-1)种跳法从第n-2级跳到第n级,跳到第n-2级有f(n-2)种跳法所以,????跳到第n级 f(n)=f(n−1)+f(n−2)f(n)=f(n-1)+f(n-2)f(n)=f(n−1)+f(n−2)得出了斐波那契数列(前提是????一次只可跳一级或者两级)cl原创 2021-01-14 16:43:34 · 109 阅读 · 0 评论 -
剑指offer--平衡二叉树
输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None原创 2021-01-13 16:16:24 · 83 阅读 · 0 评论 -
剑指offer--重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。# -*- coding:utf-8 -*-# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left =原创 2021-01-12 15:03:58 · 88 阅读 · 0 评论 -
剑指offer——连续子数组的最大和
输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).# -*- coding:utf-8 -*-class Solution: def FindGreatestSumOfSubArray(self, array): if not array: return 0 max = array[0] sum = array[0]原创 2020-12-28 16:40:50 · 99 阅读 · 0 评论
分享