- 博客(29)
- 资源 (10)
- 收藏
- 关注
原创 LeetCode---Bulb Switcher解题分析
题意描述:给定n个灯泡,初始化全为off,第一趟全问部on,第二趟将每第二个off,第三趟将每第三个反转……第n趟将第n个反转,最后返回灯泡处于on的数目。给定n=3,则有以下过程:开始时,3个灯泡[off, off, off];第一轮,3个灯泡[on, on, on];第二轮,3个灯泡[on, off, on];第三轮,3个灯泡[on, off, off]。所以最后返回1解题思路一:该方
2016-06-30 21:45:32 434
原创 树的子结构
题意描述:输入两棵二叉树A和B,判断B是不是A的子结构。如下判断右边的树是否为左边树的子结构二叉树的定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};解题思路:依次判断B的根结点是否与A的某一结点相同,如果是则进一步判断B的子结点...
2016-06-30 21:19:10 442
原创 在O(1)时间内删除链表结点&&删除链表中重复节点
题意描述:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点解题思路:要求在O(1)时间内删除结点,则可以这样考虑:将给定结点后继结点的值赋给给定结点,然后删除给定结点的后继结点即可void DeleteNode(ListNode** pHead, ListNode* pToBeDeleted) { if (!pHead || !pToBeDeleted) r...
2016-06-30 21:05:43 971
原创 打印1到最大的N位数
题意描述:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印1、2、3……999解题思路一:先找到最大的那个数字,然后再从1开始循环打印void Print1ToMaxOfNDigits(int n) { int num = 1; int i = 0; while (i < n) { num *= 10; ++i; } for (int i = 0;
2016-06-30 21:01:17 699
原创 二叉树的镜像
题意描述:输入一个二叉树,写函数实现输出该二叉树的镜像。二叉树的定义如下:struct BinaryTreeNode { int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};即将下图的左边的树转换成右边的树:解题思路:先想只有三个结点的树,做法是交换左右子结点,即求得这样三个结点的树的镜像。同...
2016-06-30 20:43:07 312
原创 LeetCode---Count Numbers with Unique Digits解题分析
题意描述:给定一个非负数n,计算0解题思路一:数字的基本元素是[0,1,2,3,4,5,6,7,8,9]共10个数字,则有以下结论:n=0 ---1 [0]n=1 ---1+9=10 [0;1,2,3,4,5,6,7,8,9]n=2 ---10+81 [0;1...9;10...98(除去11,22...99)],1+9+9*9n=3 ---10+9
2016-06-30 20:30:57 838
原创 将二叉搜索树转换成双向链表
题意描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。如下图所示:二叉树的定义如下:struct BinaryTreeNode { int val; BinaryTreeNode* pLeft; BinaryTreeNode* pRight;};解题思路:二叉搜索树的中序遍历是有序的,而对于树的遍历一般都
2016-06-30 20:19:45 335
原创 复杂链表的复制(随机指针)
题意描述:请实现函数ComplexListNode *Clone(ComplexListNode* head),复制一个复杂链表。在复杂链表中,每个结点除了有一个pNext指针指向一下一个结点外,还有一个pOther指向链表中任意结点或NULL。结点的定义如下:struct ComplexListNode { int val; ComplexListNode* pNext; Co...
2016-06-29 22:18:39 482
原创 Python2.7网络爬虫---简单的爬取百度贴吧的小爬虫
断断续续的学了一下Python基础,但不常用,所以基本等于不会,于是便趁周末向各位网络大神学习一下Python爬虫来巩固一下这里以我用的是Python2.7.5版本,好像Python3跟Python2的差别蛮大,特此说明整体思路:先自定义一个爬取函数,参数列表有URL、页面起始地址和结束地址;然后分别读取每个页面,保存到本地程序代码如下:(调用函数传入链接、所要爬取的页面起始和结束地址
2016-06-19 16:38:26 1957
原创 二叉树中和为某一值的路
题意描述:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。如: 10 / \ 5 12 / \ 4 7解题思路:借助栈,进行深度优先遍历,如果当前结点为叶子结点并且从根结点到当前结点的值的和等于给定值,则找到一条路径并打印
2016-06-18 19:19:10 488
原创 判断给定的数组是否为二叉搜索树的后序遍历序列
题意描述:输入一个整数数组,判断该数组是不是某个二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。例如输入{5,7,6,9,11,10,8}返回true;输入{7,4,6,5}返回false对应的后序遍历结果为5、7、6、9、11、10、8解题思路:在后序遍历序列中,最后一个数字是树的根结点的值,前面的数字可分为两个部分:第一部分...
2016-06-17 09:50:44 756 1
原创 ImportError: No module named matplotlib
学习《Spark机器学习》时,在Linux下运行Python shell,同时运用PyShark下使用MLlib的线性模型和决策树模型进行实验时,在Spark的安装目录下启动PySpark shell:IPYTHON=1 IPYTHON_OPTS="-pylab" ./bin/pyspark但出问题了!!!ImportError: No module named matplotlib
2016-06-15 17:28:13 2228
原创 Linux下压缩解压命令总结
一、zip/unzip命令Linux下自带了一个zip程序压缩zip文件,命令是 zip (-r) (-d) filename.zip files,表示会将files压缩到filename.zip ,(-r表示递归压缩子目录下所有文件;-d删除压缩的源文件files);同样也提供了一个unzip的程序可以解压缩文件,解压命令是:unzip (-o) (-d /path) filen
2016-06-15 16:18:11 849
转载 C语言三种预处理功能
1. 宏定义2. 文件包含3. 条件编译伪指令(或预处理指令)定义:预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。下面是部分预处理指令:指令 用途# 空指令,无任
2016-06-15 15:37:57 20423 5
原创 LeetCode---Top K Frequent Elements解题分析
题意描述:给定一个整数数组和数字K,返回数组中出现最频繁的K个元素。如:输入[1,1,1,2,2,3],K=2,返回[1,2]。要求时间复杂度为O(nlogn)解题思路:考虑到统计字符及其出现频率,自然就想到运用HashMap数据结构,key为元素,value为该元素出现次数。然后将结果按照value排序,返回前K个key值即为所求***这里主要是对HashMap中的数据按照val
2016-06-14 20:15:57 419
原创 栈的压入和弹出序列
题意描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。如:输入顺序:1,2,3,4,5则4,5,3,2,1是其输出顺序 但4,3,5,1,2不是其输出顺序解题思路:(1)如果下一个弹出的数字刚好是栈顶数字,那么直接弹出;(2)如果一下个弹出的数字不在栈顶,则把压栈序列中还没有入栈的数字压入辅助栈,直到把下一个需要弹出的数字压入栈顶;(
2016-06-12 21:54:11 2449
原创 大端模式与小端模式
之前一直不在意大端模式与小端模式,随着学习的过程,这里总结一下概念小端模式(Little-Endian):低位字节排放在内存的低地址端,高位字节排放在内存的低地址端大端模式(Big-Endian):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端网络字节序:TCP/IP各层协议将字节定义的Big-Endian,即大端模式,通常称之为网络字节举例说明
2016-06-12 15:23:46 353
转载 Java的native方法
学习虚拟机时突然看到一个Native方法,不解,于是查阅资料,看到一篇较好的讲解,谢谢博主,在此声明!转过来一是与大家分享,二是备忘随时翻阅一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特
2016-06-08 10:35:24 379
原创 Sed命令用法总结
一、Sed命令介绍sed是一种流编辑器,它是文本处理中非常常用的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个...
2016-06-07 17:48:06 600
原创 LeetCode---Remove Duplicate Letters解题分析
题意描述:给定一个只包含小写字母的字符串,删除字符串中重复的字符,然后返回新的字符串是字典顺序排中最小的(不能打乱其原本的相对位置)。如:给定 "bcabc",返回 "abc"; 给定 "cbacdcbc",返回 "acdb"解题思路一:刚开始拿到这个题目时想法很简单,但忽略了括号里面的东东,提交报错后才突然发现加了括号里面的东东后题目难度大大提升。首先统计出每个字符出现的次数,用vis
2016-06-07 16:53:01 2015
原创 LeetCode---Product Of Array Except Self解题分析
题意描述:给定一个包含n个整数的数组,返回乘积数组(乘积数组第i处的元素表示原数组乘积中不包含i位置数的积)。如:给定[1,2,3,4],应当返回[24,12,8,6]解题思路一:自然是想到先求出整个数组的乘积totalProduct,然后计算res[i]时用pro/num[i]即可int[] productExceptSelf(int[] nums) { int totalProduct
2016-06-06 21:48:23 553
原创 找到栈最小元素
题意描述:定义栈的数据结构,请在该类型中实现一个能够找到栈最小元素的min函数。在该栈调用min、push、pop的时间复杂度都是O(1)解题思路:引用数据栈和辅助栈解题,入栈:数据栈中直接压入元素,当辅助栈空或者要压入的元素小于当前辅助栈栈顶元素时,辅助栈也压入该元素出栈:在数据栈不空的前提下,如果辅助栈栈顶元素与数据栈栈顶元素相等,则都弹出;否则只弹出数据栈栈顶元素得最小元素:
2016-06-06 15:54:19 2080 2
原创 LeetCode---Remove Duplicates from Sorted ListII解题分析
题意描述:给定一个单向链表,如果某元素重复则删除所有重复的结点,只保留原始链表中只出现了一次的结点。如:1->2->3->3->4->4->5,返回1->2->5 1->1->1->2->3,返回2->3 解题思路:(Remove Duplicates from Sorted ListII)还是利用I中删除链表中重复的结点的方法,引用又指针一个指向当前结点,另一个指向下一个结点,进行
2016-06-04 17:39:36 323
原创 LeetCode---Remove Duplicates from Sorted List解题分析
题意描述:(Remove Duplicates from Sorted List)给定一个单向已排序的链表,删除链表中重复的元素使每个元素只出现一次。如:1->1->1->2,返回1->2; 1->1->2->3->3->,返回1->2->3(Remove Duplicates from Sorted ListII)给定一个单向链表,如果某元素重复则删除所有重复的结点,只保留原始链表中
2016-06-04 17:34:54 498
原创 软件版本字符串排序
题意描述:软件的版本号一般是由数字和“.”组成的字符串,现比较两个字符串version1和version2,如果version1>version2返回1,如果version解题思路:字符串由数字和"."组成,所以先将字符串通过split()转化为字符数组,再逐位比较如果index=i区别出来了直接返回,否则比较index=i+1位int compareVersion(String vers
2016-06-04 15:18:47 2250
原创 LeetCode---Counting Bits解题分析
题意描述:给定一个非负整数num,则返回区间[0,num]中每个数字对应的二进制中1的个数。比如“num=5”,返回[0, 1, 1, 2, 1, 2]解题思路一:这里借鉴上一题的解法,一个函数实现计算数字的二进制形式中1的个数,然后在另一个函数中调用进而求出区间内每个数字的二进制形式中1的个数public int NumbersOf1Bits(int n) { int count =
2016-06-04 15:09:37 891
原创 Number of 1 Bits(二进制中1的个数)
题意描述:写一个函数计算无符号整数二进制形式中1的个数。如“11”(二进制形式“00000000000000000000000000001011”)返回3;解题思路一:Java中没有unsigned int,这里采用通过移位来实现计数1的个数int hammingWeight(int n) { int count = 0; while(n != 0){//因为Java中没有无符号的整数
2016-06-04 14:58:41 1010 1
原创 顺时针打印矩阵
题意描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如输入以下:1 2 3 4 5 6 7 89 10 11 1213 14 15 16输出:1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10解题思路一:《剑指offer》上给出的解法是第一步打印上(1--4),第二步打印右(8--16),
2016-06-03 17:05:39 337
原创 二维数组中的查找
题意描述:在一个二维数组中,每一行都按从左到右的递增顺序排序,每一列也按照从上到下的递增顺序排序完成函数,输入一个这样的一个二维数组和一个整数,判断是否含有该整数例如:1 2 892 4 9124 7 10136 8 1115如果查找7返回true,如果查找5返回false解题思路:依次从右上遍历,如果当前值等于给定值,返回tru
2016-06-03 08:54:55 288
中国计算机学会推荐国际刊物会议列表(数据库数据挖掘与内容检索)
2016-06-20
GroupLens_MovieLens数据集
2016-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人