自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Centos 下使用Nginx和uWSGI部署Flask项目的步骤和遇到的一些坑(阿里云服务器)

Day70Nginx和uwsgi部署Flask项目在虚拟环境下使用Nginx和uwsgi部署Flask项目环境准备1、安装virtualenv虚拟环境2、安装Nginx(不需要再虚拟环境下)yum install nginx3、安装python库:uwsgi和你项目需要的包使用uWSGI部署Flask项目使⽤ uWSGI 部署 Flask 项⽬只需要换⼀种命令来启动服务即可:uwsgi --socket 0.0.0.0:5000 --protocol=http -p 3 -w appl

2020-09-13 18:40:14 533

原创 Python+Docker+Redis-实现分布式爬取阳光问政

sun-political分布式爬取阳光问政平台http://wz.sun0769.com一、编写爬虫代码1.创建项目pip install scrapy scrapy-redis -i https://pypi.tuna.tsinghua.edu.cn/simplescrapy startproject sun2.创建爬虫scrapy genspider -t crawl political wz.sun0769.com3.编写setting.pyROBOTSTXT_OBEY = Fal

2020-10-27 15:28:53 334

原创 LeetCode-1615. 最大网络秩

1615. 最大网络秩题目说明n 座城市和一些连接这些城市的道路 roads 共同组成一个基础设施网络。每个 roads[i] = [ai, bi] 都表示在城市 ai 和 bi 之间有一条双向道路。两座不同城市构成的 城市对 的 网络秩 定义为:与这两座城市 直接 相连的道路总数。如果存在一条道路直接连接这两座城市,则这条道路只计算 一次 。整个基础设施网络的 最大网络秩 是所有不同城市对中的 最大网络秩 。给你整数 n 和数组 roads,返回整个基础设施网络的 最大网络秩 。示例输入:

2020-10-12 23:30:54 285

原创 LeetCode-1614. 括号的最大嵌套深度

1614. 括号的最大嵌套深度题目说明如果字符串满足一下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS):字符串是一个空字符串 “”,或者是一个不为 “(” 或 “)” 的单字符。字符串可以写为 AB(A 与 B 字符串连接),其中 A 和 B 都是 有效括号字符串 。字符串可以写为 (A),其中 A 是一个 有效括号字符串 。类似地,可以定义任何有效括号字符串 S 的 嵌套深度 depth(S):depth("") = 0dep

2020-10-12 21:59:35 339

原创 LeetCode-141. 环形链表

141. 环形链表题目说明给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例输入:head = [3,2,0,-4], pos = 1输出:true解

2020-10-12 21:56:15 106

原创 LeetCode-344. 反转字符串

344. 反转字符串题目说明编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例输入:["h","e","l","l","o"]输出:["o","l","l","e","h"] 输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","

2020-10-12 21:47:29 70

原创 LeetCode-75. 颜色分类

75. 颜色分类题目说明给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]代码实现class Solution: def sortColors(self, nums: List[int]) -> None:

2020-10-12 21:45:03 85

原创 赛码-进制均值(京东2017秋招真题)

进制均值(京东2017秋招真题)进制均值(京东2017秋招真题)代码实现while 1: A = int(input()) X = 0 # 遍历计算各进制的和 for i in range(2, A): tmp = A while tmp != 0: X += tmp % i tmp = tmp // i Y = A - 2 # 化简分数 for i in range

2020-10-11 20:56:43 144

原创 LeetCode-剑指 Offer 58 - II. 左旋转字符串

剑指 Offer 58 - II. 左旋转字符串题目说明字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例输入: s = "abcdefg", k = 2输出: "cdefgab" 输入: s = "lrloseumgh", k = 6输出: "umghlrlose"代码实现class Solution: def reve

2020-10-06 17:06:39 93

原创 LeetCode-剑指 Offer 58 - I. 翻转单词顺序

剑指 Offer 58 - I. 翻转单词顺序题目说明输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。示例输入: "the sky is blue"输出: "blue is sky the" 输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不

2020-10-06 17:03:38 171

原创 LeetCode-剑指 Offer 57 - II. 和为s的连续正数序列

剑指 Offer 57 - II. 和为s的连续正数序列题目说明输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例输入:target = 9输出:[[2,3,4],[4,5]] 输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]题解思路滑动窗口如果窗口和小于目标,需要添加数,右窗口右移一位,如果大于目标,需要减少数,左窗口右移一位

2020-10-06 16:59:58 163

原创 LeetCode-剑指 Offer 57-和为s的两个数字

剑指 Offer 57. 和为s的两个数字题目说明输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2] 输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]题解思路双指针,如果和大于目标,后面的指针前移一位,如果小于目标,前面的指针后

2020-10-06 16:55:32 100

原创 LeetCode-剑指 Offer 55 - II-平衡二叉树

剑指 Offer 55 - II. 平衡二叉树题目说明输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。 给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \

2020-10-06 16:52:56 108

原创 LeetCode-剑指 Offer 55 - I-二叉树的深度

剑指 Offer 55 - I. 二叉树的深度题目说明输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。示例给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。题解思路1、广度优先搜索:按层遍历,每遍历一层,计数值+12、深度优先搜索:树的深度=左右子树深度的最大值 + 1代码实现1、广度优先搜索

2020-10-06 10:38:21 116

原创 LeetCode-剑指 Offer 54-二叉搜索树的第k大节点

剑指 Offer 54. 二叉搜索树的第k大节点题目说明给定一棵二叉搜索树,请找出其中第k大的节点。示例输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4题解思路利用二叉平衡树的特点,利用后序遍历,将各个节点

2020-10-06 10:34:56 122

原创 LeetCode-剑指 Offer 53 - I-在排序数组中查找数字 I

剑指 Offer 53 - I. 在排序数组中查找数字 I题目说明统计一个数字在排序数组中出现的次数。示例输入: nums = [5,7,7,8,8,10], target = 8输出: 2输入: nums = [5,7,7,8,8,10], target = 6输出: 0题解思路  两种做法1、使用哈希表:  遍历数组,如果存在于表中,值加一;如果不存在,设置键值对,键为该元素,值为12、二分法  使用i和j指向头和尾,如果m=(i+j)//2 (向下取整)位置的元素大于

2020-10-06 10:31:44 167

原创 LeetCode-剑指 Offer 42-连续子数组的最大和

剑指 Offer 42. 连续子数组的最大和题目说明输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。题解思路动态规划如果当前元素与上一个元素之和大于当前元素,将当前元素替换为两数之和,循环结束后,数组中最大值便是解代码实现class Solution: def maxSu

2020-10-06 10:24:06 157

原创 LeetCode-剑指 Offer 52-两个链表的第一个公共节点

剑指 Offer 52. 两个链表的第一个公共节点题目说明输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例示例1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起

2020-10-06 10:20:19 214

原创 LeetCode-剑指 Offer 50-第一个只出现一次的字符

剑指 Offer 50. 第一个只出现一次的字符说明在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例s = "abaccdeff"返回 "b"s = "" 返回 " "题解思路使用哈希表遍历s,如果哈希表中存在,则值变为False,如果不存在,添加值为True再次遍历s,如果哈希表中对应值为true,返回该值代码实现class Solution: def firstUniqChar(self, s: str) ->

2020-10-05 15:49:04 110

原创 LeetCode-18-四数之和

18. 四数之和说明给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0

2020-10-05 15:38:35 1349

原创 LeetCode-15-三数之和

15.三数之和说明给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]题解思路排序+双指针如果满足条件,添加到输出数组代码实现class Solution: def t

2020-10-05 15:33:37 105

原创 LeetCode-剑指 Offer 32 - II-从上到下打印二叉树 II

剑指 Offer 32 - II. 从上到下打印二叉树 II说明从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。示例给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]题解思路在从上到下打印二叉树的前提下按层输出代码实现# Definition for a binary tree node

2020-10-05 14:57:00 209 1

原创 LeetCode-剑指 Offer 32 - III-从上到下打印二叉树 III

剑指 Offer 32 - III. 从上到下打印二叉树 III说明请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。示例给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [20,9], [15,7]]题解思路在从上到下打印二叉树 II的前提下,将奇

2020-10-05 10:52:05 144

原创 LeetCode-5531-特殊数组的特征值

5531. 特殊数组的特征值说明给你一个非负整数数组 nums 。如果存在一个数 x ,使得 nums 中恰好有 x 个元素 大于或者等于 x ,那么就称 nums 是一个 特殊数组 ,而 x 是该数组的 特征值 。注意: x 不必 是 nums 的中的元素。如果数组 nums 是一个 特殊数组 ,请返回它的特征值 x 。否则,返回 -1 。可以证明的是,如果 nums 是特殊数组,那么其特征值 x 是 唯一的 。示例输入:nums = [3,5]输出:2解释:有 2 个元素(3 和 5)大

2020-10-04 21:25:12 268 1

原创 LeetCode-剑指 Offer 32 - I-从上到下打印二叉树

剑指 Offer 32 - I. 从上到下打印二叉树说明从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。示例给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]题解思路广度优先搜索代码实现# Definition for a binary tree node.# class TreeNode:# def __init__(self

2020-10-04 21:22:54 162 2

原创 LeetCode-1-两数之和

1. 两数之和说明给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题解思路使用哈希表,对于x,如果存在target-x,返回代码实现class Solution: de

2020-10-04 21:20:48 62

原创 LeetCode-2-两数相加

2. 两数相加说明给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807题解思路模拟相加代码实现# Definit

2020-10-04 21:18:05 141

原创 LeetCode-剑指 Offer 30-包含min函数的栈

剑指 Offer 30. 包含min函数的栈说明定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top

2020-10-04 21:01:52 115

原创 LeetCode-剑指 Offer 29-顺时针打印矩阵

剑指 Offer 29. 顺时针打印矩阵说明输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]代码实现class Solution: def spiralOrder(self, matrix

2020-09-30 17:43:58 117

原创 LeetCode-701-二叉搜索树中的插入操作

701. 二叉搜索树中的插入操作说明给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。示例给定二叉搜索树: 4 / \ 2 7 / \ 1 3和 插入的值: 5你可以返回这个二叉搜索树: 4

2020-09-30 08:32:02 212

原创 LeetCode-剑指 Offer 27-二叉树的镜像

剑指 Offer 27. 二叉树的镜像说明请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1示例输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]题解思路1、递归交换左右节点2、利用栈辅助,当前节点存在左右子节点,将该节点的左右

2020-09-29 19:46:09 111

原创 LeetCode-剑指 Offer 25-合并两个排序的链表

剑指 Offer 25. 合并两个排序的链表说明输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题解思路1、将两个链表放入数组中,逆向排序,然后以链表形式输出(暴力)2、双指针代码实现1、暴力法# Definition for singly-linked list.# class ListNode:# def __

2020-09-29 19:29:48 184 1

原创 LeetCode-145-二叉树的后序遍历

145. 二叉树的后序遍历说明给定一个二叉树,返回它的 后序 遍历。示例输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]题解思路1、递归2、迭代,利用栈代码实现1、递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# sel

2020-09-29 18:17:07 74

原创 LeetCode-剑指 Offer 24-反转链表

剑指 Offer 24. 反转链表说明定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题解思路使用栈,将链表依次存入栈中,在依次取出形成链表(先进后出)代码实现# Definition for singly-linked list.# class ListNode:# def __init__(se

2020-09-28 17:52:07 97

原创 LeetCode-113-路径总和 II

113. 路径总和 II说明给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ [5,4,1

2020-09-26 22:18:17 75

原创 LeetCode-112-路径总和

112. 路径总和说明给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点示例给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true,

2020-09-26 22:16:35 79

原创 LeetCode-剑指 Offer 22-链表中倒数第k个节点

剑指 Offer 22. 链表中倒数第k个节点说明输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.题解思路1、将链表存入数组,取出后k个数,再以链表输出2、双指针实现代码实现方法一:#

2020-09-25 21:36:22 87

原创 LeetCode-剑指 Offer 21-调整数组顺序使奇数位于偶数前面

剑指 Offer 21. 调整数组顺序使奇数位于偶数前面说明输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。题解思路暴力法(超级费时)双指针(前后指针)代码实现暴力法class Solution: def exchange(self, nums: List[int]) -> List[int

2020-09-24 21:32:29 134

原创 LeetCode-剑指 Offer 18-删除链表的节点

剑指 Offer 18. 删除链表的节点说明给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。示例输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之

2020-09-24 20:37:52 72

原创 LeetCode-剑指 Offer 15-二进制中1的个数

剑指 Offer 15. 二进制中1的个数说明请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。输入:00000000000000000000000010000000输出:1解释:输入的二

2020-09-24 12:52:16 137 1

空空如也

空空如也

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

TA关注的人

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