自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Shine4YG的博客

欢迎光临

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

原创 《挑战程序设计》之铺砖问题

《挑战程序设计》之铺砖问题解答从左上角进行处理,dp[now][S]表示处理nownownow节点(i,j)(i,j)(i,j)的时候灰色区域的状态为S,dp[next][S‘]表示处理完nownownow节点(i,j)(i,j)(i,j)后,下一个节点next(i,j+1)next(i,j+1)next(i,j+1)灰色区域的状态为S’。状态转移方程(used表示当前状态,高位到...

2019-09-27 09:10:31 828

原创 Python转字符图

春节没事干,想做一个程序员的福字,就写了一个。(通过OpenCV进行的图像处理)源码主程序# coding=utf-8# 用的python2.7from __future__ import print_functionimport cv2from utls import reimg, toStringimgOriginal = cv2.imread("../img/hu.jpeg...

2019-02-09 21:44:26 254

原创 Python 调用百度OCR

背景:学校进行安全知识教育考试,题目采用图片的格式显示,不方便复制粘贴题目搜索答案。因为懒得打字,所以采用OCR的方法识别图片中的字符。代码:import urllibfrom tkinter import *import urllib.requestfrom aip import AipOcr# GUI类class Application(Frame): # GUI初...

2018-12-02 20:55:38 4549

原创 python爬取天天基金网AJax表格

Abstract:    笔者想从天天基金网(http://fund.eastmoney.com/f10/jjjz_001631.html)爬取某只基金的历史净值进行数据分析,发现天天基金网使用的是JavaScript,其历史净值表格使用的Ajax技术,只采用BeautifulSoup无法进行爬取。最后笔者通过selenium模拟表格“下一页”按钮的点击,然后采用BeautifulSoup解析se...

2018-04-26 10:55:13 2943

原创 Thrift教程

PRC:远程服务调用,也是一种网络协议,使用TCP连接实现,类似HTTP。Thrift是一种RPC框架,开发人员通过编写IDL定义两个服务之间的接口,然后通过Thrift自动生成代码(包括网络服务端和客户端,通信对象),即开发人员只需要编写业务相关代码,无需关心数据的通信的过程。Thrift的底层数据序列化使用的是Google的Protobuf。结构Thrift的客户端和服务端需要...

2020-03-28 18:51:34 572

原创 Java 生产者消费者问题

1 一个生产者一个消费者生产者和消费者同步获取存放产品的队列生产者在生产后通知消费者,在队列满时等待消费者取出消费者在取出后通知生产者,在队列为空时等待生产者放入场景类import java.util.LinkedList;import java.util.Queue;public class Client { public static void main(Strin...

2019-02-22 22:00:51 162

原创 LeetCode 136 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解答:使用异或运算处理设nums[] 中的元素分别为a, b, c, a, c,由于异或操作具有交换律和结合律...

2019-02-11 15:40:37 125

原创 LeetCode 13 罗马数字转整数

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。1...

2019-02-11 15:39:20 135

原创 LeetCode 3 无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke.

2019-02-11 15:35:10 114

原创 LeetCode 2 两数相加

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

2019-02-11 15:34:38 98

原创 LeetCode 1 两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解答:暴力解法:public int[...

2019-02-11 15:33:46 111

原创 何时我能获得LeetCodeT恤?

好奇我什么时候可以获得LeetCodeT恤,就写了一个小程序预测一下(用的Java1.8)。算我每天都登录的话,有七天连续登录奖励(一周17个积分)。每周周赛最差105(前100名的积分+参与积分),运气好能305。设计思路:逻辑问题:选了“Login everyday?”—>每周增速加17;选了“Join every week contest?”—>才能选“How man...

2019-02-11 15:05:07 2337

原创 LeetCode 992 K 个不同整数的子数组

给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。(例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。)返回 A 中好子数组的数目。示例 1:输出:A = [1,2,1,2,3], K = 2输入:7解释:恰好由 2 个不同整数组成的子数组:[1,2], [2,1], [1,2], [2,...

2019-02-10 19:10:14 1412

原创 LeetCode 987 二叉树的垂序遍历

给定二叉树,按垂序遍历返回其结点值。对位于 (X, Y) 的每个结点而言,其左右子结点分别位于 (X-1, Y-1) 和 (X+1, Y-1)。把一条垂线从 X = -infinity 移动到 X = +infinity ,每当该垂线与结点接触时,我们按从上到下的顺序报告结点的值( Y 坐标递减)。如果两个结点位置相同,则首先报告的结点值较小。按 X 坐标顺序返回非空报告的列表。每个报告都...

2019-02-09 22:35:46 371

原创 LeetCode 988 从叶结点开始的最小字符串

给定一颗根结点为 root 的二叉树,书中的每个结点都有一个从 0 到 25 的值,分别代表字母 'a' 到 'z':值 0 代表 'a',值 1 代表 'b',依此类推。找出按字典序最小的字符串,该字符串从这棵树的一个叶结点开始,到根结点结束。(小贴士:字符串中任何较短的前缀在字典序上都是较小的:例如,在字典序上 “ab” 比 “aba” 要小。叶结点是指没有子结点的结点。)解答:深度优...

2019-02-09 22:34:58 283

原创 二叉树的下一个结点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解答第一种情况:if (pNode.right != null){ pNode = pNode.right; while (pNode.left != null){ pNode = pNode.left; }...

2019-02-01 18:29:48 100

原创 重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解答前序遍历的第一个元素代表当前的根节点,中序遍历中对应的元素将其分为两部分,左部分代表左子树,右部分代表右子树。public class Sol...

2019-02-01 18:27:54 117

原创 从尾到头打印链表

题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解答使用栈:import java.util.ArrayList;import java.util.List;import java.util.Stack;public class Solution { public ArrayList<Integer> printListFromTailT...

2019-02-01 18:26:21 117

原创 替换空格

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解答public class Solution { public String replaceSpace(StringBuffer str) { int len = str.length(); ...

2019-02-01 18:25:50 110

原创 二位数组中的查找

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解答根据“每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序”的特点,从数组的右上方进行查找,如果目标数比当前数大的话,向下移动;如果目标数比当前数小的话,向左移动。pub...

2019-02-01 18:25:06 117

原创 数组中重复的数字

题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。解答使用哈希表的方法,时间复杂度为O(n):import java.util.Set;public class S...

2019-02-01 18:24:24 118

原创 集合类的fail-fast机制

fail-fast机制集合类的fail-fast机制是指集合被多个线程操作时,导致iterator中的数据改变从而抛出异常。比如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的内容被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件。实例分析使用ArrayList的iterato...

2019-01-29 18:42:36 167

原创 超简易的单点登陆系统实现

参考资料:IDEA创建Servlet https://www.cnblogs.com/javabg/p/7976977.html系统设计​ 本文采用"Cookie+拦截器"的方式实现单点登陆系统Demo,系统的具体流程图如下:​ 上图展示的系统流程具体如下:浏览器访问系统,向服务器发出请求;服务器接收到请求后,LoginFilter会拦截请求,并根据请求中包含的Cookie信息判断...

2019-01-09 10:25:49 244

原创 LeetCode 950按递增顺序显示卡牌

牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。现在,重复执行以下步骤,直到显示所有卡牌为止:从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。返回能以递增顺序显示卡牌的牌组顺序。答...

2018-12-02 23:30:24 429

原创 LeetCode 951 翻转等价二叉树

我们可以为二叉树 T 定义一个翻转操作,如下所示:选择任意节点,然后交换它的左子树和右子树。只要经过一定次数的翻转操作后,能使 X 等于 Y,我们就称二叉树 X 翻转等价于二叉树 Y。编写一个判断两个二叉树是否是翻转等价的函数。这些树由根节点 root1和 root2 给出。示例:输入:root1 = [1,2,3,4,5,6,null,null,null,7,8], root2 = [1...

2018-12-02 22:45:36 220

原创 LeetCode 949 给定数字能组成的最大时间

给定一个由 4 位数字组成的数组,返回可以设置的符合 24 小时制的最大时间。最小的 24 小时制时间是 00:00,而最大的是 23:59。从 00:00 (午夜)开始算起,过得越久,时间越大。以长度为 5 的字符串返回答案。如果不能确定有效时间,则返回空字符串。示例 1:输入:[1,2,3,4]输出:"23:41"示例 2:输入:[5,5,5,5]输出:""提示:A....

2018-12-02 21:33:22 1691

原创 LeetCode 404 左叶子之和

计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24解答:在遍历树的左右子树的时候传入一个信号量,-1代表左遍历,+1代表右遍历。当信号量为-1,且该节点为叶子结点时,该节点为左叶子节点,将其值返回。/** * Definition for a bi...

2018-11-30 00:04:43 117

原创 LeetCode 674 最长连续递增序列

给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为1。**注意:**数组长度...

2018-11-29 23:27:12 143

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

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解答:遍历链表节点,使用栈存储节点。出栈n-2个节点,然后将倒数第n+1个节点...

2018-11-29 15:56:57 80

原创 LeetCode 12 整数转罗马数字

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。1...

2018-11-28 21:06:30 90

原创 LeetCode 70 爬楼梯

动态规划、动态规划、动态规划!!!!假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?**注意:**给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 ...

2018-11-28 20:23:09 90

原创 LeetCode 141 环形链表

给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?解答:使用两个指针遍历链表,一个快指针(一次走两个),一个慢指针(一次走一个)。如果两个指针相遇,则链表中含有环形。如果快指针到达结尾,则链表中没有环路。时间复杂度:O(n)O(n)O(n)空间复杂度:O(1)O(1)O(1)/** * Definition for singly-linked list. * ...

2018-11-28 18:47:14 84

原创 LeetCode 26 删除排序数组中的重复项

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 ...

2018-11-28 00:05:26 70

原创 LeetCode 9 回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。解答:c...

2018-11-28 00:04:08 78

原创 LeetCode 23 合并K个排序链表

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6解答:复用LeetCode21合并两个链表的代码,将链表0和链表1进行合并生成新的链表,然后再将新的链表与链表2合并...

2018-11-25 20:52:47 105

原创 LeetCode 21 合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解答:创建三个指针,listNode用于组建合并后的链表,head用于记录listNode的头指针。循环中的结束条件是有一个链表遍历完成,之后需要将另一个未遍...

2018-11-25 20:03:27 85

原创 LeetCode 104 二叉树的最大深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解答:用递归的思想,各个非叶子节点返回各节点的左右子树中最大深度;叶子节点返回其所在深度...

2018-11-25 19:02:53 76

原创 LeetCode 686 重复叠加字符串匹配

给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。举个例子,A = “abcd”,B = “cdabcdab”。答案为 3, 因为 A 重复叠加三遍后为 “abcdabcdabcd”,此时 B 是其子串;A 重复叠加两遍后为"abcdabcd",B 并不是其子串。注意:A 与 B 字符串的长度在1和10000区间范...

2018-11-25 17:36:05 127

原创 LeetCode 538 把二叉搜索树转换为累加树

给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / \...

2018-11-25 17:27:12 199

原创 LeetCode 63 不同路径2

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。**说明:**m 和 n 的值均不超过 100。示例 1:输入:[ [0,0...

2018-11-25 17:26:16 106

空空如也

空空如也

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

TA关注的人

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