自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_41889292的博客

C语言学习心得

  • 博客(131)
  • 收藏
  • 关注

原创 练习题之整数中1出现的次数

题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。代码实现:/*解题思路: 将整数n转成字符串,然...

2018-11-03 17:40:34 254

原创 练习题之连续子数组的最大和

题目:例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)代码实现:/*使用动态规划: F(i):以array[i]为末尾元素的子数组的最大值,子数组的相对位置不变。 F(i)=max(F(i-1)+array[i...

2018-11-03 17:30:08 206

原创 练习题之数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。代码实现:/*解题思路: 1.先给数组进行排序。 2.因为要找出在数组中出现次数超过数组长度一半的数,那么这个数一定在中间。 ...

2018-11-03 17:08:51 220

原创 练习题之从上往下打印二叉树

题目:从上往下打印出二叉树的每个节点,同层结点从左至右打印。代码实现import java.util.ArrayList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) {...

2018-11-03 16:06:12 156

原创 练习题之栈的压入,弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)代码实现import java.util.ArrayList;i...

2018-11-03 15:51:31 163

原创 练习题之包含min函数的栈

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。代码实现:import java.util.Stack;import java.util.Iterator;public class Solution { //定义一个栈 Stack<Integer> stack=new Stack&lt...

2018-11-03 15:25:17 113

原创 练习题之顺时针打印矩阵

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.代码实现:import java.util.ArrayList;public class Solu...

2018-11-03 15:23:38 151

原创 练习题之复杂链表的复制

题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路:方法一:直接通过原来链表来创建链表,包括随机指针。方法二:1.遍历链表,复制每个节点,并将复制的节点插入到原结点之后。2.重新遍历链表,复制...

2018-11-03 14:46:44 104

原创 练习题之二叉树的镜像

题目:操作给定的二叉树,将其变换为源二叉树的镜像。代码实现:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }...

2018-10-26 16:33:37 118

原创 练习题之树的子结构

题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)代码实现:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { t...

2018-10-26 16:33:05 111

原创 练习题之合并两个排序的链表

题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。代码实现:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public cl...

2018-10-26 16:29:59 133

原创 练习题之反转链表

题目:输入一个链表,反转链表后,输出新链表的表头代码实现:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { //通过头插法 ...

2018-10-26 16:29:40 111

原创 练习题之链表中倒数第K个结点

题目:输入一个链表,输出该链表中倒数第k个结点。解题思路:定义两个指针一快一慢,快指针先走k步,然后快慢指针一起走,当快指针走完时返回慢指针指向的结点。代码实现:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.va...

2018-10-26 16:29:11 295

原创 练习题之调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。代码实现:类似于冒泡,前偶后奇就交换。​public class Solution { public void reOrderArray(int [] array) { for(...

2018-10-26 16:28:51 120

原创 练习题之数值的整数次方

题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。分析:浮点数次方注意分三种情况:(1)当次方值为正数(2)当次方为负数时(3)当次方为0通过循环累乘。代码实现:public class Solution { public double num=1.0; public double...

2018-10-26 16:28:23 105

原创 练习题之二叉树的深度

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。代码实现:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int ...

2018-10-26 16:27:52 241

原创 练习题之二进制中1的个数

题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解题思路:整数不为0,至少有一位是1。把整数减1,那么在原来整数最右边的1就会变成0,而0就会变成1。如二进制:1100减1,变成1011,如果在进行与运算就变成1000.那么今个二进制有多少个1就进行多少次与运算。代码实现:public class Solution { public int...

2018-10-20 18:07:13 178

原创 练习题之矩形覆盖

题目:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?解题思路:本题思路跟青蛙跳台阶一样,要么一级要么两级。可以根据下列公式:n = 1时, f(n) = 1;n = 2时, f(n) = 2;n > 2时,f(n) = f(n - 1) + f(n - 2); 代码实现:...

2018-10-20 17:51:11 151

原创 练习题之变态跳台阶

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。解题思路:n阶台阶会有n种的跳法:跳1级,跳2级……跳n级。跳1级,剩下n-1级,则剩下跳法是f(n-1)跳2级,剩下n-2级,则剩下跳法是f(n-2)所以f(n)=f(n-1)+f(n-2)+...+f(1)因为f(n-1)=f(n-2)+f(n-3)+.....

2018-10-20 17:45:53 131

原创 练习题之跳台阶

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 解题思路:本题倾向于找规律,,f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5, 可以总结出f(n) = f(n-1) + f(n-2)的规律。假设有5个台阶,我们可以从第4个台阶一步跳到第5个台阶,也可以从第3个台阶两步跳到第...

2018-10-20 17:35:29 166

原创 练习题之菲波那切数列

题目输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 代码实现:public class Solution { public int Fibonacci(int n) { int f1=1; int f2=1; if(n==0) { return n; ...

2018-10-20 17:29:05 144

原创 练习题之旋转数组的最小数字

题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路:采用二分法解答这个问题,mid = low + (high - low)/2需要考...

2018-10-20 17:23:03 68

原创 练习题之两个栈实现队列

题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路:栈是一种先进后出的数据结构,队列是一种先进先出的数据结构,两个栈实现队列可以先将元素入一个栈stack1,然后出stack1,将出栈元素入栈stack2,然后再出栈stack2,这样就实现了先进先出。代码实现:import java.util.Stack;public ...

2018-10-20 17:13:14 118

原创 练习题之重建二叉树

题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。代码实现:/** * Definition for binary tree * public class TreeNode {...

2018-10-20 17:06:39 142

原创 练习题之从尾到头打印链表

题目: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路:借助栈结构“先进后出”的特点,先将链全部入栈,然后依次出栈,将出栈元素放入到ArrayList数组中。   代码实现:/*** public class ListNode {* int val;* ListNode next = null;**...

2018-10-20 16:48:57 76

原创 练习题之空格替换

题目:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路: 这里因为要将字符串一个空格替换成“%20”,所以可以调用charAt()函数来取得对应下标字符,然后保存到StringBuffer中。代码:public class Solution { ...

2018-10-20 16:42:04 116

原创 Java实现---局域网聊天

聊天室实现是通过C/S架构实现,既要有服务器端,也要有客户端。实现原理: (1)服务器实例化一个 ServerSocket 对象,表示通过服务器上的端口通信。 (2)服务器调用 ServerSocket 类的 accept() 方法,该方法将一直等待,直到客户端连接到服务器上给定的端口。 (3)服务器正在等待时,一个客户端实例化一个 Socket 对象,指定...

2018-09-11 17:50:31 4398

原创 反射与单级VO操作

对于一个Emp类:public class Emp { private String name; private String job; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJob(...

2018-08-10 13:56:14 162

原创 java反射

反射总结框架: 一.反射的认识:  1.反射的核心操作:Objectpublic final native Class<?> getClass(); //返回Class类。 Class反射核心类,描述其他的类结构2.反射的三种实例化方式:a.任意对象.getClass()b.类名.classc.使用Class类提供的静态方法:Class.fo...

2018-08-10 13:34:06 107

原创 java中Lock类的使用

1.使用ReentrantLock类: private Lock ticklock=new ReentrantLock();调用ReentrantLock对象的lock()方法获取锁,调用unlock()方法释放锁。范例:public class MyThread{ private Lock lock=new ReentrantLock(); public...

2018-08-10 11:57:26 3609 4

原创 java新特性之泛型

一、java新特性(JDK1.5)1.可变参数:public [static][final]返回值 方法名称([参数类型 参数名称][参数类型…参数名称]){}如:对于任意参数的整数相加public static int add(int...data) //可变参数,“...”表示一个数组结构{ int result=0; for(int i...

2018-07-28 11:25:47 148

原创 java多线程

                                                                                            多线程结果框架图一.线程与进程1.进程:操作系统中一个程序的执行周期为一个进程2.线程:一个程序同时执行多个任务。通常每个任务就称为一个线程3.线程进程的区别:本质区别在于,每个...

2018-07-25 19:58:38 175

原创 java异常相关知识点

异常体系:所有异常都是由Throwable继承而来。1.Java中的两种异常类型是什么?他们有什么区别?Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。区别:不受检查的异常不需要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面。相反,受检查的异常必须要用...

2018-07-25 17:15:28 549

原创 java方法的引用

1.引用的本质:起个别名2.方法的引用就是别名的使用。方法引用一般结合函数式编程使用。3.引用的类型:引用静态方法:类名称::static方法名称引用某个对象的方法:实例化对象::普通方法引用特定类的方法:类名称::普通方法引用构造方法:类名称::构造方法名称引用静态方法:String类的valueOf()方法interface IMessage<P,Q&...

2018-07-25 16:57:46 185

原创 java之Lambda表达式

1.函数式编程:使用函数式编程接口只有一个方法。@FunctionalInterface //@FunctionalInterface检查接口中方法数量,方法数量为1时才通过编译interface IMessage{ //函数式编程接口,只允许有一个接口方法 public void print(); //接口的方法必须由子类覆写}public ...

2018-07-25 16:42:19 834

原创 java新特性(枚举,注解,接口定义加强)

一.枚举1.枚举表达enum ClassName{}2.枚举的本质:多例设计模式3.枚举产生JKD1.5产生枚举,它只是一种类型的包装:使用enum关键字定义的枚举本质上相当于class定义的类,默认继承java.lang.Enum父类4.枚举中常见的方法取得枚举名字:public final String name()取得枚举序号:public fi...

2018-07-25 16:20:51 487

原创 单例设计模式

1.什么是单例设计模式?一个类只允许产生一个实例化对象,构造方法私有化,类内部提供好了一个实现好的对象且全局唯一。2. 单例模式的特点构造方法私有化,外部无法直接创建实例化对象,只能通过static方法取得实例化对象。3.单例模式的实现:饿汉式单例模式不管是否使用Test类,只要类被加载了,那么会自动创建一个公共的getTest对象。不存在线程安全问题。class ...

2018-07-25 15:52:42 111

原创 ”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。 Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。 java中也不可以覆盖private的方法,因为private修饰的变量和方法...

2018-07-25 15:45:24 1023

原创 类的区别是什么?

 Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。类可以实现很多个接口,但是只能继承一个抽象类类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。抽象类可以在不提供接口方法实现的情况下实现接口。Java接口中声明的变量默认都是final的。抽象类可以包含...

2018-07-25 15:43:24 273

原创 java三大特殊类:String,Object,包装类

一.String类1.String类的两种实例化方式:直接赋值:String str="Holle";    直接赋值并没有开辟新的堆内存空间,是因为String类的设计使用了共享设计模式在JVM底层实际上会自动维护一个对象池(字符串对象池),如果现在采用了直接赋值的模式进行String类的对象实例化操作,那么该实例化对象(字符串内容)将自动保存到这个对象池之中。如果下次继续使用直接赋值的...

2018-07-05 12:44:26 189

空空如也

空空如也

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

TA关注的人

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