leetcode
只要心向阳光,不管多晚都是好的。
希望通过leetcode,增强自己实际动手的能力,加油。
shuaishuai3409
我很帅
展开
-
LC330-google面试2016
思路:简单方法就是遍历,从1遍历到n,看数组A中需要补充哪些元素,但这样需要不断的计算A中下一个补充元素之前的任意元素之和,时间复杂度会很高。这题可以考虑一下贪心算法。每次填补的元素依赖于当前已经做出的选择。原创 2016-02-29 20:51:56 · 609 阅读 · 0 评论 -
创建二叉树:层次遍历--树的宽度高度,后序遍历--祖先节点
创建二叉树,遍历二叉树.详细介绍了层次遍历和后序遍历的应用. 层次遍历:树的高度,树的宽度,每一层节点个数等 后序遍历:根节点到某节点的路径,两个节点的最近公共祖先等.原创 2016-05-06 14:42:15 · 1107 阅读 · 0 评论 -
头插法和尾插法建立链表区别
单链表反转是面试时经常会遇到的问题,之前只是在数据结构里用伪代码实现过单链表反转。为落实亲手编写每一个程序的目标,在这里用java实现反转。方法有很多,这里只写最优的。时间复杂度O(n),空间复杂度O(1)。也就是说不新开辟空间,原地反转。这篇博客主要讲述如何采用头插和尾插两种方法建立单链表。反转链表见下一篇博客。原创 2016-02-27 18:48:46 · 19502 阅读 · 0 评论 -
中位数应用:输油管道问题--快速排序、改进、变种
问题描述:某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。示意如下所示。如果给定n口油井的位置, 即它们的x坐标(东西向)和y坐标(南北向), 应如何确定主管道的最优位置, 即使各油井到主管道之间的输油管道长度总和最小的位置? 问题分析:问题可以抽象为给定n个点坐标,如何确定一条平行于x轴的直线,使得所有原创 2016-05-18 19:07:32 · 1844 阅读 · 0 评论 -
树的基本性质理论推导
如果大家有很长时间没有看算法了,不妨从二叉树这块开始往起捡。因为其上承接线性表,下联系图论只是,掌握好树这块的理论知识具有重要意义。我将给大家整理下树的理论知识推到。原创 2016-03-30 20:11:14 · 2585 阅读 · 0 评论 -
web开发1——servlet
一. 什么是servlet servlet是服务器端(tomcat)运行的一段java程序(java接口),通过http协议,负责接收和响应web客户端(浏览器)的请求。 先附上servlet家族图谱。 以一个简单servlet小程序,讲述servlet的实现方式:1 编写java类,实现servlet接口,主要实现service方法。 2 配置web.xml文件,给servlet一个原创 2016-09-26 09:31:14 · 734 阅读 · 0 评论 -
加权中位数应用:油井加权的输油管道位置选取
普通的输油管道问题: 某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置, 即它们的x坐标(东西向)和y坐标(南北向), 应如何确定主管道的最优位置, 使得各油井到主管道之间的输油管道长度总和最小的位置。油井加权的输油管道问题:若考虑每个油井带有一个权重,求解目标变为加权距离和最小。原创 2016-05-19 20:05:17 · 856 阅读 · 0 评论 -
数字校验
目标:用户输入一段数字,判断其是否合法 规则:从数字末尾开始,逆向将奇数位相加,取和为sum1;逆向将偶数位乘以2再相加(若乘积为两位数,减9),取和为sum2;sum1+sum2能够被10整除,则认为合法 输入:5432123456788881 输出:合法思路:这道题不难,关键点在于如何把字符转换为数字以便进行相加减;另外,该题是逆向遍历+判断奇偶,所以要有两个“指针”。原创 2016-02-25 20:11:43 · 720 阅读 · 0 评论 -
单链表从尾到头输出元素
思路:0 若允许改变链表指针,可以将链表反转,然后在正向输出。原创 2016-03-02 18:45:38 · 2057 阅读 · 0 评论 -
无顺序约束的字符串匹配问题
字符串A较长,字符串B较短,如何以最短时间判断出B里的所有字母在A中都有:?B⊆A?B\subseteq A 举例: A=abcdeabcdft,B=dcea,返回ture 若:B=dfgz,返回false本题没有字符串顺序约束,不需要保证B中字母在A出现的相对顺序不变。下文帮助大家如何一步步优化匹配算法。(有顺序约束的字符串匹配问题,请大家参考KMP算法)原创 2016-04-06 19:26:22 · 1510 阅读 · 0 评论 -
微生物增值
假设有两种微生物 X 和 Y , X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。 现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。 如果X=10,Y=90 呢? 本题的要求就是写出这两种初始条件下,60分钟后Y的数目。 题原创 2015-10-15 17:15:26 · 910 阅读 · 1 评论 -
leetcode102:Binary Tree Level Order Traversal
Binary Tree Level Order Traversal.Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).For example:Given binary tree {3,9,20,#,#,15,7},3原创 2016-05-25 15:11:10 · 457 阅读 · 0 评论 -
字符串处理:下划线,多空格变单空格,统计单词出现个数
假设用户输入的字符串只有小写字母,空格和数字,请编写程序对用户输入的串进行处理,规则如下:把每个单词的首字母变为大写把数字与字母之间用下划线字符”_”分隔开把单词间有多个空格的调整为一个空格统计处理后的字符串每个单词出现次数输入: we are we 2family2 输出: We Are We 2_family_2思路:原创 2016-05-04 13:31:32 · 830 阅读 · 0 评论 -
java中数字类型转换
各种数字类型转换成字符串型: String s = String.valueOf( value); // 其中 value 为任意一种数字类型。 字符串型转换成各种数字类型: String s = “169”; byte b = Byte.parseByte( s ); short t = Short.parseShort( s ); int i = Integer.parseInt(原创 2016-01-15 11:36:26 · 602 阅读 · 0 评论 -
java不用api实现单链表反转(二)
这篇博客主要讲述反转链表相关思路。两种方法:时间复杂度均为O(n),空间复杂度均为O(1)原创 2016-02-27 19:11:33 · 1256 阅读 · 0 评论 -
日期的计算公式
从键盘输入一个日期,格式为yyyy-M-d 要求计算该日期与1949年10月1日距离多少天 例如: 用户输入了:1949-10-2 程序输出:1 用户输入了:1949-11-1 程序输出:31思路:我们要注意几点: 1. 闰年:计算闰年原创 2015-10-30 18:09:32 · 1124 阅读 · 0 评论 -
古堡算式
本题来源于蓝桥杯 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA,他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!“华生:“我猜也是!” 于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机找到破解的答案。 把 ABCDE 所代表的数字写出来。思路: ABCDE代表0~9之间的数字,其最大阈值为987654,目前还无法原创 2015-10-14 23:50:51 · 1338 阅读 · 0 评论 -
leetcode138: Copy List with Random Pointer
A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.Return a deep copy of the list.原创 2016-05-12 21:56:09 · 895 阅读 · 0 评论 -
leetcode141: Linked List Cycle
Given a linked list, determine if it has a cycle in it.Follow up: Can you solve it without using extra space?大家考虑这样一个问题,链表的环相当于一个圆形操场。假设有两个人在圆形操场上无限循环的跑,那么速度快的一定能追得上速度慢的。原创 2016-05-17 10:30:24 · 3313 阅读 · 0 评论 -
leetcode287: Find the Duplicate Number
数组中有n+1个数,范围为1~n,请证明至少存在一个重复的数字。假设只有一个重复的数,请找出这个数。假设n=4,那么数组中应该有5个数,每个数的范围为1~4且只有一个重复的数字。数组在放完1 2 3 4 后,如果在放一个数字的话必然会产生重复,目的就是找出这个重复的数字。要求:不要更改数组(限制你不要排序)不要使用额外的空间(不要创建新的数组)时间复杂度小于O(n$^2$)原创 2016-05-11 11:39:49 · 494 阅读 · 0 评论 -
leetcode19:Remove Nth Node From End of List
实现查找不难,两次遍历链表,第一遍记录链表长度,第二次直接遍历到倒数第k个即可。难点在于如何设计高效的算法一次遍历链表实现查找。成功则返回该节点data域的值,返回1;否则返回0。能否这样想,倒数第k个就是从末尾往前数第k个,而最后一个节点是空指针。设计两个指针,如果两个指针的距离始终是k,那么当后一个指针到尾节点时,前一个指针恰恰指向倒数第k个节点。这样,大概思路就出来了。原创 2016-03-03 15:15:04 · 567 阅读 · 0 评论 -
google2016面试题-count of smaller numbers after self
这是google2016的面试题,给定一个数组array[],返回一个计数数组count,count[i]表示array[]中第i个元素右边有多少个小于array[i](i>=0) 示例: 输入:array[]=[3,6,2,1] 输出:count[]=[2,2,1,0]分析思路: 不难想到O(n2)的方法,不断的用for循环来找目标值。难点在于如何在小于O(n2)时间复杂度下找到方法。可以利用线段原创 2016-03-21 21:46:59 · 1009 阅读 · 0 评论 -
leetcode20-valid parenthese
题目:Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid. The brackets must close in the correct order, “()” and “()[]{}” are all valid.原创 2016-04-25 20:41:36 · 550 阅读 · 0 评论 -
leetcode136-137:single number
LC136和LC137这两个题很像,前者是一整数数组中,仅有一个元素出现一次,其余均出现两次,后者是仅有一个元素出现一次,其余均出现三次,都要求找到仅出现一次的那个元素。而且要求都在线性时间O(n)以及不要创建额外的数组实现。原创 2016-04-28 11:18:47 · 675 阅读 · 0 评论 -
leetcode260-single number iii
题目: Given an array of numbers nums, in which exactly two elements appear only once and all the other elements appear exactly twice. Find the two elements that appear only once.For example:Given nums原创 2016-04-29 20:07:10 · 520 阅读 · 0 评论 -
leetcode151: symmetric tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).判断一颗二叉树是否是对称的。原创 2016-04-30 21:03:32 · 546 阅读 · 0 评论