加载中
面试题 50:第一个只出现一次的字符

题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 思路 用 Map 保存每个字符出现的次数,...

昨天 22:26
50
垃圾回收算法

四种垃圾回收算法:标记清除算法、标记复制算法、标记整理算法、分代收集算法。 标记清除算法 将需要被回收的对象进行标记,然后回收,缺点是会有很多内存碎片。 标记复制算法 将内存分成两部...

昨天 00:07
100
判断对象是否是垃圾

两种判断算法:引用计数器和可达性分析算法。 引用计数器 给对象加一个引用计数器,每当对象被引用一次,就加 1;当引用失效时,就减 1。如果为 0,则说明就是没有引用,需要被回收。 缺点在...

前天 23:49
37
JVM 的内存布局

JVM 中将内存主要分为这五个部分:方法区、堆、虚拟机栈、本地方法栈、程序计数器。 按照线程是否为共享可分为两类: 线程独享:虚拟方法栈、本地方法栈、程序计数器。 线程共享:方法区、堆...

前天 23:08
36
Java 中创建字符串生成几个对象?

java中String s="abc"及String s=new String("abc")详解 原理1:当使用任何方式来创建一个字符串对象 s=X 时,Java运行时(运行中 JVM )会拿着这个 X 在字符串池中找是否存在内容相同的字符...

前天 18:07
15
面试题 21:调整数组顺序使奇数位于偶数前面

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。...

前天 16:42
87
面试题 24:反转链表

题目描述 输入一个链表,反转链表后,输出新链表的表头。 思路一:递归实现 通过递归的方式,先递归到尾节点,然后再往回。 每次返回的都是已经反转好的链表。 然后再将当前节点的下一节点的...

02/21 22:56
126
面试题 11:旋转数组的最小数字

题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋...

02/20 22:46
64
二分查找法

思路 二分查找法只能应用于有序的数组。 将要查找的元素和数组中间的元素作比较, 如果要查找的元素比数组中间的元素小,那么到左半部分查找; 如果要查找的元素比数组中间的元素大,那么到右...

02/20 21:54
58
面试题 10:斐波那契数列

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 思路 思路一 在数学上,斐波那契数列有如下定义: f(0) = 0 f(1) = 1 f(n)...

02/19 22:49
110
面试题 09:用两个栈实现队列

题目描述 用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。 队列中的元素为 int 类型。 思路 栈的特点是先进后出,队列的特点是先进先出。 这里可以用栈 1 存数,用栈 2 取数。 当存数...

02/19 21:46
67
面试题 06:从尾到头打印链表

题目描述 输入一个链表,按链表值从尾到头的顺序返回一个 ArrayList。 思路 思路一 用栈来保存需要输出的节点值。 直接遍历链表,把遍历到的值放入栈中,因为栈的特点,当遍历到链表尾后,栈...

02/18 22:55
38
面试题05:替换空格

题目描述 请实现一个函数,把字符串中的每个空格替换成“%20”。例如,当字符串为 “We Are Happy.”,则经过替换之后的字符串为 “We%20Are%20Happy.”。 思路 可以通过将字符串长度变长的方...

02/17 23:00
61
面试题04:二维数组中的查找

题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判...

02/17 22:03
66
面试题 03:数组中重复的数字

题目描述 在一个长度为 n 的数字里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如...

02/16 23:07
70
链表

知识点 链表是动态数据结构。 链表的数据存储在”节点“(Node)中。 class Node { E e; Node next; } 当 next 为 NULL,说明当前节点为最后一个节点。 优点:真正的动态,不需要处理固定容量...

02/14 22:40
127
203. Remove Linked List Elements

题目描述 Remove all elements from a linked list of integers that have value val. Example: Input: 1->2->6->3->4->5->6, val = 6 Output: 1->2->3->4->5 203. Remove Linked List Eleme...

02/13 22:51
114
动态数组

知识点 实现属于自己的动态数组类 分析时间复杂度: 增: O(n) 删: O(n) 改: 已知索引O(1);未知索引O(n) 查: 已知索引O(1);未知索引O(n) 主要操作 一些变量定义: data: 数组 size:当前...

02/12 08:47
87
启动线程时,start() 和 run() 的区别是什么?

start() 通过调用 start() 方法来启动一个线程,才真正实现了多线程运行,此时无需等待 run() 方法执行完毕就可以直接往下执行后面的代码。调用 start() 之后等待得到 CPU 时间片来开始执行 ...

02/11 09:20
101
Java 中的线程有几种状态?什么状态是阻塞状态?

Java 中的线程有以下状态: 新建状态(New):新创建的线程,还未执行。 就绪状态(Runnable):执行了 start() 方法,等待运行, 运行状态(Running):就绪状态的线程开始执行程序代码。 ...

02/11 08:49
150

没有更多内容

加载失败,请刷新页面

返回顶部
顶部