【试题描述】输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。
求所有子数组的和的最大值。要求时间复杂度O(n)。
【试题来源】未知
【参考代码】
1 | int findGreastestSumOfSubArray(int array[], int n) { |
【试题描述】输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。
求所有子数组的和的最大值。要求时间复杂度O(n)。
【试题来源】未知
【参考代码】
1 | int findGreastestSumOfSubArray(int array[], int n) { |
【试题描述】输入一个整数数组,判断该数组是不是某二叉排序树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字互不相同。
【试题来源】未知
【参考代码】
1 | #include <iostream> |
【试题描述】完成一个函数,输入一个二叉树输出它的镜像。
【试题来源】未知
【参考代码】
1 | #include <iostream> |
【试题描述】从上往下打印二叉树
【试题来源】未知
【参考代码】
1 | void printBinaryTree(const BinaryTreeNode* rootNode) { |
【试题描述】定义的数据结构,请在类型中实现一个能够得到栈的最小元素的函数。 在该栈中,调用min、push、pop的时间复杂度都是O(1)。
【试题来源】未知
【参考代码】
1 | #include <iostream> |
【试题描述】合并两个递增排序的链表,合并这两个链表使得新链表的节点也是按递增的顺序拍列的。
【试题来源】未知
【参考代码】
1 | #include <iostream> |
【试题描述】输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出序列。
【试题来源】未知
【参考代码】
1 | #include <iostream> |
【试题描述】定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点
【试题来源】未知
【参考代码】
1 | #include <iostream> |
【试题描述】给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。
【试题来源】 未知
【试题分析】按照常规删除链表节点的方法没有办法在O(1)复杂度内完成,因此需要转换思路,将后面一个节点的内容复制过来,然后删除其后面的那个节点,以达到删除节点的目的。
【参考代码】
1 | struct ListNode |
【试题描述】 输入一个整数数组,实现一个函数来调整该数组中数字的顺序。使得所有奇数位于数组的前半部分,所有偶数位于数组后半部分。
【试题来源】未知
【参考代码】
1 | #include <iostream> |