自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (3)
  • 收藏
  • 关注

原创 538. 把二叉搜索树转换为累加树 题解

class Solution { // 先将右子树转换为累加树;并记录右子树的累加和rightSum; // 然后处理根节点,根节点的值 = 根节点值 + rightSum; // 然后转化左子树 public TreeNode convertBST(TreeNode root) { convert(root, 0); return...

2018-07-15 11:08:04 679

原创 442. Find All Duplicates in an Array 题解

题意:给定一组整数,共n个,这组数字的值均不超过n。在这组数字中,有些数字出现了两次而其他数字只出现了一次,要求找出该组数字中所有出现两次的数。并且不能开辟额外的空间,且时间复杂度应为O(n)。思路:题目不允许开辟额外空间,第一反应是能不能使用位运算/异或来解决该问题,仔细思考后发现似乎行不通。实际上该题目使用的是“借助数组下标记录一些信息”的思想,题目中“这组数字的值均不超过n”也印证了该想法。...

2018-06-08 17:11:31 383

原创 Leetcode 292. Nim Game 题解

题目链接为:点击打开链接题目要求:Nim 游戏规则如下,我和朋友一起玩拿石头的游戏,每人每次可以拿1-3块石头,拿到最后一块石头的人获胜。在游戏中,我是先拿石头的那个人。给定石头总数,判断我是否可以获胜。思路:根据题目要求,“我和朋友都很聪明”,意味着我和朋友任何一个人输掉游戏,都是因为在这局游戏中TA无论怎样拿都不可能获胜。也就是说给定石头总数,在了解套路的情况下,输赢是确定的。

2017-10-26 18:17:04 443

原创 Python 实现汉诺塔算法

# coding: utf-8def my_print(args): print args# 将n个盘子从a移动到c, 以b为中介def move(n, a, b, c): if n == 1: # 若只有一个盘子,直接从a移动到c my_print((a + '---->' + c)) else: # 若不止一

2017-09-14 15:04:50 491

原创 知识图谱初探

多次听到知识图谱的概念,据说被称为“下一代搜索技术”,一直很好奇。趁着考试暂时告一段落,简单了解了一下知识图谱的相关知识,只希望自己能有个大概认识,不追求特别深入的学习。(一)知识图谱初探百度百科对知识图谱的定义如下:“知识图谱,也称为科学知识图谱,它通过将应用数学、图形学、信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核

2017-06-11 09:06:41 3256

原创 使用阻塞队列实现生产者-消费者模式——Java实现

阻塞队列是一种基于数组实现的阻塞队列,它在构造时需要指定容量。当试图向满队列中添加元素或者从空队列中移除元素时,当前线程会被阻塞。通过阻塞队列,我们可以按以下模式来工作:工作者线程可以周期性的将中间结果放入阻塞队列中,其它线程可以取出中间结果并进行进一步操作。若工作者线程的执行比较慢(还没来得及向队列中插入元素),其他从队列中取元素的线程会等待它(试图从空队列中取元素从而阻塞);若工作者线程执行较

2017-04-17 22:05:08 925

原创 求字符串的最长重复子串——Java实现

要求:求一个字符串的最长重复子串思路:使用两个指针,两个指针的间隔从1,2,3...依次增大, 同时向右移动两个指针,在移动的过程中判断指针位置的字符是否相同,并记录最长子串的长度。Java代码:public class Solution { // 求解字符串中的最长重复子串 public static String maxRepat(String input) {

2017-04-17 19:39:55 10310

原创 求两个字符串的最长公共子序列——Java实现

要求:给定字符串1和字符串2,要求找出两个字符串的最长公共子序列。例如,字符串1=“helloworld”,字符串2=“hwewegallgeo”,那么两者的最长公共子序列为“hello”思路:参见:http://www.cnblogs.com/zhangchaoyang/articles/2012070.html使用一个二维数组datas保存中间结果;使用另外一个二维数组index保存路

2017-04-17 16:08:22 5640 1

原创 求两个字符串的最长公共子串——Java实现

要求:求两个字符串的最长公共子串,如“abcdefg”和“adefgwgeweg”的最长公共子串为“defg”(子串必须是连续的)方法一: 对于较短的那个字符串,假设其长度为n,依次找到它的长度为n, n-1, n-2....1的若干的子串,若另外那个较长的字符串包含了较短字符串的某个子串,则找到了二者的最长公共子串。Java代码如下:public class Solution

2017-04-17 15:06:37 29634 9

原创 今日头条面试题(代码题)—— 查找字符串B的字符任意一种组合是否是字符串A的子串

题目要求:给定字符串A,B,其中B字符串不包含重复字符。  假设A="adcaaabcab",  B="abc", 可知B中包含的字符的所有组合方式有以下6种:abc acb bac bca cab cba;只要A字符串的某个子串是以上6种情况种的任何一种,返回true, 如果这6种组合方式都不是A的某个子串,返回false。要是时间复杂度要足够低。思路:首先肯定不能使用穷举B中字

2017-04-12 22:13:07 2106

原创 在逆转数组中寻找最小元素——Java实现

思路:使用左右两个指针,左指针最初指向0,右指针指向最后一个元素。根据左右指针所指的数据和中间指针所指数据的大小关系移动指针。(注意:如果左右指针只相差1,需要特殊处理)Java代码如下:public class Solution { // 在left~right 之间顺序查找最小元素 public static int findMinNum(int[] nums, in

2017-04-10 20:50:55 562

原创 2Sum -- Java实现(3Sum 4Sum)待补充

思路:使用头尾指针Java代码实现:import java.util.Arrays;import java.util.LinkedList;import java.util.List;class Pair{ int x; int y; Pair(int xParam, int yParam){ x = xParam; y = yParam; }}pub

2017-04-10 20:01:51 739

原创 使用归并思想查找数组中的逆序对的数量——Java实现

使用二分归并思想,一个数组的逆序对的数量 = (构成逆序对的数字都在左半部分)左半部分逆序对的数量 + (构成逆序对的数字都在右半部分)右半部分逆序对的数量  + (构成逆序对的数字左半部分一个,右半部分一个)左右两部分的逆序对的数量。Java代码如下:public class Solution { // 使用归并思想统计数组中的逆序对 public static int

2017-04-10 19:28:14 623

原创 使用String模拟大数加减乘除(除法和取余待补充)

加减:模拟手工计算过程。乘:模拟手工计算过程(乘数B的每一位数字和乘数A相乘的时候使用连续n次加法进行模拟)除:连续做减法,直到差值出现负号(注:代码未经过充分测试,重点是记录下思想) Java代码如下: import java.math.BigInteger;public class Solution { // 将string转化为指定的长度 public ...

2017-04-10 15:49:29 2839

原创 使用两个栈实现队列

思路:使用两个栈,一个栈(栈1)用于保存输入,另一个栈(栈2)用于将输入倒序保存。当要想向队列中插入一个元素时,直接将元素插入到栈1中;当想从队列中获取一个元素时,首先判断整个队列是否为空,若不为空,判断栈2是否为空,若不为空,返回栈顶元素即为队列的第一个元素;若栈2为空,则将栈1中的元素全部压入栈2,再将栈2的栈顶元素弹出即可。Java代码如下:import java.util.

2017-04-09 09:37:11 352

原创 根据前序遍历和中序遍历重建二叉树

参见:http://blog.csdn.net/xiaoyi357/article/details/61640226

2017-04-08 21:49:55 266

转载 排序算法总结

参见:http://blog.csdn.net/mark_lq/article/details/44936783

2017-04-08 21:34:06 220

原创 链表的反转(递归实现和非递归实现)

方法一:非递归实现,使用三个指针。Java代码如下:package com.yiguy.test;class Node{ int data; Node next; Node(){ } Node(int dataParam){ this.data = dataParam; this.next = null; }}public class List {

2017-04-08 21:02:21 287

原创 从二维数组中查找某个元素

题目:有一个二维数组,二维数组的每一行从左到右数据递增,二维数组的每一列,从上到下递增。在这样的二维数组中查找指定元素,返回其下标。思路:首先将待查找的元素q与二维数组的右上方的元素e进行比较,如果e=q,则找到了指定元素,返回其坐标;若e>q,则元素e所在的列可以排除,因为该列元素都比q大;若eJava代码如下:class Point{ int x; int y;

2017-04-08 18:53:24 5283

原创 今日头条2017春招笔试题——绘制括号序列

(注:题解来自于“今日头条校园”微信公众号)题意:给定一个合法的括号序列,以字符矩阵的形式翻转后输出。题解:先预处理每一个括号的深度,从而推出应打印的括号的大小,剩下的就是扫一遍处理下打印细节了。Java代码实现:import java.util.LinkedList;import java.util.List;public class Test { //

2017-04-08 16:56:38 1215

原创 今日头条2017春招研发岗笔试题——Paragraph

(注:题解方法来自于“今日头条校园”微信公众号)题意:给定一个英文段落(包含n个句子)和m次查询,每次给定一个句子,求段落中相同单词数量最多的句子。各个英文句子不包含标点,大小写不敏感。题解:一种简单的做法是对原文中的每个英文句子,都预处理包含的单词集合。对于每次查询,枚举句子中的单词到各个set查找是否存在,随后统计出现的次数取max即可。Java代码实现:import

2017-04-08 13:28:55 2407

原创 找出函数的最宽尖峰

此题为2017年今日头条春招研发岗笔试题。(思路为“今日头条校园”公众号提供的解法) 题目要求:求给定数列A中先升后降(必须是先升后降,只升不降或者只降不升都不符合条件;输入的数组不存在相邻两个数相等的情况)的最长连续子序列,要求O(n) 思路:预处理使得up[i]表示以A[i]为结尾的连续最长上升序列的长度、down[i]表示A[i]为起始的连续最长下降子序列的长度,那么答案实际上就是m

2017-04-08 09:27:06 840

原创 LeetCode 136. Single Number 题解—— Java

题目链接:https://leetcode.com/problems/single-number/#/description题目要求:给定一个数组,其中只有一个数字只出现一次,其他数字都出现两次,找出这个只出现一次的数字。思路:将所有数字进行异或操作,最终得到的结果就是只出现一次的数。因为异或“相同为0,不同为1”,那么一个数的和它本身异或,就会变为0。举例如下:对于数字 3,7 ,

2017-03-21 20:43:55 382

原创 LeetCode 27. Remove Element 题解 —— Java

题目链接:https://leetcode.com/problems/remove-element/#/description

2017-03-21 20:24:56 385

原创 LeetCode 21. Merge Two Sorted Lists 题解 —— Java

题目链接:https://leetcode.com/problems/merge-two-sorted-lists/#/description题目要求:将两个有序列表合并为一个有序列表思路:循环比较两个链表的头元素,较小的那个加入新链表,然后指针后移;直到其中一个链表为空之后,将另一个链表加入到新链表中。Java代码如下:public class Solution {

2017-03-20 22:23:06 364

原创 LeetCode 203. Remove Linked List Elements 题解 —— Java

题目链接:https://leetcode.com/problems/remove-linked-list-elements/#/description题目要求:删除链表中的值为指定值的所有节点思路:该题的关键是 在head之前增加一个辅助节点,然后使用两个指针,一个previous,一个current,分别用来记录当前处理节点的前一个节点和当前处理节点。Java代码如下:

2017-03-20 21:54:52 413

原创 LeetCode 160. Intersection of Two Linked Lists 题解 —— Java

题目链接:https://leetcode.com/problems/intersection-of-two-linked-lists/#/description题目要求:找出两个链表的交叉点,若两链表没有交叉点,返回null。思路:(1)首先遍历两个链表,计算出两个链表的长度   O(N)(2)对于较长的那个链表,让该链表的指针先走几步——所走的步数为两链表的长度差(3)再让两链

2017-03-20 21:10:01 357

原创 LeetCode 70. Climbing Stairs 题解 —— Java

题目链接:https://leetcode.com/problems/climbing-stairs/#/description题目要求:实质上是求斐波那契数列的值。f(1)=1, f(2)=2, f(3) = f(2)+f(1)...求f(n)思路:采用求斐波那契数列的迭代算法。Java代码如下:public class Solution { public i

2017-03-20 20:51:11 479

原创 LeetCode 171. Excel Sheet Column Number 题解 —— Java

题目链接:https://leetcode.com/problems/excel-sheet-column-number/#/description题目要求:实质上是26机制的数转化为十进制。思路:举例来说,BAA=((B*26 + A) * 26 ) +AJava代码如下:public class Solution { // 26进制的计算 public int

2017-03-20 20:27:24 433

原创 LeetCode 121. Best Time to Buy and Sell Stock 题解 —— Java

题目链接:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/#/description思路:对于数组中的每一个价格,记录当前位置的最低价格,然后计算出若当前售出,能获得的最大利润是多少。比较所有可能的利润,取最大值即为最终的最大利润。Java代码如下:public class Solution {

2017-03-20 20:11:21 544

原创 LeetCode 169. Majority Element 题解 ——Java

题目链接:https://leetcode.com/problems/majority-element/#/solutions题目要求:找出数组中的主元素方法一:首先最容易想到的方法是,将数组排序,最中间的数就是主元素。该方法的时间复杂度即为排序的时间复杂度,为O(n logn)Java代码如下:public class Solution { public int

2017-03-20 19:55:47 282

原创 LeetCode 26. Remove Duplicates from Sorted Array 题解——Java

题目链接:https://leetcode.com/problems/remove-duplicates-from-sorted-array/#/description题目要求:对于一个已排好序的数组,返回去掉其中的重复元素之后的数组长度。思路:使用一个指针指示下一个不同的元素应该处于的正确位置。Java代码如下:public class Solution { pu

2017-03-20 19:30:55 328

原创 Python爬虫:Selenium+ BeautifulSoup 爬取JS渲染的动态内容(雪球网新闻)

最近要有一个任务,要爬取https://xueqiu.com/#/cn 网页上的文章,作为后续自然语言处理的源数据。爬取目标:下图中红色方框部分的文章内容。(需要点击每篇文章的链接才能获得文章内容)注:该文章仅介绍爬虫爬取新闻这一部分,爬虫语言为Python。 乍一看,爬虫的实现思路很简单:(1)从原始页面https://xueqiu.com/#/cn上爬取各篇文章

2017-03-20 18:07:43 20663 7

原创 LeetCode 11. Container With Most Water —— Java

题目链接:https://leetcode.com/problems/container-with-most-water/#/description题目要求:在n条不同高度的柱子中选择两个柱子,(每两个相邻柱子之间等间隔)使其构成的容器装水最多。思路:从左右两侧向中间靠拢(因为如果选择左右两侧的两个柱子,宽度已经最大,要想扩大容积...其实是面积...只能考虑增大高度)。首先选取的两个柱子

2017-03-17 23:22:05 342

原创 LeetCode 226. Invert Binary Tree 题解 —— Java

题目链接:https://leetcode.com/problems/invert-binary-tree/#/description题目要求:反转二叉树——左子树换成右子树,右子树换成左子树思路:首先将根节点的左右子树交换,然后递归的将左右子树再进行反转。Java代码:public class Solution { public TreeNode invertTr

2017-03-16 12:33:03 336

原创 LeetCode 100. Same Tree 题解 —— Java

题目链接:https://leetcode.com/problems/same-tree/#/description题目要求:判断两个二叉树是否完全一样思路:递归实现,首先判断根节点是否一样,然后递归判断两个二叉树的左子树和右子树是否完全一样。Java代码如下: public boolean isSameTree(TreeNode p, TreeNode q) {

2017-03-16 12:25:20 257

原创 LeetCode 96. Unique Binary Search Trees 题解 —— Java

题目链接:https://leetcode.com/problems/unique-binary-search-trees/#/description题目要求:给定正整数n,计算能构成的BST数量 (该BST存储的值为0~n)思路:动态规划,分别计算出当n = 1~n时,能够构成的BST的数量。f(1) = 1 // 当只有一个节点时能构成的BST的数量f(2) = 以1为根节点能

2017-03-15 21:02:57 286

原创 LeetCode 22. Generate Parentheses 题解 —— Java

题目链接:https://leetcode.com/problems/generate-parentheses/#/description题目要求:给定正整数n,求n对括号所有正确配对的组合。思路:采用分支限界和回溯算法,考虑一颗二叉树,根节点为(,向左右只添加左括号,向右走只添加有括号。在遍历该二叉树的时候,采用分支限界和回溯方法,只获得满足条件的括号对。Java代码如下:

2017-03-15 19:40:02 654

原创 LeetCode 222. Count Complete Tree Nodes 题解——Java

题目链接:https://leetcode.com/problems/count-complete-tree-nodes/#/description题目要求:计算完全二叉树的节点个数思路:首先想到的是直接的递归,二叉树的节点个数 = 左子树的节点个数 + 右子树的节点个数 + 1Java 代码如下:public class Solution { // 二叉树的节点数 =

2017-03-15 09:14:24 1116 1

原创 LeetCode 392. Is Subsequence 题解——Java

题目链接:https://leetcode.com/problems/is-subsequence/#/description题目要求:判断字符串s是不是字符串t的子序列方法一:首先想到的方法是,使用两个队列分别报错两个字符串中的各个字符,依次比较队首元素,若两个队列的队首元素相同,则表示到目前为止,s的前x个字符可以匹配为t的子序列;如果两个队列的队首元素不相同,则将t队列的

2017-03-14 22:30:23 778

geckodriver-v0.15.0-win64

2017-03-20

Hadoop-Eclipse-Plugin-2.7.3

Hadoop-Eclipse-Plugin-2.7.3,其中包含hadoop-eclipse-plugin-2.7.3.jar和Windows-Eclipse下配置Hadoop Map/Reduce开发环境所需的相关文件。

2017-03-09

c语言输入年月日且能防止错误输入

// 999.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int a,i,c,n; //定义年份,月份,日期,总天数,总天数除以的余数 int b1=31,b3=31,b5=31,b7=31,b8=31,b10=31,b12=31; int b4=30,b6=30,b9=30,b11=30,b2; //定义每月天数 printf("请输入年月日:\n"); scanf("%d,%d,%d",&a,&i,&c); //输入年份,月份,日期 if((a0!=0&&a%4==0)||(a%400==0)) b2=29; //闰年,二月有29天 else b2=28; //非闰年,二月有28天 if(a>0) { if(i>=1&&i<=12) { if(i==2) //若输入的为二月...(防止输入像2001/2/30这样的错误日期) { if (c<=b2) { n=b1+c; } else printf("输入的日期有误.\n"); } else { if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) //若输入的为31天的几个月...(防止输入像2001/3/33这样的错误日期) { if(c<=31) { switch(i) { case 1:n=c;break; case 3:n=b1+b2+c;break; case 5:n=b1+b2+b3+b4+c;break; case 7:n=b1+b2+b3+b4+b5+b6+c;break; case 8:n=b1+b2+b3+b4+b5+b6+b7+c;break; case 10:n=b1+b2+b3+b4+b5+b6+b7+b8+b9+c;break; case 12:n=b1+b2+b3+b4+b5+b6+b7+b8+b9+b10+b11+c;break; } } else printf("输入的日期有误.\n"); } else { if(i==9||i==4||i==6||i==11) //若输入的为30天的几个月...(防止输入像2001/4/31这样的错误日期) { if(c<=30) { switch(i) { case 4:n=b1+b2+b3+c;break; case 6:n=b1+b2+b3+b4+b5+c;break; case 9:n=b1+b2+b3+b4+b5+b6+b7+b8+c;break; case 11:n=b1+b2+b3+b4+b5+b6+b7+b8+b9+b10+c;break; } } } else printf("输入的日期有误.\n"); } }

2013-05-14

空空如也

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

TA关注的人

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