自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

张泽的博客

Coding change world!

  • 博客(139)
  • 收藏
  • 关注

原创 滑动窗口的中位数-大小堆解法

对于滑动窗口,需要求出每一次的中位数,最简单暴力的方法就是对每一次的窗口内排序然后求中位数,此方法最简单。另外一种解法就是:将滑动窗口看成数据流(剑指offer上有这个题目),采用大小堆的方式来存在数据流,不过指定平衡策略要小心,各种情况都得考虑到。简写说法:左堆=大根堆 ; 右堆=小根堆非平衡情况:len(左堆) = len(右堆)+2:将左堆的最大值移到右堆len(左堆) = len(右堆)-1:将右堆的最小值移到左堆len(左堆)<len(右堆)+1:不做调整len(左堆.

2020-07-04 00:48:52 1008

原创 矩阵的对角遍历-建树层次遍历解法

一个二维矩阵要实现对角遍历:这个方法不一定是最快的,因为建树和复制的过程比较多。其中关键的地方就是:如何建树 和 如何左右层次遍历如何建树:1) 每个位置只能使用一次 2)建树其中一种方式:第一排均有左右孩子,其他仅有左孩子(也有其他方法,随你怎么建树)如何左右层次遍历:一般的层次遍历仅为左分支先进或者右分支先进,可以再两层交换时,设定方向标识符,来交换方向代码如下:import itertoolsfrom enum import Enumclass MatrixTreeNode:

2020-06-29 12:30:17 2828

原创 java异常 Exception in thread “main“ java.lang.IllegalArgumentException: Comparison method violates its

Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(TimSort.java:777) at java.util.TimSort.mergeAt(TimSort.java:514) at java.util.TimSort.mergeCollapse(TimSort.java

2020-11-17 10:23:58 916

原创 java- 类名.this.成员 和 this.成员 的区别

this.成员:this用于本类中,自身的引用,调用自身对象属性类名.this.成员用于内部内,调用外部类的成员。用 外部类.this 表示外部类的引用,用以 和 自身类进行区别class OutClass{ int a = 1; class InnerClass{ int a =0; this.a ; // 自身引用 InnerClass this.a == 0 OutClass.this.a // 外部类的引用 OutClass.this.a == 1 }}

2020-11-01 09:18:32 448

原创 java中Array.remove()方法,源码中不对负索引进行检查

public E remove(int index) { # 检查remove源码是,发现 其中对index 的检查仅限于上溢出检查 # 没有显示的对下溢出进行检查? rangeCheck(index); modCount++; # 在此处,elementData 是一个Object[] 对象实例,会自动对下溢出进行检查 !!! E oldValue = elementData(index); int numMove

2020-11-01 09:15:10 372

原创 python+flask 简单并发,使用gevent库

pip install geventfrom gevent.wsgi import WSGIServer #关键这个WSGIServer((‘127.0.0.1’, 5000), app).serve_forever()

2020-08-03 09:47:55 1396 1

原创 环形数组循环

给定一个含有正整数和负整数的环形数组 nums。 如果某个索引中的数 k 为正数,则向前移动 k 个索引。相反,如果是负数 (-k),则向后移动 k 个索引。因为数组是环形的,所以可以假设最后一个元素的下一个元素是第一个元素,而第一个元素的前一个元素是最后一个元素。确定 nums 中是否存在循环(或周期)。循环必须在相同的索引处开始和结束并且循环长度 > 1。此外,一个循环中的所有运动都必须沿着同一方向进行。换句话说,一个循环中不能同时包括向前的运动和向后的运动。示例 1:输入:[2,-1,1,

2020-07-26 10:32:52 471

原创 Python2 中遍历中文字符串

python2中,一个中文字符在中文字符串中,占3个位置,所以不能直接遍历获取里面的每一个中文字符,那么,有如下这种办法:text='我爱中国'text = unicode(text, 'utf-8')for i in text: print i

2020-07-10 19:10:24 716

原创 单词查找树-python

class Trie:def init(self):self.root = {}self.end_of_word = ‘#’def insert(self,word:str): node = self.root for char in word: node = node.setdefault(char,{}) node[self.end_of_word]=self.end_of_worddef search(self,word): node = s

2020-06-27 12:29:41 209

原创 位运算应用

位运算:基本上是数据运算里面速度最快的了,很多操作都可以采用位运算来进行计算。笔试又碰见了位运算的题目,剑指offer上页重点讲了位运算的原理,觉得还是非常重要的。判断奇偶:判断奇偶只需要二进制的最后一位就可以,二进制最右位位0则为偶,否则为奇比如:5 = 101 6 = 110,这很容易看出。 5 & 1 计算机运算时转为101 &001 =1,则为奇数。计算数的二进制包含多少个1。这跟1)很像,1)里面仅是判断最后一位是否位1,这种情况则是判断其他位上是否为1。同样的,我们可以

2020-06-22 20:16:44 123

原创 leetcode 419. 甲板上的战舰

要求以此遍历并且不修改原数组的条件下:每个战舰不相邻,正常情况下,我们找到头部,然后向下或者向右比哪里数组,修改数组,去除战舰,然后遍历下一个。发现,只需要遍历发现头部即可,最左边或者最上边X就是一个战舰。如果此刻位置的上边或者左边是X,则是战舰的中部。//419.int countBattleships(vector<vector<char>>& board) { const int n = board.size(); if (n == 0)return 0

2020-06-13 21:31:04 171

原创 Python-基于pexpect的SSH连接与执行远程命令

首先说几个问题:同样百度了博客等渠道,很多方式基于paramiko库,但是这种库我在使用的过程中,出现连接被拒绝或者无效地址等问题。还有基于ssh2的方式,这种方式是基于免密配置的,不需要输入密码就能连接的,但是通常情况下是需要与shell交互输入yes与密码才能连接的。上述两个问题是我在实例过程中出现的,可能有人成功了,有人与我有一样的疑惑。疑惑怎么样才能与shell进行交互,自动输入密码进行连接。linux 有expect脚本,能够与shell进行交互,在使用pexpect库之前,用起来

2020-06-12 09:51:55 1427

原创 flask实现下载文件、前后端

flask后台link 是文件路径或者链接temp_path是下载的文件临时路径 urllib.urlretrieve( link,temp_path, urlcallback) # # content = send_file(temp_path , as_attachment=True) # return True, make_response(send_from_directory(base_path, tool_

2020-06-09 19:00:31 4894

原创 vue-python前后端下载文件

两种方式:pyhton后端下载文件,访问url的形式将文件下载到本地,然后通过文件流传到前端。或者直接将本地文件传递到前端。仅前端通过url的形式直接下载,此时需要借助a标签。下面试两种方式的代码例子:方法一:# Pyhton后端下载文件def urlcallback(a, b, c): """ call back function a,已下载的数据块 b,数据块的大小 c,远程文件的大小 """ pr

2020-06-05 18:40:16 1025

转载 axois请求数据格式

axois请求数据格式:axois有多种请求方式,包括:axios#request(config)axios#get(url[,config])axios#delete(url[,config])axios#head(url[,config])axios#post(url[,data[,config]])axios#put(url[,data[,config]])axios#patch(url[,data[,config]])比较常用的就是POST和GET。默认方式为GET。

2020-06-04 23:14:18 466

原创 axios.response返回数据格式

axios.response接口中存储的是如下内容:{//data是服务器的提供的回复(相对于请求)data{},//`status`是服务器返回的http状态码status:200,//`statusText`是服务器返回的http状态信息statusText: 'ok',//`headers`是服务器返回中携带的headersheaders:{},//`config`是对axios进行的设置,目的是为了请求(request)config:{}}若是从后台接受的是jso

2020-06-04 23:08:44 20993

原创 VUE-computed

vue:computed当其依赖的属性的值发生变化时,计算属性会重新计算,反之,则使用缓存中的属性值。当computed中定义的属性或者方法:包含或者依赖的值出现了变化,则会重新调用此方法或者计算此属性。 computed: { // 模糊搜索 tables() { const = this.a; if (a) { return a; }); } return this.b; } }比如

2020-06-04 15:27:19 238

原创 [实力入坑]VUE-父组件向子组件传值

这里写一种简单、实用vue父组件向子组件传值的方式。(感觉vue文档有很多地方没写清楚)比如:routlink.vue是我要展示的页面,tables.vue是需要调用的组件(另外一个页面)。本人使用的是ElementUI组件,大家直接复制的话可能是跑不起来的,不过这种方式很简单明了。直接进行局部组件注册,在所需要的文件scrip中导入即可,需要在components中写入就行。一些相关说明直接在注释里,采用的是props传值方式。下面是routlink.vue<template >

2020-06-02 19:48:00 211

原创 npm 错误码 EMISSINGARG

EMISSINGARG Errornpm ERR! node v6.6.0npm ERR! npm v3.10.3npm ERR! code EMISSINGARGnpm ERR! typeerror Error: Missing required argument #1这种错误可能是由于 npm 版本引起的,可以尝试升级 npm 版本:npm install npm -g -f

2020-06-02 10:09:21 6310

原创 c++ - 简单的回声服务器和客户端

功能客户端发送字符串到服务器,服务器接受字符串并返回,客户端接收自己发送的字符串,并打印。流程:正常流程学习并作为一个简单案例为记录。问题在编程程序中,出现了一个问题,导致server一直监听不成功。原因:在socket创建中,填写的是AF_INET, SOCK_DGRAM,填写的IP协议是是UDP协议,导致listen一直不成。server#include <iostream>#include <string>#include <sys/socket.h&

2020-05-20 22:30:14 405

原创 leetcode 452

leetcode 452452. 用最少数量的箭引爆气球在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。

2020-05-13 23:35:08 414

原创 IP协议详解

IP协议详解IP协议是TCP/IP协议族里面的核心协议,也是socket网络编程的基础之一。IP的头部信息。IP头信息出现你在每个IP数据报中,用于指定IP通信的源端IP地址,目的端IP地址,指导IP分片和重组,以及部分通信行为。IP数据包的路由和转发。IP数据包的路由和转发发生在除目标机器之外的所有主机和路由上。他们决定数据报的转发。IP服务的特点IP协议是TCP/IP协议族的动力...

2020-03-28 18:42:20 433

原创 TCP/IP协议族(2)

封帧数据包用应用程到达数据链路层的过程:应用数据包—>加入TCP/UDP头信息---->TCP报文端/UDP数据包---->加入IP头信息---->IP数据包---->加入以太网头部、尾部---->帧分用数据包到达主机,从数据链路层解析到应用层的过程。ARP工作原理原理ARP协议能实现任意网络层地址道任意物理地址的转换。原理:主机向自己所在网络广...

2020-03-28 18:39:58 93

原创 leetcode 437. 路径总和 III

思想:树的遍历:选用中序遍历记录下从下到上的路径和,包括从非节点开始如何记录从非叶节点开始,向上传递的过程中,将自身节点也向上传递。如何记录路径和:将自身节点的值,加上左右子树传递过的列表的值,最后加上自身的值,并向上传递遍历过程中,记录一共有多少个和为sum# Definition for a binary tree node.# class TreeNode:# d...

2020-03-28 11:30:19 118

原创 leetcode 19. 删除链表的倒数第N个节点

快慢指针,设两个指针:右指针先走n步左指针随着右指针一起移动,直到右指针的下一个节点为空。删除左值针指向的下一个节点# Definit1ion for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = None...

2020-03-28 10:05:13 67

原创 leetcode 18. 四数之和

进行搜索就可以。思路与前面类似题一样。class Solution: def fourSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[List[int]] """ ...

2020-03-28 09:53:44 62

原创 leetcode 17. 电话号码的字母组合

做一个字典映射,找出数字对应的字母进行组合就可以就很简单了。class Solution: def letterCombinations(self, digits): """ :type digits: str :rtype: List[str] """ import itertools N2...

2020-03-28 09:47:21 68

原创 将博客搬至CSDN

将博客搬至CSDN:https://blog.csdn.net/weixin_43477082

2020-03-28 09:39:00 46

原创 leetcode 16. 最接近的三数之和

思想同leetcode 15.只不过结果保留方式(保留绝对值最小的值)不一样。class Solution:def threeSumClosest(self, nums, target):“”":type nums: List[int]:type target: int:rtype: int“”"nums.sort()argmin = 1000000result = []fo...

2020-03-28 09:05:08 111

原创 leetcode 15. 三数之和

先对数组升序排列找三个数之和,我们首先指定一个数,然后对其他两个数进行查找使用二分查找对其他两数进行查找,并使用目前三数之和作为查找条件 def threeSum(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ re...

2020-03-28 09:00:24 70

原创 leetcode 14. 最长公共前缀

每个字符串的前缀相同对所有字符串的相同位置进行比较,用set集合来完成所有相同位置的集合,set集合大小为1,表示此位字符相同,都则不同,比较中止.class Solution: def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str ...

2020-03-28 08:53:12 61

原创 letcode 3. 罗马数字转整数

向右扫描,如果对应的字母代表的值小于右边的,则执行机减法,比如:IV,先减一再加5,结果为4。class Solution: def romanToInt(self, s): """ :type s: str :rtype: int """ R = {'I': 1, 'V': 5, 'X': 10, 'L':...

2020-03-28 08:45:13 72

原创 leetcode 12. 整数转罗马数字

对每个位上进行取整, 按照对应的索引值进行输出即可。class Solution: def intToRoman(self, num): """ :type num: int :rtype: str """ I = ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', ...

2020-03-28 08:40:28 67

原创 441. 排列硬币

阶梯排列,输出能够最后能完整排的一行行号递减直到n<0为止,逻辑比较简单方法二:数学公式:设第x行为最后满输出(x+1)* x / 2 = n ,最后将x取整即可 def arrangeCoins(self, n: int) -> int: return int(math.sqrt(1/4.0 + 2*n)-1/2)...

2020-03-27 20:05:44 119

原创 leetcode434.单词数目

想法肯定是对空格进行分词做分词之前,必须处理头尾空格和重复空格 # 434 def countSegments(self, s: str) -> int: import re s = re.sub("[\s]+", ' ', s.strip()) if s == ' ' or len(s) == 0: ...

2020-03-27 19:48:24 131

原创 leetcode 11. 盛最多水的容器

思路:左右两个索引向中间移动即可,小值的索引的向中间移动class Solution: def maxArea(self, height): """ :type height: List[int] :rtype: int """ i, j, maxarea, current = 0, len(height)...

2020-03-27 18:51:34 89

原创 leetcode 3

尽可能分成更多的3如果剩下1,则拿出一个3,变成4,则分成2*2如果剩下2,则2不在分class Solution {public: int integerBreak(int n) { if(n<=3)return n-1; int a = n/3, b = n%3; if(b==0) return pow(3, a); ...

2020-03-27 18:49:46 85

原创 leetcode 10. 正则表达式匹配

Python:不说了刷题真鸡儿方便,全匹配即可真是的算法:用DFA就可以(Leetcode 后面又一题也是字符串匹配,需要写到DNA很便捷)class Solution: def isMatch(self, s, p): """ :type s: str :type p: str :rtype: bool ...

2020-03-27 16:10:09 112

原创 leetcode 9. 回文数

不说了:判断回文Python无比方便class Solution: def isPalindrome(self, x): """ :type x: int :rtype: bool """ return str(x) == str(x)[::-1] ...

2020-03-27 16:07:36 105

原创 leetcode 8. 字符串转换整数 (atoi)

思路:正则从头开始匹配就好class Solution: def myAtoi(a,str): """ convert str to an interger :type str: str :rtype: int """ impo...

2020-03-27 16:05:29 72

空空如也

空空如也

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

TA关注的人

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