
在线编程
Mrzhoug
这个作者很懒,什么都没留下…
展开
-
在线编程--回文链表
题目描述请编写一个函数,检查链表是否为回文。 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。 测试样例: {1,2,3,2,1} 返回:true {1,2,3,2,3} 返回:falseimport java.util.*;/*public class ListNode { int val; ListNode next = nul原创 2016-04-25 13:12:25 · 434 阅读 · 0 评论 -
在线编程--链表中倒数第k个结点
题目描述输入一个链表,输出该链表中倒数第k个结点。/*public class ListNode { int val; ListNode next = null; }} ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode Fi原创 2016-04-15 16:25:51 · 698 阅读 · 0 评论 -
在线编程--反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/import java.util.Stack;public class Solution {原创 2016-04-15 16:56:41 · 303 阅读 · 0 评论 -
在线编程--从尾到头打印链表
题目描述输入一个链表,从尾到头打印链表每个节点的值。 输入描述: 输入为链表的表头输出描述: 输出为需要打印的“新链表”的表头/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val原创 2016-04-15 17:15:16 · 325 阅读 · 0 评论 -
在线编程--层次打印二叉树
题目信息: 有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。 给定二叉树的根结点root,请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。import java.util.*;/*public class TreeNode { int val = 0; TreeNode lef原创 2016-05-13 08:31:30 · 1231 阅读 · 0 评论 -
在线编程--约瑟夫问题I
题目描述约瑟夫问题是一个非常著名的趣题,即由n个人坐成一圈,按顺时针由1开始给他们编号。然后由第一个人开始报数,数到m的人出局。现在需要求的是最后一个出局的人的编号。 给定两个int n和m,代表游戏的人数。请返回最后一个出局的人的编号。保证n和m小于等于1000。 测试样例: 5 3 返回:4import java.util.*;public class Joseph { publ原创 2016-05-06 15:28:07 · 1022 阅读 · 0 评论 -
在线编程--约瑟夫问题II
题目描述约瑟夫问题是一个著名的趣题。这里我们稍稍修改一下规则。有n个人站成一列。并从头到尾给他们编号,第一个人编号为1。然后从头开始报数,第一轮依次报1,2,1,2…然后报到2的人出局。接着第二轮再从上一轮最后一个报数的人开始依次报1,2,3,1,2,3…报到2,3的人出局。以此类推直到剩下以后一个人。现在需要求的即是这个人的编号。 给定一个int n,代表游戏的人数。请返回最后一个人的编号 测原创 2016-05-06 19:12:44 · 1117 阅读 · 0 评论 -
在线编程--小范围排序
小范围排序是指一个几乎有序的数组,个别元素需要进行调整,但调整的幅度不超过k,k相对于整个数组很小。 思想:可以使用插入排序,时间复杂度不超过O(N*k) 最好方法是使用堆排序,建立一个k大小的堆,对数组依次进行排序。题目: 已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。原创 2016-05-17 20:36:13 · 560 阅读 · 0 评论 -
在线编程--相同子树问题
对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。 给定两棵二叉树的头结点A和B,请返回一个bool值,代表A中是否存在一棵同构于B的子树。本题可以从根节点一个一个进行比较,但时间复杂度为O(M*N); 选择用数组进行判断,先把两个树用相同方式序列化,如果StrA包含StrB,则B树是A树的子树。public static boolean ch原创 2016-05-18 10:44:06 · 1217 阅读 · 0 评论 -
在线编程--集合栈
题目描述请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。 给定一个操作序列int[][2] ope(C++为vectorimport java.util.*;public class SetOfStacks { public ArrayList<ArrayList<Inte原创 2016-04-15 15:59:40 · 395 阅读 · 0 评论 -
在线编程--栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。import java.util.ArrayList;import java.util.*;public class Solut原创 2016-04-15 15:58:38 · 470 阅读 · 0 评论 -
在线编程--输出单向链表中倒数第k个结点
题目描述输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针。 链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 详细描述: 接口说明 原型: ListNode* FindKthToTail(ListNode* pListHead, unsig原创 2016-04-26 19:54:15 · 489 阅读 · 0 评论 -
在线编程--树转链表
题目描述有一个类似结点的数据结构TreeNode,包含了val属性和指向其它结点的指针。其可以用来表示二叉查找树(其中left指针表示左儿子,right指针表示右儿子)。请编写一个方法,将二叉查找树转换为一个链表,其中二叉查找树的数据结构用TreeNode实现,链表的数据结构用ListNode实现。 给定二叉查找树的根结点指针root,请返回转换成的链表的头指针。import java.util.原创 2016-04-25 14:17:41 · 708 阅读 · 0 评论 -
在线编程--链表分割
题目描述编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。import java.util.*;/*public class ListNode { int val; ListNode next = null; L原创 2016-04-25 14:54:45 · 368 阅读 · 0 评论 -
在线编程--生成窗口最大值数组
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2原创 2016-04-04 17:11:32 · 1080 阅读 · 0 评论 -
在线编程--汉诺塔问题
题目描述对于传统的汉诺塔游戏我们做一个拓展,我们有从大到小放置的n个圆盘,开始时所有圆盘都放在左边的柱子上,按照汉诺塔游戏的要求我们要把所有的圆盘都移到右边的柱子上,请实现一个函数打印最优移动轨迹。 给定一个int n,表示有n个圆盘。请返回一个string数组,其中的元素依次为每次移动的描述。描述格式为: move from [left/mid/right] to [left/mid/right原创 2016-04-03 16:39:44 · 1172 阅读 · 0 评论 -
在线编程--双栈排序
题目描述请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。 给定一个int[] numbers(C++中为vector<int>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。 测试样例: [1,2,3,4,5] 返回:[5,4,3,2,1]impor原创 2016-04-03 15:07:45 · 348 阅读 · 0 评论 -
在线编程--用递归函数和栈操作逆序栈
题目描述一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现了栈中元素的逆序,请设计一个算法实现逆序栈的操作,但是只能用递归函数来实现,而不能用另外的数据结构。 给定一个栈Stack以及栈的大小top,请返回逆序后的栈。 测试样例: [1,2,3,4,5],5 返回:[5,4,3,2,1]import java原创 2016-04-03 14:19:49 · 347 阅读 · 0 评论 -
在线编程--用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); publi原创 2016-04-03 14:17:31 · 326 阅读 · 0 评论 -
在线编程--包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。import java.util.Stack;public class Solution { private Stack<Integer> stackDate; private Stack<Integer> stackMin; public Solution(){ this.stackD原创 2016-04-03 14:15:52 · 400 阅读 · 0 评论 -
在线编程--全排列
import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;//全排列 使用回溯法public class Main{ public static void main(String[] strs) { String str="abc"; Array原创 2016-10-09 10:43:13 · 1269 阅读 · 0 评论