- 博客(175)
- 收藏
- 关注
原创 2020-10-21
Svm最大间隔超平面:从二维空间扩展到多维空间时,就是找一个完全将d1和d2完全分开的超平面。为了使得这个超平面具有更强的鲁棒性,我们会去找最佳超平面,以最大间隔把两类样本分开的超平面。两类样本分别分割在该超平面的两侧;两侧距离超平面最近的样本点到超平面的距离被最大化了。SVM 最优化问题SVM 想要的就是找到各类样本点到超平面的距离最远,也就是找到最大间隔超平面。任意超平面可以用下面这个线性方程来描述:如图所示,根据支持向量的定义我们知道,支持向量到超平面的距离为 d,其他点到超平面的距离
2020-10-21 10:29:30 594
原创 最长连续序列
class Solution(object): def longestConsecutive(self, nums): hash_dict = dict() max_length = 0 for num in nums: if num not in hash_dict: left = hash_dict.get(num - 1, 0) right
2020-10-21 09:54:58 134
原创 零钱兑换
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1class Solution: def coinChange(self, coins: List[int], amount: int) -> int: l
2020-10-21 09:51:42 223
原创 9.27 linux
linux查看端口占用情况:lsof -i:端口号 (查看那个进程占用了xxx端口)linux查看端口号是否被占用:netstat -anp |grep 端口号查看进程号为xxx的进程在哪里:ps -ef|grep xxx查看当前所有监听端口·:netstat -nlp |grep LISTENlinux查看网络命令:ifconfig:查询、设置网卡与IP网络等相关参数:ifconfig {interface} {up|down} <== 观察与启动接口ifconfig interfa
2020-09-27 15:49:44 105
原创 9.27 计算机网络
只用二次握手有什么影响假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据,但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。在握手阶段存在两个队列:syns queue(半连接队列);accept queue(全连接队列)。三次握手中,在第一步server收到
2020-09-27 15:49:30 121
原创 9.27 数据库
mysql索引用了何种数据结构?用b树和b+树有什么特点?一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都至少包含ceil(m / 2)个孩子,最多有m个孩子。3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m。4.所有的叶子结点都位于同一层。5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。平衡树的优点采用平衡树的优点是:使树的结构较好,从而提高查找运算的速度。缺点是:是插入和删除运算变得复
2020-09-27 15:49:16 157
原创 9.27 操作系统
进程间通信每个进程都各自拥有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程A把数据从用户空间拷到内核缓冲区,进程B再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。管道( pipe ) 管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。【是由内核管理的一个缓冲区,速度慢,容量有限】命名管道 (named pipe) 命名管道也
2020-09-27 15:48:39 155
原创 9.27 python
闭包嵌套函数,第二层函数引用了第一层函数的变量,且返回的是第二层函数名。装饰器在不改变原函数情况下进行功能扩展。这个不改变包括函数内部的逻辑,和函数的调用代码。只需要在原来函数上方加一个魔术方法。import timedef time_it(func):def inner():start = time.time()func()end = time.time()print(‘用时:{}秒’.format(end-start))return inner@time_itdef fun
2020-09-27 15:46:25 346
原创 组合总和
给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。class Solution: def combinationSum4(self, nums: List[int], target: int) -> int: # f(4) = (f(3) ) + (f(2) ) + (f(1) ) dp = [0] * (target + 1) for n in nums:
2020-09-27 14:09:37 80
原创 组合总和3
找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。class Solution: def combinationSum3(self, k, n): res = [] def backtrack(path, index, n, k): if n == 0 and k == 0: #单次结束并添加的条件,和为n, 总数为k. res.a
2020-09-27 14:06:00 115
原创 组合总和2
candidates 中的每个数字在每个组合中只能使用一次。class Solution: def combinationSum2(self, candidates, target): # 将数组进行升序排序 candidates.sort() # 结果列表 ans = [] # 可能组合 tmp = [] def helper(idx, total): if
2020-09-27 14:01:25 101
原创 组合总和
class Solution: def combinationSum(self, candidates, target): # 结果列表 ans = [] # 可能的组合 tmp = [] def helper(idx, total): """回溯,求组合总和 Args: idx: 选取元素索引 total:
2020-09-27 13:53:05 91
原创 用两个栈来实现一个队列
class Solution: stack1 = [] stack2 = [] def push(self, node): self.stack1.append(node) def pop(self): if len(self.stack2) == 0: for i in range(len(self.stack1)): val = self.stack1.pop()
2020-09-18 13:47:17 84
原创 SXF python
闭包嵌套函数,第二层函数引用了第一层函数的变量,且返回的是第二层函数名。装饰器在不改变原函数情况下进行功能扩展。这个不改变包括函数内部的逻辑,和函数的调用代码。只需要在原来函数上方加一个魔术方法。import timedef time_it(func):def inner():start = time.time()func()end = time.time()print(‘用时:{}秒’.format(end-start))return inner@time_itdef fun
2020-09-17 22:25:24 304
原创 2020-09-15
给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S 中索引的位置开始读取字符串,直到 “#” 结束,来恢复我们之前的单词列表。那么成功对给定单词列表进行编码的最小字符串长度是多少呢?示例:输入: words = [“time”, “me”, “bell”]输出:
2020-09-15 12:36:26 103
原创 最长回文子串
class Solution: def longestPalindrome(self, s: str) -> str: length = len(s) dp = [[1] * length for _ in range(length)] left, right = 0, 0 #长度为1时 for i in range(1, length): for j in range(length-i):
2020-09-15 12:26:38 59
原创 孩子们的游戏
class Solution: def LastRemaining_Solution(self, n, m): x = 0 if n == 0: return -1 elif n == 1: return 0 for i in range(2,n+1): x = (x + m)%i r
2020-09-15 12:06:31 99
原创 丑数
class Solution: def GetUglyNumber_Solution(self, index): if index == 0: return 0 dp = [0]*index dp[0]=1 a,b,c = 0,0,0 for i in range(1,index): na = dp[a]*2 nb = dp[b]*3
2020-09-15 12:05:04 97
原创 顺时针打印矩阵
class Solution: # matrix类型为二维列表,需要返回列表 def printMatrix(self, matrix): # matrix类型为二维列表,需要返回列表 row = len(matrix) res = [] while matrix: for i in range(len(matrix[0])): res.append(matrix[0][i])
2020-09-15 12:04:14 82
原创 二叉树的最大路径和
我们先定义一个全局变量res=flaot("-inf")来存储全局的最大值,也就是我们需要返回的值对于节点值为20的节点,我们考虑的是对于以这个节点为根节点的路径的最大值是多少我们有这么几种几种情况:1.根节点自己就是最大的,不需要加上左右子树的路径2.根节点加上左子树的最大路径是最大3.根节点加上右子树的最大路径是最大的4.根节点加上左右子树的最大路径是最大的我们每次判断下这几个变量的最大值,就是以当前节点为根节点的路径的最大值# Definition for a binary tree
2020-09-15 11:46:26 114
原创 堆排序
def heapify(arr, n, i): largest = i l = 2 * i + 1 # left = 2*i + 1 r = 2 * i + 2 # right = 2*i + 2 if l < n and arr[i] < arr[l]: largest = l if r < n and arr[largest] < arr[r]: largest = r if largest
2020-09-15 11:34:31 67
原创 os
内存3.1、固定分区、动态分区、分段式存储管理和分页式存储管理的区别 内存分配分为连续分配和非连续分配管理两种。3.1.1、内存连续分配1、单一连续分配:分为系统区和用户区,系统区供给操作系统使用,用户区供给用户使用,内存中永远只有一道程序。2、固定分区分配:最简单的一种多道程序管理方式,它将用户内存空间划分为若干个固定大小的区域,每个分区只装入一道作业。【方法一:分区大小相等;方法二:分区大小不等,划分为含有多个较小的分区,适量的中等分区及少量的大分区】3、动态分区分配:又称为可变分区分
2020-09-15 10:56:12 1622
原创 2020-09-15
闭包嵌套函数,第二层函数引用了第一层函数的变量,且返回的是第二层函数名。装饰器在不改变原函数情况下进行功能扩展。这个不改变包括函数内部的逻辑,和函数的调用代码。只需要在原来函数上方加一个魔术方法。import timedef time_it(func):def inner():start = time.time()func()end = time.time()print(‘用时:{}秒’.format(end-start))return inner@time_itdef fun
2020-09-15 10:46:48 233
原创 huawei
指针占用的内存空间大小在不同的操作系统及编译环境中,指针类型占用的字节数是不同的。一般而言,编译生成16位的代码时,指针占2个字节编译生成32位的代码时,指针占4个字节编译生成64位的代码时,指针占8个字节进程是如何执行的进程的实体是由程序段、数据段和进程控制块组成单道程序系统中,程序是顺序执行的。多道程序系统中,程序是并发运行的。进程一般存在三种情况:(1)就绪状态:我已经准备好,给我处理器,我就能够运行,这时的进程状态就是就绪状态;(2)运行状态:我已经获得资源。而且正在工作中。这
2020-09-15 10:40:01 227
原创 请你说一说TCP/IP数据链路层的交互过程
网络层等到数据链层用mac地址作为通信目标,数据包到达网络等准备往数据链层发送的时候,首先会去自己的arp缓存表(存着ip-mac对应关系)去查找改目标ip的mac地址,如果查到了,就讲目标ip的mac地址封装到链路层数据包的包头。如果缓存中没有找到,会发起一个广播:who is ip XXX tell ip XXX,所有收到的广播的机器看这个ip是不是自己的,如果是自己的,则以单拨的形式将自己的mac地址回复给请求的机器...
2020-09-14 22:44:47 166
原创 请你来说一下TCP三次握手四次挥手的过程,为什么tcp连接握手需要三次, time_wait状态
三次握手原因:三次握手是为了防止,客户端的请求报文在网络滞留,客户端超时重传了请求报文,服务端建立连接,传输数据,释放连接之后,服务器又收到了客户端滞留的请求报文,建立连接一直等待客户端发送数据。服务器对客户端的请求进行回应(第二次握手)后,就会理所当然的认为连接已建立,而如果客户端并没有收到服务器的回应呢?此时,客户端仍认为连接未建立,服务器会对已建立的连接保存必要的资源,如果大量的这种情况,服务器会崩溃。为什么TCP协议终止链接要四次?1、当客户端确认发送完数据且知道服务器已经接收完了,想要关闭
2020-09-14 22:43:55 117
原创 请问tcp握手为什么两次不可以?为什么不用四次?
两次不可以:tcp是全双工通信,两次握手只能确定单向数据链路是可以通信的,并不能保证反向的通信正常不用四次:本来握手应该和挥手一样都是需要确认两个方向都能联通的,本来模型应该是:1.客户端发送syn0给服务器2.服务器收到syn0,回复ack(syn0+1)3.服务器发送syn14.客户端收到syn1,回复ack(syn1+1)因为tcp是全双工的,上边的四部确认了数据在两个方向上都是可以正确到达的,但是2,3步没有没有上下的联系,可以将其合并,加快握手效率,所有就变成了3步握手。...
2020-09-14 22:42:49 1629
原创 请你说说传递到IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文
根据端口区分;看ip头中的协议标识字段,17是udp,6是tcp
2020-09-14 22:42:11 815
原创 请你说说TCP/IP数据链路层的交互过程
网络层等到数据链层用mac地址作为通信目标,数据包到达网络等准备往数据链层发送的时候,首先会去自己的arp缓存表(存着ip-mac对应关系)去查找改目标ip的mac地址,如果查到了,就讲目标ip的mac地址封装到链路层数据包的包头。如果缓存中没有找到,会发起一个广播:who is ip XXX tell ip XXX,所有收到的广播的机器看这个ip是不是自己的,如果是自己的,则以单拨的形式将自己的mac地址回复给请求的机器...
2020-09-14 22:41:43 260
原创 搜索baidu,会用到计算机网络中的什么层?每层是干什么的
浏览器要将URL解析为IP地址,解析域名就要用到DNS协议,首先主机会查询DNS的缓存,如果没有就给本地DNS发送查询请求。DNS查询分为两种方式,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS服务器,向根域名服务器发送查询请求,根域名服务器告知该域名的一级域名服务器,然后本地服务器给该一级域名服务器发送查询请求,然后依次类推直到查询到该域名的IP地址。DNS服务器是基于UDP的,因此会用到UDP协议。得到IP地址后,浏览器就要与服务器建立一个http连接。因此要用到http协议,http协
2020-09-14 22:40:36 485
原创 请介绍一下操作系统中的中断
中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保存现场后自动去执行相应的处理程序,处理完该事件后再返回中断处继续执行原来的程序。中断一般三类,一种是由CPU外部引起的,如I/O中断、时钟中断,一种是来自CPU内部事件或程序执行中引起的中断,例如程序非法操作,地址越界、浮点溢出),最后一种是在程序中使用了系统调用引起的。而中断处理一般分为中断响应和中断处理两个步骤,中断响应由硬件实施,中断处理主要由软件实施。...
2020-09-14 22:39:00 836
原创 请你说一说IP地址作用,以及MAC地址作用
MAC地址是一个硬件地址,用来定义网络设备的位置,主要由数据链路层负责。而IP地址是IP协议提供的一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。...
2020-09-14 22:38:25 546
原创 链表排序
# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def sortList(self, head: ListNode) -> ListNode: if head is None: return head # 分成三个链表,分别是比轴心数小,相等,大的数组成的链表
2020-09-14 22:35:23 77
原创 建立二叉树(非二叉搜索树)
class TreeNode(object): def __init__(self,item=None,left=None,right=None): self.item = item self.left = left self.right = rightclass BinaryTree(object): # 创建二叉树 def __init__(self): self.root = None # 根结点 def a
2020-09-14 15:40:08 90
原创 最大数
示例 1:输入: [10,2]输出: 210示例 2:输入: [3,30,34,5,9]输出: 9534330class Solution(object): def largestNumber(self, nums): for i in range(len(nums)): for j in range(len(nums) - i - 1): if str(nums[j]) + str(nums[j + 1]) >
2020-09-13 21:58:12 641
原创 二叉树有多少种
给一个整数n,求1,2.。。n为节点组成的二叉搜索树有多少种?def numtree(n): res = [0] * (n+1) res[0] = 1 res[1] =1 for i in range(2,n+1): for j in range(1,i+1): res[i] += res[j-1] * res[i-j] return res[n]a = numtree(3)print(a)...
2020-09-11 11:19:02 289
原创 和为K的子数组
input:5 41 2 1 3 4output:3def fun(array,num,target): ans = 0 sum_dict = {0:1} sum_temp = 0 for i in range(num): sum_temp += array[i] ans += sum_dict.get(sum_temp-target,0) sum_dict[sum_temp] = sum_dict.get(sum_t
2020-09-11 11:13:49 72
原创 表示数值的字符串
class Solution: def isNumber(self, s: str) -> bool: s = s.strip() fdot = False fe = False fdigit = False for index,value in enumerate(s): if value in ['+','-']: # + - 只能出现在第一个位置,或者中间且前面不能出现e。
2020-09-08 21:15:19 66
原创 正则表达式匹配
class Solution: def isMatch(self, s: str, p: str) -> bool: dp = [[False for _ in range(len(s)+1)]for _ in range(len(p)+1)] string = '#'+s patten = '#'+p dp[0][0] = True for i in range(len(string)):
2020-09-07 22:08:54 71
原创 剪绳子
def cuttingRope(n): dp = [0]*(n+1) dp[1] = 1 for i in range(2,n+1): for j in range(1,i): temp = max(dp[j],j)*max(i-j,dp[i-j]) dp[i] = max(dp[i],temp) return dp[-1]
2020-09-06 19:38:49 76
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人