
剑指offer
CYH_job
这个作者很懒,什么都没留下…
展开
-
求数组中子数组和最大的值
题目:给定一个数组,其中的元素有正数和负数,找到一个子数组,其中的元素的累加和最大,并输出其和的值。 题意:原创 2017-03-27 17:55:19 · 481 阅读 · 0 评论 -
找出数组中超过半数的数
题目:数组中出现次数超过一半的数字 idea: solution1:如果是排序好的数组,则位于数组正中间位置的数字即为要寻找的数字。因此先对数组进行排序,再取出中间位置的数字。该解法需要对数组排序,时间复杂度略高 solution2:利用快排的想法,找到下标是数组中间位置的数字即为输出的数字,并不需要该数据前部分和后半部分的数字按顺序排列。 solution3:利用数组的特性,如果将数组中原创 2017-03-27 16:20:37 · 1598 阅读 · 0 评论 -
复杂链表的复制
题目:实现一个函数复制复杂链表,在复杂链表中,每个节点除了有一个next指针指向下一个节点之外,还有一个sibling指向链表中的任意节点或者NULL。 solution1:先重建有next指针连接的原始链表,再对重建后的链表建立sibling指针的建立。寻找每个节点的slibing指向的节点都是从头节点开始遍历单链表直到找到为止,每个节点的寻找时间复杂度是o(n),因此,该方法的时间复杂度是o原创 2017-03-28 09:14:59 · 444 阅读 · 0 评论 -
字符串的排序
题目:输入一个字符串,打印出字符串的所有排列。 note:1.考虑大数情况 solution:1.将第一个字符和后面的字符(与第一个字符不相同的)依次进行交换;2.然后固定第一个字符,从第二个字符开始往后,后面的部分重复第一步的操作。原创 2017-03-28 14:57:22 · 404 阅读 · 0 评论 -
找出数组中重复的数字(剑指offer51题)
题目:在一个长度为n的数组中,所有数字都在0到n-1的范围内,数组中某些数字是重复的,但是不知道有几个重复的数字,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 solution1:先对数组进行排序,然后遍历有序数组,找重复的数字很容易,但这样的方法复杂度高。 solution2:标志法即哈希表法:新建一个与原数组大小相同的数组B,遍历原始数组,并将B数组中相应位置标志为原创 2017-03-30 14:34:00 · 692 阅读 · 0 评论 -
找链表中环的入口节点
题目:寻找一个存在环的链表中,环的入口节点。 solution1:第一步,先通过构建快慢指针,判断链表中存在环;第二步,计算环中节点的个数;第三步,找到环的入口节点。 solution2:构建快慢指针,判断存在环,当两个指针相遇时,慢指针的位置不变,构建一个新的指针从头开始走,与慢指针同时向前一次移动一位,相遇的位置即环的入口。原创 2017-03-30 17:52:47 · 395 阅读 · 0 评论