自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (1)
  • 收藏
  • 关注

原创 三角形计数-LintCode

给定一个整数数组,在该数组中,寻找三个数,分别代表三角形三条边的长度,问,可以寻找到多少组这样的三个数来组成三角形?样例: 例如,给定数组 S = {3,4,6,7},返回 3 其中我们可以找到的三个三角形为:{3,4,6}{3,6,7}{4,6,7}给定数组 S = {4,4,4,4}, 返回 4 其中我们可以找到的三个三角形为:{4(1),4(2),4(3)}{4(1),4(2),4

2017-09-30 16:53:41 789

原创 螺旋矩阵 II -LintCode

给你一个数n生成一个包含1-n^2的螺旋形矩阵。样例: n = 3 矩阵为[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]#ifndef C381_H#define C381_H#include<iostream>#include<vector>using namespace std;class Solution {public:

2017-09-30 16:20:11 157

原创 两个链表的交叉-LintCode

请写一个程序,找到两个单链表最开始的交叉节点。注意事项:如果两个链表没有交叉,返回null。 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 样例: 下列两个链表: 在节点 c1 开始交叉。挑战 : 需满足 O(n) 时间复杂度,且仅用 O(1) 内存。#ifndef C380_H#define C380_H#include<iostream>usin

2017-09-30 15:15:02 246

原创 将数组重新排序以构造最小值-LintCode

给定一个整数数组,请将其重新排序,以构造最小值。注意事项: The result may be very large, so you need to return a string instead of an integer.样例 给定 [3, 32, 321],通过将数组重新排序,可构造 6 个可能性数字:3+32+321=3323213+321+32=33213232+3+321=323

2017-09-30 14:01:26 233

原创 将二叉查找树转换成双链表-LintCode

将一个二叉查找树按照中序遍历转换成双向链表。样例: 给定一个二叉查找树: 4 / \ 2 5 / \1 3返回 1<->2<->3<->4<->5。#ifndef C378_H#define C378_H#include<iostream>#include<vector>using namespace std;class TreeNode{public:

2017-09-29 20:09:08 215

原创 二叉树的路径和-LintCode

给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。 一个有效的路径,指的是从根节点到叶节点的路径。 样例 给定一个二叉树,和 目标值 = 5: 1 / \ 2 4 / \2 3返回:[ [1, 2, 2], [1, 4]]#ifndef C376_H#define C376_H#include<iostream>#include

2017-09-29 18:34:00 199

原创 克隆二叉树-LintCode

深度复制一个二叉树。 给定一个二叉树,返回一个他的克隆品 。样例: 给定一个二叉树: 1 / \ 2 3/ \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5#ifndef C375_H#define C375_H#include<iostream>using namespace std;class

2017-09-29 15:55:32 122

原创 螺旋矩阵-LintCode

给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。 样例: 给定如下矩阵:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]应返回 [1,2,3,6,9,8,7,4,5]。#ifndef C374_H#define C374_H#include<iostream>#include<v

2017-09-29 15:27:04 168

原创 奇偶分割数组-LintCode

分割一个整数数组,使得奇数在前偶数在后。样例: 给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]。挑战: 在原数组中完成,不使用额外空间。#ifndef C373_H#define C373_H#include<iostream>#include<vector>using namespace std;class Solution {public: /*

2017-09-29 10:11:52 202

原创 在O(1)时间复杂度删除链表节点 -LintCode

给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。样例: Linked list is 1->2->3->4, and given node 3, delete the node in place 1->2->4#ifndef C372_H#define C372_H#include<iostream>using namespace std;c

2017-09-29 09:38:23 229

原创 用递归打印数字-LintCode

用递归的方法找到从1到最大的N位整数。提示: 用下面这种方式去递归其实很容易:recursion(i) { if i > largest number: return results.add(i) recursion(i + 1)}但是这种方式会耗费很多的递归空间,导致堆栈溢出。你能够用其他的方式来递归使得递归的深度最多只有 N 层么?示例: 给出 N

2017-09-27 09:55:32 268

原创 将表达式转换为逆波兰表达式-LintCode

给定一个表达式字符串数组,返回该表达式的逆波兰表达式(即去掉括号)。示例: 对于 [3 - 4 + 5]的表达式(该表达式可表示为[“3”, “-“, “4”, “+”, “5”]),返回 [3 4 - 5 +](该表达式可表示为 [“3”, “4”, “-“, “5”, “+”])。思想: 对于数字时,加入后缀表达式; 对于运算符: a. 若为 ‘(‘,入栈; b. 若为 ‘)’,则依次

2017-09-26 20:54:49 3605

原创 表达式求值-LintCode

给一个用字符串表示的表达式数组,求出这个表达式的值。提示: 表达式只包含整数, +, -, *, /, (, ).示例: 对于表达式 (2*6-(23+7)/(1+2)), 对应的数组为:[ “2”, “*”, “6”, “-“, “(“, “23”, “+”, “7”, “)”, “/”, (“, “1”, “+”, “2”, “)” ], 其值为 2思想: 还是先构造

2017-09-26 20:34:57 336

原创 表达树构造-LintCode

表达树是一个二叉树的结构,用于衡量特定的表达。所有表达树的叶子都有一个数字字符串值。而所有表达树的非叶子都有另一个操作字符串值。 给定一个表达数组,请构造该表达的表达树,并返回该表达树的根。定义: 什么是表达树?详见wiki百科示例: 对于 (2*6-(23+7)/(1+2)) 的表达(可表示为 [“2” “*” “6” “-” “(” “23” “+” “7” “)” “/” “(” “1”

2017-09-26 17:00:47 497

原创 斐波纳契数列-LintCode

查找斐波纳契数列中第 N 个数。 所谓的斐波纳契数列是指: 前2个数是 0 和 1 。 第 i 个数是第 i-1 个数和第i-2 个数的和。 斐波纳契数列的前10个数字是: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 …示例: 给定 1,返回 0 给定 2,返回 1 给定 10,返回 34非递归:#ifndef C366_H#define C366_H#inc

2017-09-26 08:53:40 362

原创 二进制中有多少个1-LintCode

计算在一个 32 位的整数的二进制表示中有多少个 1.Example: 给定 32 (100000),返回 1 给定 5 (101),返回 2 给定 1023 (111111111),返回 9Challenge: If the integer is n bits with m 1 bits. Can you do it in O(m) time?如果num是负数,则将其与-1...

2017-09-25 21:58:12 248

原创 接雨水 II-LintCode

Given n x m non-negative integers representing an elevation map 2d where the area of each cell is 1 x 1, compute how much water it is able to trap after raining. 例如,给定一个 5*4 的矩阵:[ [12,13,0,12],

2017-09-25 20:57:10 976

原创 接雨水-LintCode

给出 n 个非负整数,代表一张X轴上每个区域宽度为 1 的海拔图, 计算这个海拔图最多能接住多少(面积)雨水。 示例: 如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,2,1,2,1], 返回 6。挑战: O(n) 时间, O(1) 空间 O(n) 时间, O(n) 空间也可以接受O(n) 时间, O(n) 空间#ifndef C363_H#define C363_H#in

2017-09-25 17:28:15 218

原创 滑动窗口的最大值-LintCode

给出一个可能包含重复的整数数组,和一个大小为 k 的滑动窗口, 从左到右在数组中滑动这个窗口,找到数组中每个窗口内的最大值。样例: 给出数组 [1,2,7,7,8], 滑动窗口大小为 k = 3. 返回 [7,7,8].解释: 最开始,窗口的状态如下: [|1, 2 ,7| ,7 , 8], 最大值为 7; 然后窗口向右移动一位: [1, |2, 7, 7|, 8], 最大值为 7; 最

2017-09-23 20:08:20 223

原创 滑动窗口的中位数-LintCode

给定一个包含 n 个整数的数组,和一个大小为 k 的滑动窗口,从左到右在数组中滑动这个窗口,找到数组中每个窗口内的中位数。(如果数组个数是偶数,则在该窗口排序数字后,返回第 N/2 个数字。)样例: 对于数组 [1,2,7,8,5], 滑动大小 k = 3 的窗口时,返回 [2,7,7]最初,窗口的数组是这样的: [ | 1,2,7 | ,8,5] , 返回中位数 2; 接着,窗口继续向前滑动

2017-09-23 18:28:08 705

原创 统计前面比自己小的数的个数-LintCode

给定一个整数数组(下标由 0 到 n-1, n 表示数组的规模,取值范围由 0 到10000)。对于数组中的每个 ai 元素,请计算 ai 前的数中比它小的元素的数量。注意事项: We suggest you finish problem Segment Tree Build, Segment Tree Query II and Count of Smaller Number first.样例:

2017-09-22 16:48:56 1160

原创 统计比给定整数小的数的个数 -Lintcode

给定一个整数数组 (下标由 0 到 n-1,其中 n 表示数组的规模,数值范围由 0 到 10000),以及一个 查询列表。对于每一个查询,将会给你一个整数,请你返回该数组中小于给定整数的元素的数量。注意事项: 在做此题前,最好先完成 线段树的构造 and 线段树查询 II 这两道题目。样例: 对于数组 [1,2,7,8,5] ,查询 [1,8,5],返回 [0,4,2]挑战 可否用一下三种

2017-09-22 11:13:08 350

原创 线段树查询 II-LintCode

对于一个数组,我们可以对其建立一棵 线段树, 每个结点存储一个额外的值 count 来代表这个结点所指代的数组区间内的元素个数. (数组中并不一定每个位置上都有元素)实现一个 query 的方法,该方法接受三个参数 root, start 和 end, 分别代表线段树的根节点和需要查询的区间,找到数组中在区间[start, end]内的元素个数。注意事项: It is much easier to

2017-09-22 10:13:02 169

原创 子树-LintCode

有两个不同大小的二叉树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。注意事项: 若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。样例 下面的例子中 T2 是 T1 的子树: T1 T2 1

2017-09-20 21:42:23 564

原创 用栈模拟汉诺塔问题-LintCode

在经典的汉诺塔问题中,有 3 个塔和 N 个可用来堆砌成塔的不同大小的盘子。要求盘子必须按照从小到大的顺序从上往下堆 (如,任意一个盘子,其必须堆在比它大的盘子上面)。同时,你必须满足以下限制条件:(1) 每次只能移动一个盘子。 (2) 每个盘子从堆的顶部被移动后,只能置放于下一个堆中。 (3) 每个盘子只能放在比它大的盘子上面。请写一段程序,实现将第一个堆的盘子移动到最后一个堆中。 思路:

2017-09-20 20:16:46 1014

原创 回文链表 -LintCode

设计一种方式检查一个链表是否为回文链表。 样例: 1->2->1 就是一个回文链表。 挑战 : O(n)的时间和O(1)的额外空间。#ifndef C233_H#define C233_H#include<iostream>#include<vector>using namespace std;struct ListNode{ int val; ListNode *

2017-09-19 17:21:39 598

原创 链表求和 II-LintCode

假定用一个链表表示两个数,其中每个节点仅包含一个数字。假设这两个数的数字顺序排列,请设计一种方法将两个数相加,并将其结果表现为链表的形式。 样例: 给出 6->1->7 + 2->9->5。即,617 + 295。 返回 9->1->2。即,912 。#ifndef C221_H#define C221_H#include<iostream>#include<vector>using

2017-09-19 14:28:05 556 1

原创 空格替换-LintCode

设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。 你的程序还需要返回被替换后的字符串的长度。注意事项: 如果使用 Java 或 Python, 程序中请用字符数组表示字符串。样例: 对于字符串”Mr John Smith”, 长度为 13 替换空格之后,参数中的字符串需要变为”Mr%20John%20Smi

2017-09-18 09:12:28 467

原创 字符串置换 -LintCode

给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。 置换的意思是,通过改变顺序可以使得两个字符串相等 样例: “abc” 为 “cba” 的置换。 “aabc” 不是 “abcc” 的置换。#ifndef C211_H#define C211_H#include<iostream>#include<string>#include<map>using nam

2017-09-16 09:39:03 295

原创 赋值运算符重载-LintCode

实现赋值运算符重载函数,确保:新的数据可准确地被复制旧的数据可准确地删除/释放可进行 A = B = C 赋值说明: 本题只适用于C++,因为 Java 和 Python 没有对赋值运算符的重载机制。样例: 如果进行 A = B 赋值,则 A 中的数据被删除,取而代之的是 B 中的数据。 如果进行 A = B = C 赋值,则 A 和 B 都复制了 C 中的数据。挑战 : 充分考虑安

2017-09-16 09:15:39 270

原创 区间求和 II -LintCode

在类的构造函数中给一个整数数组, 实现两个方法 query(start, end) 和 modify(index, value):对于 query(start, end), 返回数组中下标 start 到 end 的 和。 对于 modify(index, value), 修改数组中下标为 index 上的数为 value.注意事项: 在做此题前,建议先完成以下三题: 线段树的构造 线段树的

2017-09-13 17:26:49 209

原创 区间求和 I -LintCode

给定一个整数数组(下标由 0 到 n-1,其中 n 表示数组的规模),以及一个查询列表。每一个查询列表有两个整数 [start, end] 。 对于每个查询,计算出数组中从下标 start 到 end 之间的数的总和,并返回在结果列表中。注意事项: 在做此题前,建议先完成以下三题:线段树的构造, 线段树的查询,以及线段树的修改。样例: 对于数组 [1,2,7,8,5],查询[(1,2),(0,4

2017-09-13 15:15:35 216

原创 区间最小数-LintCode

给定一个整数数组(下标由 0 到 n-1,其中 n 表示数组的规模),以及一个查询列表。每一个查询列表有两个整数 [start, end]。 对于每个查询,计算出数组中从下标 start 到 end 之间的数的最小值,并返回在结果列表中。注意事项: 在做此题前,建议先完成以下三道题 线段树的构造, 线段树的查询 及 线段树的修改。样例: 对于数组 [1,2,7,8,5], 查询 [(1

2017-09-13 10:13:24 643

原创 单例-LintCode

单例 是最为最常见的设计模式之一。对于任何时刻,如果某个类只存在且最多存在一个具体的实例,那么我们称这种设计模式为单例。例如,对于 class Mouse (不是动物的mouse哦),我们应将其设计为 singleton 模式。 你的任务是设计一个 getInstance 方法,对于给定的类,每次调用 getInstance 时,都可得到同一个实例。样例: 在 Java 中: A a = A.

2017-09-13 08:38:52 183

原创 线段树的修改-LintCode

对于一棵 最大线段树, 每个节点包含一个额外的 max 属性,用于存储该节点所代表区间的最大值。设计一个 modify 的方法,接受三个参数 root、 index 和 value。该方法将 root 为根的线段树中 [start, end] = [index, index] 的节点修改为了新的 value ,并确保在修改后,线段树的每个节点的 max 属性仍然具有正确的值。样例: 对于

2017-09-11 12:11:17 170

原创 线段树的查询-LintCode

对于一个有n个数的整数数组,在对应的线段树中, 根节点所代表的区间为0-n-1, 每个节点有一个额外的属性max,值为该节点所代表的数组区间start到end内的最大值。为SegmentTree设计一个 query 的方法,接受3个参数root, start和end,线段树root所代表的数组中子区间[start, end]内的最大值。注意事项: 在做此题之前,请先完成 线段树构造 这道题目。样例

2017-09-11 09:55:26 212

原创 线段树的构造-LintCode

线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间。start和end都是整数,并按照如下的方式赋值:·根节点的 start 和 end 由 build 方法所给出。 ·对于节点 A 的左儿子,有 start=A.left, end=(A.left + A.right) / 2。 ·对于节点 A 的右儿子,有 start=(A.left + A

2017-09-11 08:33:42 192

原创 实验楼Git实战教程-初始化 Git 仓库

介绍对应上一章文档中的内容,来创建我们第一个本地 Git 仓库。我们需要设置个人的 Git 信息,包括 username 和 email。另外需要对本地 Git 仓库进行初始化操作以及增加一些项目文件。目标设置 Git 信息; 完成本地 Git 仓库的初始化操作; 设置关联到远程仓库; 创建 README.md 文件并进行commit(不需要 push 到远程仓库); 标准本地 Git

2017-09-06 16:08:30 258

原创 实验楼Linux基础入门(新版)- 数据提取

介绍小明在做数据分析的时候需要提取文件中关于数字的部分,同时还要提取用户的邮箱部分,但是有的行不是数组也不是邮箱

2017-09-05 20:32:12 798

原创 实验楼Linux基础入门(新版)- 历史命令

介绍在linux中,对于文本的处理和分析是极为重要的,现在有一个文件叫做data1,同学们可以在这里下载,wget http://labfile.oss.aliyuncs.com/courses/1/data1里面记录是一些命令的记录,现在需要你从里面找出出现频率次数前3的命令并保存在/home/shiyanlou/result。目标处理文本data 将结果写入result 结果包含次数和命令,

2017-09-05 16:13:28 1725

空空如也

空空如也

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

TA关注的人

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