剑指offer
独家雨天
数据热衷者,追求进步。分析大数据,提供决策支持。团队合作,沟通精通。
展开
-
在O(1)的时间内删除结点
剑指Offer_13: 在O(1)O(1)O(1)的时间内删除结点2018/05/14 星期一 题目: 给定单项链表的头指针和一个结点指针,定义一个函数在O(1)O(1)O(1)的时间删除该结点。链表结点和函数的定义如下: class ListNode { int data; ListNode nextNode;}public void del...翻译 2018-05-20 21:49:04 · 215 阅读 · 0 评论 -
Java实现字符串的排序与组合-详细分析实现过程
剑指Offer_24 字符串的排序2018/6/19 星期二题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。牛客网代码编写框架:...原创 2018-06-19 01:27:38 · 2957 阅读 · 0 评论 -
Main22 栈的压入、弹出序列
剑指Offer_22 栈的压入、弹出序列2018/6/8 星期五 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈中的所有数字均不相等。例如,序列1,2,3,4,5为某栈的压栈序列,序列,4,5,3,2,1就是该压栈对应的一个弹出序列,但是4,3,5,1,2就不可能是该压栈的序列的弹出序列。一开始接触到这题,以为,压栈和出栈...翻译 2018-06-08 23:14:09 · 194 阅读 · 0 评论 -
包含min函数的栈
剑指Offer_21 包含min函数的栈2018/5/22 星期二 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,pop和push的时间复杂度都是O(1)。分析:我们这里设置一个辅助栈,记录下每次压栈之后,栈中数据元素最小的元素。如下表中所示。 步骤 操作 数据栈 辅助栈 最小值 1...翻译 2018-05-22 23:07:42 · 124 阅读 · 1 评论 -
顺时针打印指针
剑指Offer_20 顺时针打印指针2018/5/22 星期二 题目: 输入一个矩阵,按照从外到里顺时针的顺序打印出每一个数字。例如:输入如下矩阵 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...翻译 2018-05-22 23:04:40 · 266 阅读 · 0 评论 -
二叉树的镜像
剑指Offer_19 二叉树的镜像2018/5/21 星期一 题目: 请完成一个函数,输入二叉树,该函数输出它的镜像。二叉树的结点定义: class BinaryTreeNode { int data; BinaryTreeNode leftNode; BinaryTreeNode rightNode;}例如:下面图片的)分析:上图中,...翻译 2018-05-21 20:05:29 · 101 阅读 · 0 评论 -
树的子结构
剑指Offer_18 树的子结构2018/5/21 星期一 题目:输入两颗二叉树A和B,判断B是不是A的子结构。二叉树的定义如下: class BinaryTreeNode { int data; BinaryTreeNode leftNode; BinaryTreeNode rightNode;}例如:下图中的两棵树,由于A中有一部分子树...翻译 2018-05-21 20:02:09 · 108 阅读 · 0 评论 -
合并两个排序后的链表
剑指Offer_17 合并两个排序后的链表2018/5/21 星期一 题目:输入两个递增排序的链表,合并这两个链表,并使新链表中结点仍然是按照递增的顺序排序的。例如,输入链表1,{1,3,5,7}和链表2:{2,4,6,8} 那么合并后的链表为:{1,2,3,4,5,6,7,8}。分析:在写代码前考虑两个问题。一、合并过程是怎样的;二、存在哪些特殊的输入情况。注:(a...翻译 2018-05-21 19:59:54 · 122 阅读 · 0 评论 -
反转链表
剑指Offer_16 反转链表2018/5/21 星期一 题目:定义一个函数,输入一个链表的头结点,反转该链表并且输出反转后链表的头结点。链表结点定义如下: class ListNode { int data; ListNode nextNode;}分析:在图(a)所在的链表中,h,i,j是3个相邻的结点。假设经过若干个操作后,h结点前面的...翻译 2018-05-21 19:57:01 · 111 阅读 · 0 评论 -
链表中倒数的第K个节点
剑指Offer_15 链表中倒数的第K个节点2018/5/21 星期一代码的鲁棒性鲁棒性对于软件开发的重要性不言而喻,提高代码的鲁棒性的有效途径就是进行防御性编程。这是一种习惯,提高在何处遇见有什么地方可能会出现问题,并为这些问题制定处理方式。比如:当出现找不到文件名时,提醒用户检查输入路径和文件名,当服务器连接不上时,我们可以试图连接备用服务器等。 题目:输入一个链表,输...翻译 2018-05-21 19:53:04 · 246 阅读 · 0 评论 -
调整数顺序使奇数位于偶数前面
剑指offer_14 调整数顺序使奇数位于偶数前面2018/05/14 星期一 题目:输入一个整数数组,实现一个函数用来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。思考三分钟。。。一个简单的思路就是,顺序遍历数组,当我们碰到偶数的时候,就将该偶数后面的所有数字往前移一位,然后将该偶数放到数组移动后末尾挪出来的位置之中。整个时间...翻译 2018-05-20 21:56:20 · 199 阅读 · 0 评论 -
快速找出数组中出现次数超过一半的数字
“只要不是特别大的内存开销,时间复杂度比较重要。因为改进时间复杂度对算法的要求更高。” ——吴斌(NVidia,Graphics Architect)同样是查找,如果是顺序查找需要O(n)的时间;如果输入的是排序的数组则只需要O(logn)的时间;如果事先已经构造好了哈希表,那查找在O(1)时间就能完成。我们只有对常见的数据结构和算法都了然于胸,才能在需要的时候选择合适的数据结构...原创 2018-07-09 22:04:45 · 26548 阅读 · 12 评论