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

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

2018-07-15 11:08:04

阅读数 341

评论数 0

442. Find All Duplicates in an Array 题解

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

2018-06-08 17:11:31

阅读数 134

评论数 0

Leetcode 292. Nim Game 题解

题目链接为:点击打开链接 题目要求:Nim 游戏规则如下,我和朋友一起玩拿石头的游戏,每人每次可以拿1-3块石头,拿到最后一块石头的人获胜。在游戏中,我是先拿石头的那个人。给定石头总数,判断我是否可以获胜。 思路:根据题目要求,“我和朋友都很聪明”,意味着我和朋友任何一个人输掉游戏,都...

2017-10-26 18:17:04

阅读数 173

评论数 0

Python 实现汉诺塔算法

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

2017-09-14 15:04:50

阅读数 293

评论数 0

知识图谱初探

多次听到知识图谱的概念,据说被称为“下一代搜索技术”,一直很好奇。趁着考试暂时告一段落,简单了解了一下知识图谱的相关知识,只希望自己能有个大概认识,不追求特别深入的学习。 (一)知识图谱初探 百度百科对知识图谱的定义如下:“知识图谱,也称为科学知识图谱,它通过将应用数学、图形学、信息可视化技术、信...

2017-06-11 09:06:41

阅读数 2169

评论数 0

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

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

2017-04-17 22:05:08

阅读数 592

评论数 0

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

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

2017-04-17 19:39:55

阅读数 6563

评论数 0

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

要求:给定字符串1和字符串2,要求找出两个字符串的最长公共子序列。例如,字符串1=“helloworld”,字符串2=“hwewegallgeo”,那么两者的最长公共子序列为“hello” 思路:参见:http://www.cnblogs.com/zhangchaoyang/articles/2...

2017-04-17 16:08:22

阅读数 3118

评论数 0

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

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

2017-04-17 15:06:37

阅读数 17132

评论数 0

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

题目要求:给定字符串A,B,其中B字符串不包含重复字符。   假设A="adcaaabcab",  B="abc", 可知B中包含的字符的所有组合方式有以下6种:abc acb bac bca cab cba;只要A字符串的某个子串是以上6种情况种的任何一种...

2017-04-12 22:13:07

阅读数 1052

评论数 0

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

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

2017-04-10 20:50:55

阅读数 365

评论数 0

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,...

2017-04-10 20:01:51

阅读数 534

评论数 0

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

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

2017-04-10 19:28:14

阅读数 261

评论数 0

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

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

2017-04-10 15:49:29

阅读数 1654

评论数 0

使用两个栈实现队列

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

2017-04-09 09:37:11

阅读数 251

评论数 0

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

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

2017-04-08 21:49:55

阅读数 173

评论数 0

排序算法总结

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

2017-04-08 21:34:06

阅读数 142

评论数 0

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

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

2017-04-08 21:02:21

阅读数 148

评论数 0

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

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

2017-04-08 18:53:24

阅读数 2465

评论数 0

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

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

2017-04-08 16:56:38

阅读数 981

评论数 0

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