剑指offer
若轩萧风
这个作者很懒,什么都没留下…
展开
-
剑指offer面试题3-数组中重复的数字 java
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。 public class duplicate { //查找数组中重复的数字,加一个数组空间,判断原创 2017-06-06 11:56:43 · 1141 阅读 · 0 评论 -
剑指offer面试题4 - 二维数组的查找 java
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。从二维数组的左下角查找开始 public class find { //二维数组的查找从左下角开始查 public static boolean find(int[][] array,int target)原创 2017-06-06 16:53:13 · 345 阅读 · 0 评论 -
剑指offer面试题5-替换空格-java
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy”,则输出”We%20are%20happy”. 原因:在网络编程中,如果URL参数中含有特殊字符,如:空格、“#”等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器识别的字符。转换规则是在“%”后面跟上ASCII码的两位十六进制的表。比如:空格的ASCII玛是32,即十六进制的原创 2017-06-07 14:43:05 · 499 阅读 · 0 评论 -
剑指offer面试题6-从尾到头打印链表-java
输入一个链表,从尾到头打印链表每个节点的值 class ListNode{ int val; ListNode next = null; public ListNode(int val){ this.val = val; } } public class printListReverse { //从尾到头打印链表 public原创 2017-06-07 14:46:08 · 215 阅读 · 0 评论 -
剑指offer面试题18:删除链表的节点-java
题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。由于给定的是单向链表,正常删除链表的时间复杂度是查找链表的时间复杂度即O(n),如果要求在O(1)时间复杂度内删除节点,通过遍历链表找到该节点的上一节点和下一节点的方法是行不通了。所以实现的思路是,根据给定的要删除的节点,可以直接找到其后年的节点,把后面的节点的内容复制到当前节点处,同时将当前节点指向其后面节点的后面节点原创 2017-06-23 09:30:24 · 301 阅读 · 0 评论 -
剑指offer面试题18:删除链表中重复的节点-java
题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路:用递归删除,遇到相同的往后走,返回第一个不相同的节点public class DeleteDuplication { public ListNode deleteDuplication(ListNode原创 2017-06-23 10:18:05 · 434 阅读 · 0 评论 -
剑指offer面试题22:链表的倒数第k个节点 java
题目描述 输入一个链表,输出该链表中倒数第k个结点。思路 双指针法,一个指针先往前走k-1步,然后另外一个指针才开始走,当第一个指针走到尾部了,那么第二个指针正好指向了倒数第k个结点public class FindKthToTail { //输出该链表中倒数第k个结点 public static ListNode findKthToTail(ListNode head,int原创 2017-06-23 11:01:31 · 272 阅读 · 0 评论 -
剑指offer面试题24:反转链表-java
题目:定义一个方法 输入一个链表的头节点,反转该链表并输出反转后链表的头节点 为了正确反转一个链表,需要调整链表每个节点对下一个节点的指向。 思路: (1)把当前节点的下一个节点保存起来 当前节点的next指向它前一个节点之前要把它的后一个节点保存起来。因为后一个节点只能通过当前节点的next找到,如果不提前保存起来,当前节点的next指向它的前一个节点后,它后面的节点将失去原创 2017-06-23 11:23:16 · 275 阅读 · 0 评论 -
剑指offer面试题25:合并两个排序的链表-java
题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入图中的链表1和链表2,则合并之后的升序链表3所示。 这是一个经常被各公司采用的面试题。在面试过程中,我们发现应聘者最容易犯两个错误:一是在写代码之前没有对合并的过程想清楚,最终合并出来的链表要么中间断开要么并没有递增排序;二是代码的鲁棒性方面存在问题,程序一旦有特殊的输入(如空链表)就会崩溃。接下来分析如何原创 2017-06-23 11:37:25 · 366 阅读 · 0 评论