随笔分类 -  牛客网-在线编程题

摘要:题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 我的想法 这道题比较容易想到的都是排序,排序后只要将数字拼接成一个字符串就可以了。下面是两个版本的代码,一个是自己实 阅读全文
posted @ 2018-05-12 13:17 _weirdly 阅读(290) 评论(0) 推荐(0)
摘要:题目 求出 1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1 ~ 13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数 阅读全文
posted @ 2018-05-12 11:19 _weirdly 阅读(575) 评论(0) 推荐(0)
摘要:题目 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 我的想法 这道题如果直接解的话,是没有什么难度。可以采用一个map来存每个数字出现 阅读全文
posted @ 2018-05-06 13:32 _weirdly 阅读(142) 评论(0) 推荐(0)
摘要:题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。(输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。) 对字符串所有字符的全排列,只要注意一下重复的 阅读全文
posted @ 2018-05-06 13:20 _weirdly 阅读(119) 评论(0) 推荐(0)
摘要:题目 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 我的思路 一开始并没有理解题目中,不能创建任何新节点的意思,还以为是不能定义任何变量呢,后面看了评论才知道原来是不能使用new来创建节点。总的来说,用中序遍历可以较容易的解决这个 阅读全文
posted @ 2018-05-03 09:30 _weirdly 阅读(2134) 评论(0) 推荐(0)
摘要:题目 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 我的思路 一开始我是没有什么思路的,唯一能想到的就是先将所有的节点复制下来,然 阅读全文
posted @ 2018-05-03 09:14 _weirdly 阅读(73) 评论(0) 推荐(0)
摘要:题目:输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 阅读全文
posted @ 2018-04-22 20:22 _weirdly 阅读(120) 评论(0) 推荐(0)
摘要:题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路挺清晰的,但是不知道为什么,提交了好几次都只能通过部分用例,最后修修改改才通过的。总感觉我的这个做法不太好。 首先,后序遍历的最后一个元素是树的根节点 阅读全文
posted @ 2018-04-21 21:50 _weirdly 阅读(120) 评论(0) 推荐(0)
摘要:题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 给定的树节点结构: 二叉树的层次遍历,借助一个队列来实现。 代码如下: 阅读全文
posted @ 2018-04-21 21:33 _weirdly 阅读(91) 评论(0) 推荐(0)
摘要:题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等 阅读全文
posted @ 2018-04-20 20:21 _weirdly 阅读(88) 评论(0) 推荐(0)
摘要:题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 由于在给定的代码中有 import java.util.Stack; 所以就直接用Stack来实现。这里使用了两个栈,一个(stack)用来保存所有push进来的元素,另一个(minStack)用来保存按照push的顺序的 阅读全文
posted @ 2018-04-20 18:20 _weirdly 阅读(102) 评论(0) 推荐(0)
摘要:题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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,7,11,10。 我的想法是:每当将一行的所有元素 阅读全文
posted @ 2018-04-20 18:08 _weirdly 阅读(228) 评论(0) 推荐(0)
摘要:题目:操作给定的二叉树,将其变换为源二叉树的镜像。 给定的树节点结构: 我的想法:从根节点开始,所有节点的左右子树交换。 代码如下: 阅读全文
posted @ 2018-04-19 19:57 _weirdly 阅读(83) 评论(0) 推荐(0)
摘要:题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 给定的树节点结构: 一开始想在一个方法里面递归,看能不能得出结果,试了几次都失败了。最后只能将判断是否为子树的方法单独提出来,分成两个方法,一个寻找根节点,另一个由这个根节点root1开始,判断root 阅读全文
posted @ 2018-04-19 19:33 _weirdly 阅读(109) 评论(0) 推荐(0)
摘要:题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 给定的结点结构: 我的想法是:先随便定义一个结点作为开始结点,初始状态:current和head都指向开始结点。比较list1和list2当前的值,较小的那个作为current的next结点,同时向后 阅读全文
posted @ 2018-04-18 20:56 _weirdly 阅读(184) 评论(0) 推荐(0)
摘要:题目:输入一个链表,反转链表。 给定的结点结构: 我的想法是:用三个结点first,head,second分别来表示前一个结点,当前结点,和后一个结点。三个结点的初始状态:first为null,head为第一个结点,second为第二个结点,三个结点同步移动,每移动一次,便将head的next由原来 阅读全文
posted @ 2018-04-18 20:20 _weirdly 阅读(114) 评论(0) 推荐(0)
摘要:题目:输入一个链表,输出该链表中倒数第k个结点。 给定的链表节点: 一开始我的想法是,先定义一个长度为k的ListNode数组,然后遍历一遍链表的所有节点,并把每个节点循环存到这个数组里面。“循环存”就是当数组存满的时候,返回到数组第0个位置开始覆盖存储,最后从倒数第一个逆推到倒数第k个。 代码如下 阅读全文
posted @ 2018-04-18 19:46 _weirdly 阅读(105) 评论(0) 推荐(0)
摘要:题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 因为这道题目给定的方法没有返回值,也就是说我们最后要改变原数组,所以我考虑直接在原数组上面操作。 我的想法大致是这样的: 阅读全文
posted @ 2018-04-18 17:42 _weirdly 阅读(129) 评论(0) 推荐(0)