
算法面试题
carlZzzzzzz
这个作者很懒,什么都没留下…
展开
-
剑指offer 面试题7:重建二叉树代码 java
public class BinaryTreeTest { static class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int val) { this.val = val; } } ...原创 2019-05-09 14:49:39 · 212 阅读 · 0 评论 -
剑指offer 面试题18:删除链表的节点 时间复杂度O(1) java
提示实现时间复杂度O(1),比如我们要删除节点i,先把i节点的下一个节点j的内容复制到i,然后把i的指针指向节点j的下一个节点。此时再删除节点j。 要注意删除节点的位子: 1、是否是尾节点,不是尾节点则执行上面的思想完成删除 2、如果链表只有一个节点,那么直接置空头尾节点 3、如果是尾节点只能遍历全部O(n)的时间复杂度获取到删除的前一个节点 注意,java在置空的时候只能通过...原创 2019-05-13 15:28:57 · 727 阅读 · 0 评论 -
剑指offer 面试题17:打印从1到最大的n位数 java
题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数999。提示:该题没有明确n的大小,所以有可能是最大值,那么应该考虑最大值的越界问题,所以应该用字符串来表示最大值。 另外,打印的值应该符合正常的阅读习惯,0开头的数字不应该打印出来。两种解法,代码如下:public class Print1ToMax { publi...原创 2019-05-13 11:50:17 · 304 阅读 · 0 评论 -
剑指offer 面试题25:合并链表
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。如:链表1:1->3->5->7链表2:2->4->6->8合并后:1->2->3->4->5->6->7->8比较头结点大小即可public static ListNode merge(ListNode head1,...原创 2019-05-24 15:06:01 · 187 阅读 · 0 评论 -
剑指offer 面试题24:反转链表
public class ReverseLinkedList { private static ListNode reverseLinkedList(ListNode pHead) { ListNode pre = null; ListNode cur = pHead; ListNode pReverseHead = null; ...原创 2019-05-24 15:05:36 · 177 阅读 · 0 评论 -
剑指offer 面试题23:链表中环的入口节点
题目在一个包含环的链表中,找出入口节点步骤1、用两个指针分别一快一慢移动,当两个节点都不为空且快的节点等于慢的节点时,那么该链表中有环 2、当找到相遇的节点时,那么该节点必定在环中,此时记录该节点、开始计数,当下一次节点回到该节点时,环循环结束,计数的count值即为环的节点数。 3、从头节点开始,让节点1先移动count个位子后,节点2=headNode与节点1开始一起移动,当节...原创 2019-05-24 15:05:05 · 300 阅读 · 0 评论 -
剑指offer 面试题20:表示数值的字符串 java
题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串“+100”、“5e2”、“-123”、“3.1416”及“-1E-16”都表示数值,但“12e”、“1a3.14”、“1.2.3”、“+-5”及“12e+5.4”都不是。public class IsNumeric { public static void main(String args[]) { ...原创 2019-05-15 16:21:30 · 312 阅读 · 0 评论 -
剑指offer 面试题19:正则表达式匹配 java
题目请实现一个函数用来匹配包含'.'和''的正则表达式。字符'.'表示任意一个字符,而''表示它前面的字符可以出现任意次(包含0次)public class MatchDemo { public static void main(String args[]) { String str = "aaa"; String pattern = "a.*."...原创 2019-05-15 16:19:34 · 243 阅读 · 0 评论 -
剑指offer 面试题16:数值的整数次方 java
Github 源码地址题目:实现函数double power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。public class Power { public static void main(String args[]) { System.out.println(power(...原创 2019-05-10 14:32:39 · 222 阅读 · 0 评论 -
剑指offer 面试题15:二进制中1的个数 java
Github 源码地址题目:请实现一个函数,输入一个整数,输出改数二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1.因此,如果输入9,则该函数输出2。public class NumberOf1 { public static void main(String args[]) { System.out.println(numberOf2(11))...原创 2019-05-10 11:33:54 · 196 阅读 · 0 评论 -
剑指offer 面试题14:剪绳子 java
Github 源码地址题目:给你一根长度为n的绳子,请把绳子剪成m段,记每段绳子长度为k[0],k[1]...k[m-1],求k[0]k[1]...k[m-1]的最大值。已知绳子长度n为整数,m>1(至少要剪一刀,不能不剪),k[0],k[1]...k[m-1]均要求为整数。例如,绳子长度为8时,把它剪成3-3-2,得到最大乘积18;绳子长度为3时,把它剪成2-1,得到最大...原创 2019-05-10 11:25:47 · 305 阅读 · 0 评论 -
剑指offer 面试题12:回溯法,矩阵中的路径 面试题13:机器人的运动范围 java
Github 源码地址 题:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为...原创 2019-05-10 11:25:11 · 335 阅读 · 0 评论 -
剑指offer 面试题11:旋转数组的最小值 (二分查找)java
Github 源码地址通过二分查找且满足最终左右指针之差为1,相邻的情况下结束循环右边的值则为最小值public class RotateArray { public static void main(String args[]) { int[] arr = {3, 5, 6, 1, 2}; int num = getMinFromRotate...原创 2019-05-10 11:24:44 · 349 阅读 · 0 评论 -
剑指offer 面试题10:斐波那契数列 java
Github 源码地址已知条件:f(n) = { 0 n = 0 1 n = 1 f(n-1)+f(n-2) n > 1}求f(n)的值。private static int fibonacci(int n) { if (n < 2) { ...原创 2019-05-10 11:24:16 · 471 阅读 · 1 评论 -
剑指offer 面试题8:二叉树的下一个节点(中序遍历)java
Github 源码地址public class BinaryTreeGetNext { public static void main(String args[]) { getNext(new BinaryTreeNode(3)); } private static BinaryTreeNode getNext(BinaryTreeNode tre...原创 2019-05-10 11:23:44 · 340 阅读 · 0 评论 -
剑指offer 面试题22:查找链表中倒数第k个节点
题目:输入一个链表,输出该链表中倒数第k个节点提示可以用2个下标,第一个节点A先移动k-1个下标,此时2个节点A、B同时向尾节点移动,当A到达尾节点时,B则是该链表的倒数第k个节点public class FindKTotail { public static class ListNode { ListNode next = null; i...原创 2019-05-23 21:37:57 · 451 阅读 · 0 评论