自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 剑指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 84

原创 剑指offer-孩子们的游戏(圆圈中最后剩下的数)

每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请你试着想下,哪个小朋友会得到这份礼品

2021-04-26 17:06:35 111

原创 剑指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 114 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 49

原创 剑指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 56

原创 剑指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 49

原创 剑指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 48

原创 剑指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 74

原创 剑指offer-二叉树的下一个结点

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:中序遍历 左结点→根结点→右结点首先观察有无右节点,如果有右节点,则先指向右节点再指向最后一个左节点若没有右节点,则向前找根节点,找到第一个当前结点是父节点左孩子的节点class Solution: def GetNext(self, pNode): # write code here if pNode.right:#

2021-03-09 16:37:02 60

原创 剑指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 50

原创 Git库简单指令

workspace:工作区staging area:暂存区/缓存区local repository:版本库或本地仓库remote repository:远程仓库测试时测试机就是工作区,测试前需要从远程仓库pull下代码,或者从本地仓库拉下分支,有代码改动时,在本地改完需要push到远端。Git分支管理:创建分支:git branch branchname切换分支:git checkout branchname(当切换分支的时候,Git会用该分支的最后提交的快照替换工作目录的内容)合并分..

2021-03-08 17:37:41 79 1

原创 剑指offer-两个链表的第一个公共结点

输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)思路一:找到第一个公共结点,也可以理解为链表反转找到最后一个公共结点,可以用栈来实现从尾部出发寻找。class Solution: def FindFirstCommonNode(self, pHead1, pHead2): # write code here if not pHead1 or not pHead2:

2021-03-04 16:28:22 73 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 38

原创 剑指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 43

原创 TCP/IP

TCP用于应用程序之间的通信。当应用程序希望通过TCP与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP将在两个应用程序之间建立一个全双工的通信。IP用于计算机之间的通信。IP用于计算机之间的通信。IP是无连接的通信协议。它不会占用正在通信的计算机之间的通信线路。通过IP,消息被分割成小的独立的包,并通过因特网在计算机之间传送。IP负责将每个包路由至它的目的地。...

2021-03-02 14:33:32 41

原创 剑指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 68

原创 哈希表

大神详解哈希表

2021-03-01 14:59:37 162

原创 剑指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 66

原创 SFTP协议

SFTP是一种安全的文件传输协议,一种通过网络传输文件的安全方法。例:当想把一个文件从一台机器迁移到另一台机器时,就可以使用sftp首先,将需要转移的文件打包:tar zcvf filename.tar.gz ./filename登录sftp:sftp -oPort=端口号 个人sftp公司账号将文件put到sftp中:put filename.tar.gz登录另一台机器的sftp将压缩包get出来:get filename.tar.gz解压文件:tar zxvf filename.tar.gz

2021-02-25 11:16:11 2352

原创 linux基本指令

查看进程: ps aux | grep name杀死进程:kill -9 端口号当服务进行托管时,即杀掉进程后自动重启,这时候这样关服务托管:supervisorctl stop 服务托管

2021-02-22 16:13:52 110

原创 剑指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 42

原创 剑指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 81

原创 剑指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 43

原创 剑指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 55

原创 斐波那契数列(python实现)

斐波那契数列,又称黄金分割数列,以兔子繁殖为例子而引入,故又称兔子数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34、…在数学上,斐波那契数列又以递归的方法定义:F(1)=1,F(2)=1,F(n)=F(n−1)+F(n−2)(n>=2,n∈N∗)F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)F(1)=1,F(2)=1,F(n)=F(n−1)+F(n−2)(n>=2,n∈N∗)。Code#用for循环逐个打印出数列的值def

2021-01-14 14:27:16 14581 1

原创 剑指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 41

原创 DFS和BFS(python实现)

DFS的简要说明深度优先搜索(depth-first-search),是沿着树的搜索遍历树的节点,尽可能深的搜索树的分支,当节点v的所有边都已被探寻过,搜索将回溯到节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点重复以上过程,整个进程直到所有的节点都被访问为止。DFS是图论里面的一种一种搜索算法,由一个根节点触发,遍历所有子节点,进而把图中所有的可以构成树的集合都搜索一遍,达到全局搜索的目的。但时间复杂度太高,我们也叫暴力搜

2021-01-13 15:07:29 764 1

原创 python中set()函数的用法

创建集合set集合添加、删除集合添加的两种常用方法:update、addadd:是要把传入的元素作为一个整体添加到集合中:a = set('boy')a.add('python')a#set(['python','b','o','y'])update:是要把传入的元素拆分,作为个体传入到集合中a = set('boy')a.update('python')a#set(['p','y','t','h','o','n','b'])集合删除操作办法:removea = set(.

2021-01-13 14:10:53 460

原创 剑指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 35

原创 经典排序算法(Python实现)

冒泡排序算法思想(升序排序):第一次遍历,依次比较相邻两个元素的大小,大的放后面小的放前面,找到最大的元素排在最后,以此类推遍历n-1次。def BubbleSort(array) length = len(array) for i in range(length): for j in range(length-i-1): if array[j]>array[j+1]: array[j],array[j+1]

2020-12-31 11:37:41 171

原创 剑指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 48

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除