- 博客(206)
- 资源 (18)
- 收藏
- 关注
原创 剑指offer 合并两个链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:非递归:构造第三个链表,先定义一个head,指向两个list1和list1开头比较小的那个链表头部;然后定义一个cur指向head,循环list1和list2,每次把两个链表中小的值放到cur后面,cur向后值移动,对应的list1或者list2向后移动;最后跳出while循环,如
2018-02-04 21:46:23 108
原创 剑指offer 翻转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。思路:定义两个变量,一个pre指向当前节点的前面一个结点,一个next指向当前节点的后面节点。每次遍历,先把next 指向当前节点的后面一个结点,然后把当前节点的next指针指向pre,再依次把pre节点指向当前节点,把当前节点后移。/*public class ListNode { int val; List
2018-02-04 21:30:59 151
原创 剑指offer 链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。思路:快慢指针,让快指针先走k步,然后慢指针开始走,若快指针走到末尾(为null),就是慢指针指向的就是倒数第k个结点/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val
2018-02-03 21:39:36 93
原创 整数中1出现的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:一个数二进制,好比 ,1100,把这个数减去1, 1011 ,然后把这两个数做与运算, 为1000 ,此时还剩一个1 。然后再减去1 为 0111 ,然后把1000和0111做与运算 ,此时结果为0000..这种解法复杂度相对较低。public class Solution { public in
2018-02-03 21:07:57 672
原创 剑指offer 斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n思路:第一反应,当然是用递归,简单简洁。但是栈消耗比较大,当数值很大时,费时费空间。第二反应,动态规划的思路,用循环,保存之前 已经运算的值。public class Solution { public int Fibonacci(int n) { int
2018-02-03 20:46:28 86
原创 剑指offer 旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:采用二分查找,先把中间的值和low和high值对比,如果中间值比high位值大,low指向中
2018-02-03 20:30:21 97
原创 用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:第一个栈,功能作为入队列;第二个栈,功能作为出队列,如果为空,把stack1出栈 ,并进栈stack2, 如果不为空,直接出栈。import java.util.Stack;public class Solution { Stack stack1 = new Sta
2018-02-02 22:56:50 96
原创 剑指offer 重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:前序是根左右,中序是左根右。前序第一个元素是根结点的值。扫描遍历中序,就能确定 根结点的值的位置。根据中序遍历的特点,在根结点的值
2018-02-02 22:43:23 77
原创 剑指offer 从头到尾打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。思路:第一反应,便是使用栈,先进后出,先遍历进栈,再遍历栈出栈。第二反应,使用递归,其原理和栈差不多,类似一个进栈的过程。递归:import java.util.ArrayList;public class Solution { ArrayList arrayList = new ArrayList(
2018-02-01 21:24:30 138
原创 剑指offer 替换空格
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路:1、从前往后遍历字符串空格长度blankNum 2、然后扩展数组长度为字符串长度length+2*blankNum,因为%20占三位3、从后向前遍历,一个index下标指向新的扩展后数组下标,一个i下标指向原来数
2018-02-01 21:12:46 132
原创 剑指offer 二维数组中的查找
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:二维数组,从左到右递增,从上到下递增。选取右上角或者左下角元素,选取右上角元素与target比较,如果target相对较大,则肯定到下面寻找;如果target相对较小,则肯定到左边寻找。package
2018-02-01 20:53:01 124
原创 数组的全排列
1.问题背景学过数学的人都知道,全排列的意思是什么。现在如何用计算机的编程语言实现数组的全排列呢?数组的全排列可用于求解八皇后问题。与此同时,全排列经常会出现在笔试或者面试,如求字符串的全排列。2.全排列的递归实现2.1求解思路全排列表示把集合中元素的所有按照一定的顺序排列起来,使用P(n, n) = n!表示n个元素全排列的个数。P(n, n)
2018-01-31 21:20:00 8923
原创 lintcode -- Strobogrammatic Number 对称数
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).Write a function to determine if a number is strobogrammatic. The number is represented as
2018-01-31 20:01:21 232
原创 剑指offer39: 数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。方法一: 先对数组排序,然后取中位数,那个中位数肯定是超过一半的数字。采用快速排序时间复杂度为O(nlogn)+取中位数O(n)。
2018-01-23 22:07:56 159
原创 lintcode82. 落单的数
题目描述: 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字。样例给出 [1,2,2,1,3,4,3],返回 4思路可以这样设计,既然位运算中“异或”的操作能消去同样的整数,那么,如果我们对整个数组从前到后异或(第一个数异或第二个,得到的结果再异或第三个),这样一来,只要是数组中成对出现的元素,到最后都能相互抵消(与这两个成对的数是否相邻
2018-01-22 21:58:13 205
原创 一、垃圾收集策略
程序计数器、虚拟机栈、本地方法栈都是线程私有的,会随着线程而生,随线程而灭栈中的栈帧随着方法的进入和退出有条不紊的执行着出栈和入栈操作.静态内存分配和回收静态内存分配是指在程序开始运行时由编译器分配的内存,在被编译时就已经能够确定需要的空间,当程序被加载时系统把内存一次性分配给它,这些内存不会在程序执行时发生变化,直到程序执行结束时才回收内存.。包括原生数据类型及对
2018-01-21 22:21:17 139
原创 lintcode508 摆动排序
给你一个没有排序的数组,请将原数组就地重新排列满足如下性质:nums[0] = nums[2] 样例给出数组为 nums = [3, 5, 2, 1, 6, 4] 一种输出方案为 [1, 6, 2, 5, 3, 4]解析:如果按照从1排序,也就是奇数要比相邻的偶数小。偶数要比相邻的奇数大。否则就的交换位置。public class Solution
2018-01-21 21:36:57 278
原创 排序之快速排序
快速排序是一种高效的排序算法,它采用分治法的思想,有“分而治之”的特点。有三个过程:一、分解,把大问题拆解到很小的问题。二、每个小问题都能够有方法解决。三、合并,把小问题各个答案合并package com;//快速排序,默认第一个元素为主元public class Problem1 { /** * @param args */ public stati
2018-01-21 21:09:46 159
原创 Spring afterPropertiesSet方法
在看用redis实现异步消息队列时,遇到了注册Event,其中看到了afterPropertiesSet。然后查博客,记录下。一、简单介绍1、init-method方法,初始化bean的时候执行,可以针对某个具体的bean进行配置。init-method需要在applicationContext.xml配置文档中bean的定义里头写明。例如:这样,当TestBean在初
2018-01-11 21:28:08 61670 4
原创 FCM算法归属于哪一类聚类
老板就FCM的概率,想我提问了如下问题:(1)FCM归属于哪一类聚类?FCM属于基于划分,也属于软聚类(2)软聚类和硬聚类的定义是什么?(这个是在评讲你的小论文时提过的问题)从聚类的结果来看,聚类可分为两大类:软聚类和硬聚类。软聚类是将样本个体通过隶属度标识出与各个类簇的隶属关系。硬聚类是将样本个体划分为某一特定的类簇,与其它的类簇并没有关系。硬聚类是将样本点明确地
2018-01-08 12:16:58 1486
原创 java并发---BlockingQueue
BlockingQueue,阻塞队列,是java.util.concurrent包下的接口,它集成了Queue类。它的实现类有ArrayBlockingQueue,ListBlockingQueue等。注意:ArrayBlockingQueue中使用了lock和condition来控制队列的进出,因此ArrayBlockingQueue是线程安全的。final ReentrantLock
2017-12-03 14:39:19 207
原创 java并发---lock和condition
一、 java.util.concurrent.locks下面接口介绍 java.util.concurrent.locks包为锁和等待条件提供一个框架的接口和类,它不同于内置同步(synchronize)和监视器。该框架允许更灵活地使用lock和condition,但以更难用的语法为代价。 它下面有三个接口:Lock , ReadtrantLock , Conditio
2017-12-03 13:50:46 5083
原创 敏感词过滤算法
这种方法,是从牛客网上看到的。需要实现功能: 如果有字符串为xwabfabcff,敏感词为abc、bf、bc、m,若这个字符串中包含敏感词,则使用***代替敏感词,实现一个算法。查找步骤:算法如下:1.使用三个指针,指针1指向根节点,指针2指向字符串下标起始值,指针3指向字符串当前下标值。指针1为tempnode=rootnode,指针2为begin=0,指针3为p
2017-12-01 21:34:42 717
原创 Tire树
今天写一个项目,遇到敏感词过滤问题。上面提到了先把敏感词存起来,在这里用到了Tire树来存储。 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。三个性质:
2017-12-01 21:10:47 353
原创 两个数的和
题目:给定一个整数数组和一个整数target,返回2个元素的下标,它们满足相加的和为target。例子: 给 nums = [2,7,11,15] ,target = 9因为nums[0] + nums[1] = 2 +7 =9所以返回 0 ,1package com.nowcoder.wenda.algorithm;import java.util.HashM
2017-11-29 20:59:38 306
原创 链表中环的入口节点
剑指offer 面试题23 : 如果一个链表中包含环,如何找出环的入口节点?第一步: 使用快慢指针,判断链表中是否有环。一个快指针,一个慢指针 。慢指针每次走一步,快指针每次走两步。如果最后有相遇,表示有环,返回相遇节点;如果没有环,则一直遍历到底,返回为null。public static ListNode meetingnode(ListNode head){ if(
2017-11-28 21:17:20 172
原创 从尾到头打印链表
这是剑指offer上面试题6: 题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。解法一:通过先顺序遍历链表,依次如栈,栈是先进后出的数据结构。package com.nowcoder.wenda.arithmetic;import java.util.ArrayList;import java.util.Stack;/** * Created by wuy
2017-11-28 19:35:28 109
原创 使用RDD解决spark TopN问题:分组、排序、取TopN
处理大学生云计算技能大赛第一题关联规则推荐中,遇到了这题:用的关联规则推荐算法 FPGowth想把:(2174 84329 114721 149, 150, 0.885480572597137)(858 878 791 4662, 49, 0.8841607565011821)(858 878 791 4662, 122, 0.9385342789598109)(2174
2017-11-23 17:03:30 2609 2
原创 spring和mybatis整合
方式有两种:第一个:是用dao模式的,比较传统第二种:通过mapper代理,mapper代理其实有两种方式。一个是对单个功能,第二个是批处理单个功能: 批处理: 其整合的applicationcontext.xml如下:(包括了dao,和mapper两种)<beans xmlns="http://www.
2017-10-28 20:03:55 156
原创 spring mvc demo案例
spring mvc 介绍开始实践demo,步骤如下:步骤1.前提,创建maven project :参考地址 --》 http://blog.csdn.net/u013013553/article/details/78202361步骤2. 项目目录结构步骤3:pom.xml的编写<project xmlns="http://maven.apac
2017-10-11 12:37:24 659
原创 使用myeclipse构建maven项目(web项目)
前提:MyEclipse已配置Maven,具体步骤见http://blog.csdn.net/haishu_zheng/article/details/51492491创建步骤:步骤1. new 出web project ,并勾选对maven support,注意项目的url 和 webRoot步骤2:填写groupid等信息,package
2017-10-11 12:30:32 505
原创 Spring和MyBatis环境整合
spring简介:Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。两个重要模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器 (在 Spring 框架中是 IOC 容器)
2017-10-10 16:31:06 354
原创 注册一个文件系统
/**Copyright(c) 2005-2007 Nanjing jit**Authored by yunlong wu 2015年 05月 20日 星期三 14:08:04 CST** @desc://注册一个文件系统()** @history*/#include #include #include #include #include #include #incl
2017-06-14 10:59:46 398
原创 linux 块设备驱动(1)
功能:添加一个ramdisk这样的设备,并且进行格式化,挂在,读写,很简单的一个块设备例子,刚刚学习设备驱动看完,并且运行完代码,希望大家和我有一样的问题,就是新的设备空间那里来的?原来的硬盘?还是内存,缓存?#include#include#include#include#include#define DEVICE_MAJOR 240#define DEVICE_NA
2017-06-14 10:55:40 363
原创 linux usb设备驱动(1)
/* * USB Skeleton driver - 2.2*功能:探测插入usb设备的次数,主要根据linux内核源码usb_skeleton.c修改,本事例以插入手机为例,因为系统原来已经有了u盘设备的驱动 * * Copyright (C) 2001-2004 Greg Kroah-Hartman (greg@kroah.com) * * This program
2017-06-14 10:49:34 401
原创 网络驱动snull
头文件/* * snull.h -- definitions for the network module * * */#ifndef __SNULL_H__#define __SNULL_H__#define SNULL_RX_INTR 0x0001#define SNULL_TX_INTR 0x0002#define SNULL_TIMEOUT 5 struc
2017-06-14 10:46:33 407
原创 测试一个进程的运行时间
功能:测试一个进程开始结束的运行时间test_thread.c#include "linux/init.h"#include "linux/kernel.h"#include "linux/module.h" //3个头文件包含了内核提供的所有内核模块的头文件#include "linux/sched.h"#include #include "linux/timer.h"
2017-06-14 10:41:13 507
原创 linux 内核定时器打印进程信息
linux内核模块作用: 通过定时器,在超过10秒就打印进程内存排名前十的进程信息test.c#include "linux/init.h"#include "linux/kernel.h"#include "linux/module.h" //3个头文件包含了内核提供的所有内核模块的头文件#include "linux/timer.h"#include "linux/r
2017-06-14 10:35:21 1151
原创 socket(2)
server.c负责接受客户端连接,并且把客户端发送过来的文件接受#include #include #include #include #include #include int main(int argc,char **argv){ int sockfd,bindfd,listenfd,acceptfd,ntopfd,recvfd; sock
2017-06-14 10:27:16 288
golang的web框架macaron,可直接运行
2019-06-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人