自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(181)
  • 收藏
  • 关注

原创 程序员面试经典--删除链表重复节点

2.1问题:编写代码,移除未排序链表中的重复节点。方法一:可使用临时缓冲区情况下,可用简单的散列表记录节点并判断是否重复。import java.util.*;//节点类class Node { protected Node next; //指针域 protected int data;//数据域 public Node( int data) { this.dat

2017-04-08 16:52:20 493

原创 Hashtable与ArrayListTest编译问题:使用了未经检查或不安全的操作;请使用 -Xlint:unchecked 重新编译

ArrayList staff = new ArrayList();Hashtable table = new Hashtable();在编译java源文件时,如果你的jdk是1.5或者以上,会出现“使用了未经检查或不安全的操作;请使用 -Xlint:unchecked 重新编译。”这样的警告,原因是JDK 1.5中集合类的实例创建方式与JDK 1.4的有一些不同,JDK 1.5 里面

2017-04-08 16:30:56 3453

原创 错误:类是公共的,应在名为的文件中声明

程序内部类children是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public class改为public static class.

2017-04-08 11:39:03 7486

转载 Java的Hashtable类

哈希表是一种重要的存储方式,也是一种常见的检索方法。其基本思想是将关系码的值作为自变量,通过一定的函数关系计算出对应的函数值,把这个数值解释为结点的存储地址,将结点存入计算得到存储地址所对应的存储单元。检索时采用检索关键码的方法。现在哈希表有一套完整的算法来进行插入、删除和解决冲突。在Java中哈希表用于存储对象,实现快速检索。  Java.util.Hashtable提供了种方法让用户使用哈

2017-04-08 10:21:41 375

转载 数据结构--位向量

数据结构:位向量(亦作位图,不过与图形学中的位图混淆,下作位向量)。一个n位的二进制数据,数据i如果出现在该二进制的第i位,则该位置为1,否则为0。如:用一个10位长的二进制数据表示元素都小于10的集合,{1,2,3,5,8},该集合用二进制数据的表现形式:0111010010算法分析:分三步解决 1. 初始化集合,每个位都置为0; 2. 读入文件的每个整数,将对应的位置为1; 

2017-04-07 10:37:23 2936

原创 程序员面试经典--置零矩阵

1.7问题:编写一个算法,若M*N矩阵中某个元素为0,则将其所在的行与列清零。思考:边遍历边置零,这样会有一个陷阱导致最后整个矩阵都会被置0。所以可以遍历两次,第一次确定0的位置,第二次置0相应行列。import java.util.*;class setzero{ public static void main(String args[]){ int a[][]={{1,1,

2017-04-07 10:35:06 520

原创 程序员面试经典--旋转矩阵

1.6问题:给定一副由N*N矩阵表示的图像,其中每个像素的大小为4字节,编写一个方法,将图像旋转90°。不占用额外的内存空间能否做到?思考:假设顺时针旋转90°。不占额外内存空间的情况下,一个一个索引进行交换,将上边移到右边,右边移到下边,下边移到左边,左边移到上边。时间复杂度为O(n^2),已是最优做法。import java.util.*;class rotate{ publi

2017-04-06 22:13:55 550

原创 程序员面试经典--字串压缩

1.5问题:利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。思考:怎样降低时间复杂度,提高代码效率。防止做无用功,可先判断压缩串长度是否大于原串,若是则返回原串,若否则返回压缩串。import java.util.*;class compress{ public

2017-04-06 20:39:40 554

转载 isNull(str), isEmpty(str)和 str = ""的区别

1。isnull()Null 值指出变量不包含有效数据。Null 与 Empty 不同,后者指出变量未经初始化。Null 与零长度字符串 ("") 也不同,零长度字符串往往指的是空串。重点 使用 IsNull 函数可以判断表达式是否包含 Null 值。在某些情况下想使表达式取值为 True,例如 IfVar=Null 和 IfVar下面的示例利用 IsNull 函数决定变量是否

2017-04-06 20:03:45 743

转载 重载“+”符号连接字符串

字符串是Java程序中最常用的一种数据结构之一。在Java中的String类已经重载的"+"。也就是说,字符串可以直接使用"+"进行连接,如下面代码所示:String s = "abc" + "ddd";但这样做真的好吗?当然,这个问题不能简单地回答yes or no。要根据具体情况来定。在Java中提供了一个StringBuilder类(这个类只在J2SE5及以上

2017-04-06 19:45:08 914

原创 程序员面试经典--空格替换

1.4问题:编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串尾部有足够的空间存放新字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)思想:扫描两次,第一次统计多少空格;第二次,反向编辑字符串,监测到空格则将%20插入,若不是,就复制原字符。import java.util.*;public class repla

2017-04-06 18:21:48 345

转载 Java中字符串为什么不以\0结尾

其实这个问题没有什么好说的,Java里面一切都是对象,是对象的话,字符串肯定就有长度,即然有长度,编译器就可以确定要输出的字符个数,当然也就没有必要去浪费那1字节的空间用以标明字符串的结束了。学过C/C++的人都有一种固定的思维模式,凡是字符串都是以\0结束,其实C++中未必,不信你查查string这个泛型类,为了与C语言兼容性,它里面有一个方法c_str()就是返回以\0结束的字符串。

2017-04-06 17:18:16 2027

原创 程序员面试经典--判断变位词

1.3问题:给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。方法一:import java.util.*;public class sort{ public static void main(String args[]){ String s = new String("abcdaefghijklmnopqrstuvwxzya"); St

2017-04-06 11:49:19 725

转载 Java增强型for循环

For-Each循环  For-Each循环也叫增强型的for循环,或者叫foreach循环。  For-Each循环是JDK5.0的新特性(其他新特性比如泛型、自动装箱等)。  For-Each循环的加入简化了集合的遍历。 其语法如下:  for(type element: array)  {        System.out.p

2017-04-06 10:57:28 384

原创 程序员面试经典--字串

1.2 问题:用C或C++实现void reverse(char* str)函数,即反转一个NULL结尾的字符串。#include/*不分配额外空间解决问题*/void reverse(char *str){ char* end = str; char tmp; if(str){ while(*end){ end++; } end--; while(str<

2017-04-06 10:38:13 393

转载 java中的static总结

1.     静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法   声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法。 · 它们只能访问static数据。 · 它们不能以任何方式引用this 或super。class Simple {    static void go() {

2017-04-06 09:20:41 314

原创 程序员面试经典--巧用散列表

问题1.1:实现一个算法,确定一个字符串的所有字符是否全都不相同。import java.util.*;public class StrArray{ public static void main(String args[]){ StringBuffer s = new StringBuffer("abcdaefghijklmnopqrstuvwxyz"); if(i

2017-04-05 21:40:05 443

转载 最大流问题:增广路径算法的比较

最大流问题:增广路径算法的比较       这篇文章我们将重温最大流问题,实现一些最有名的增广路径算法的实际分析的目标。我们将讨论的这几种算法的复杂度在O(n*m*m)到O(n*mlogU)之间,并且从讨论的结果中得到在实践中最有效的一种。正如我们所想的,理论上的复杂度并不能揭示该算法在实际中的价值。       这篇文章所针对的是熟悉网络流理论的基本知识的读者。如果你对网络流理论

2017-03-26 20:34:13 4956

转载 srand函数

srand函数是随机数发生器的初始化函数。原型:void srand(unsigned seed);用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。如: srand(1); 直接使用1来初始化种子。不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用 time函数来获得系统时间,它的返回值为从 00:00:00 GMT, Ja

2017-03-25 10:10:34 1648

转载 queue容器

一.queue模版类的定义在头文件中。queue与stack模版非常类似,queue模版也需要定义两个模版参数,一个是元素类型,一个是容器类型,元素类型是必要的,容器类型是可选的,默认为dqueue类型。定义queue对象的示例代码如下:queueq1;queueq2;queue的基本操作有:1.入队:如q.push(x):将x元素接到队列的末端;

2017-03-24 22:11:35 399

转载 c++ 容器vector的基本操作

在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);(4)使用下标访问元素,cout(5)使用迭代器访问元素.vectorint>::iterator it;for(it=ve

2017-03-23 19:02:30 1712

转载 C语言里的类型提升

一、类型的提升   把char、unsigned char、short、unsigned short转换成int类型称为类型提升(promotion)。1. 如果short的字节长度小于int的字节长度   char转换成 int   unsigned char转换成 int   short转换成 int   unsigned short转换成 int2. 如果shor

2017-03-23 15:05:02 1376

原创 Longest Substring Without Repeating Characters --leetcode

Given a string, find the length of the longest substring without repeating characters.Examples:Given "abcabcbb", the answer is "abc", which the length is 3.Given "bbbbb", the answer is "

2017-03-17 14:56:46 423

原创 Add Two Numbers --leetcode

You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return i

2017-03-16 22:05:42 352

原创 Two Sum --leetcode

Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the sam

2017-03-15 22:13:13 443

原创 排序算法--快速排序(分治法)

思想快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整

2017-03-15 20:17:42 3026

原创 排序算法--冒泡排序

冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。题目:任意输入10个整型数字,按从小到大的顺序排列。程序见下:

2017-03-15 17:08:19 465

原创 排序算法--选择排序法

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。例题:任意输入10个数字,选择排序后输出。见代码:#include#de

2017-03-15 16:19:34 425

转载 八皇后与回溯法

题目原文:Write an algorithm to print all ways of arranging eight queens on a chess board so that none of them share the same row, column or diagonal.译文:经典的八皇后问题,即在一个8*8的棋盘上放8个皇后,使得这8个皇后无法互

2017-03-14 20:53:56 578

原创 回溯法在排列组合问题中的应用

回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术称为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。 例题:排列组合问题,找出n个自然数(1,2,3,4,。。。n)中取r个数的组合。分析:当n=5,r=3,所有组合为:5 435 425 415 3

2017-03-14 20:15:43 1149

原创 简单迭代法求解方程举例

迭代法是方程及方程组求解的重要方法。关于其原理可另行查询。这里附上一篇简单的迭代法小程序。用于解方程:x+e^x=0#include#include#define fnx(x) -exp(x)void main(){ float x0,x1; x0=0; x1=fnx(x0); while(fabs(x1-x0)>0.00001) { x0=x1; x1=fnx(

2017-03-14 16:05:21 21336

转载 gcc -lm 选项

今天看到书上出现gcc -lm 的选项,甚是不解,在网上查阅了一些资料,访问了一些论坛整理下。初学linux和gcc,C代码调用math.h中的函数有问题,如sqrt函数。若如sqrt(3.0)则可以编译通过并运行正常,若如sqrt(n),这里n是定义好的double型变量,则不能编译通过,错误信息为:undefined reference to 'sqrt'。像 sqrt(3.0); 这

2017-03-14 14:37:50 4011

转载 BigEnd和LittleEnd的故事

在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。 目前在各种体系的计算机中,通常采用big-endian和little-endian两种字节存储机制描述在多字节数中各个字节的存储顺序。

2017-03-14 09:12:17 2704

转载 Linux终端处理和Poll机制

中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务 的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫异常)。单片机中断处理:①分辨中断类型②调用处理函数③清中断Linux系统 : asm_do_IR

2017-03-13 22:04:00 471

转载 Linux程序进程前台后台切换操作

1、在命令末尾加上 & 符号,就可以让程序在后台运行。例如:command & 2、如果程序正在前台运行,可以使用 Ctrl+z 选项把程序暂停,然后用 bg %[number] 命令把这个程序放到后台运行。3、查看所有后台运行的程序:      jobs –l 4、把后台运行的程序调到前台:  fg %[number]5、直接终止后台运行的程序:  kill 

2017-03-13 11:31:22 3482

原创 字符型设备驱动程序开发流程(驱动程序框架+类似裸板编程)

一、驱动程序框架:1、open()static int first_drv_open(struct inode *inode, struct file *file){ return 0;}2、write()static ssize_t first_drv_write(struct file *file, const char __user *buf, size_t count

2017-03-11 22:25:22 735

转载 设备、设备文件和设备驱动

1.设备Linux下的设备通常分为三类,字符设备,块设备和网络设备。见的字符设备有鼠标、键盘、串口、控制台等。常见的块设备有各种硬盘、flash磁盘、RAM磁盘等。在Linux里一个网络设备也可以叫做一个网络接口,如eth0,应用程序是通过Socket而不是设备节点来访问网络设备,在系统里根本就不存在网络设备节点。网络接口没有像字符设备和块设备一样的设备号,只有

2017-03-11 21:57:54 606

转载 常用字符串操作函数

1、字符串copy函数strcpy,实现如下: ?123456789101112#include assert.h>char*mystrcpy(char*dest,constchar *sor)//将源字

2017-03-11 16:01:55 332

转载 volatile

volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 例如: volatile int i=10; int j = i; ... int k = i; 

2017-03-11 09:51:12 291

转载 linux文件操作函数(open、write、read、close)

1. open()函数功能描述:用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。所需头文件:#include ,#include ,#include 函数原型:int open(const char *pathname,int flags,int perms)参数:pathname:被打开的文件名(可包括路径名如"dev/tt

2017-03-10 22:28:54 2792

空空如也

空空如也

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

TA关注的人

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