
leedcode
Darlin_F
这个作者很懒,什么都没留下…
展开
-
从尾到头打印列表——牛客剑指offer
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。解题思路思路1:顺序遍历链表,取出每个结点的数据,插入list中。由于要求list倒序存储链表中的数据,而我们是顺序取数据,所以采用了‘头插’的方式,每次将顺序取出的数据存在list表头,即add(0,data)。思路2:顺序遍历链表,取出每个结点的数据,压入栈中;遍历结束后,将元素顺序出栈并添加...原创 2018-07-19 13:07:28 · 207 阅读 · 0 评论 -
数串——牛客刷题
题目描述:设有n个正整数,将他们连接成一排,组成一个最大的多位整数。如:n=3时,3个整数13,312,343,连成的最大整数为34331213。如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。题目分析:首先,我们将输入的数字转成字符串存入数组,方便下一步对字符串进行拼接比较大小。其次,我们通过冒泡排序(或者其他排序)将数组中的元素从大到小排序。任意...原创 2018-07-22 12:07:00 · 273 阅读 · 0 评论 -
链表分割——牛客剑指offer
题目描述:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。题目分析:将链表分割为两部分,以x值为分割线(x不一定存在于链表中):前部分链表结点的值是小于x的,而且这一部分各结点的顺序与在原链表中的相对顺序相同。后部分链表结...原创 2018-07-20 20:15:52 · 227 阅读 · 0 评论 -
合并两个排序链表——牛客offer
题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路:1、一般看到合并这类的题目就会很自然的想到创建一个新的链表,然后将两个链表根据一定的规则加入到新链表中。所以这里提出第一个比较容易理解的思路:首先,创建一个新链表。然后,同时遍历两个链表的元素并比较大小,将小的元素首先插入到新链表中,并将小元素的遍历指针后移,大元素的遍历...原创 2018-07-20 18:18:51 · 192 阅读 · 0 评论 -
复杂链表的复制——牛客offer
题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)数据结构:public class RandomListNode { int label; ...原创 2018-07-20 01:13:44 · 226 阅读 · 0 评论 -
两个链表的第一个公共结点——牛客offer
题目描述:输入两个链表,找出它们的第一个公共结点。题目分析:只是数据域相同不是公共节点。公共结点代表该节点在两个链表中的数据域和指针域都是相同的,这意味着从该公共节点开始,后面的结点都是两个链表共有的,如图:解题思路:思路1:从正序比较的角度来考虑:观察上图,链表1长度大于链表2,那么公共结点绝不可能存在于链表1比链表2多出来的那些结点中。基于这种想法,我们可以先求出两...原创 2018-07-19 20:18:22 · 313 阅读 · 1 评论 -
输出单项链表中倒数第k个结点——牛客刷题
题目描述:输入一个单向链表,输出该链表中倒数第k个结点输入、输出描述:输入说明:1、链表结点个数 2、链表结点的值3、输入k的值输出说明:第k个结点指针题目分析:假设链表长度为n,倒数第k个结点=正序第n-k+1个结点,所以题目的实质可以看作是链表的遍历。首先输入链表结点个数n与各个结点取值构建链表并返回链表的头指针;其次,输入k,调用链表遍历函数,找到第n-k+1...原创 2018-07-19 18:03:50 · 421 阅读 · 3 评论 -
链表的回文结构——牛客刷题
题目描述:对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。题目分析:首先了解一下回文序列:如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列,比如{1,2,3,3,2,1} {1,2,1}等。这个题目我是直接根据提示...原创 2018-07-19 16:49:59 · 340 阅读 · 0 评论 -
链表中环的入口结点——牛客剑指offer
题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。题目分析:从上图中可以看出,环的入口结点和其他结点的区别:环的入口结点是有两个指针指向的,其他结点除了头结点都是只有一个指针指向的,使用断链法,在当前结点访问完毕后,断掉指向当前结点的指针。因此,最后一个被访问的结点一定是入口结点。代码实现:/*public class List...原创 2018-07-19 14:39:14 · 213 阅读 · 0 评论 -
删除链表中重复的结点——牛客剑指offer
题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题思路:首先初始化一个起始指针preNode指向头结点、工作指针walkNode指向链表的第一个元素,即preNode.next=walkNode。迭代...原创 2018-07-19 13:26:31 · 203 阅读 · 0 评论 -
二维数组中的查找——牛客剑指offer
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。输入参数:target(查找值) array(二维数组)解题思路:1、python代码python实现比较简单,使用for in循环取出数组的每行i,然后使用in操作符判断tar...原创 2018-07-19 13:04:08 · 211 阅读 · 0 评论 -
句子反转——牛客刷题(java)
题目描述:给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”解题思路:假设这条句子有n个单词:句子反转实质,将第1个元素与最后1个元素交换,第2个元素与倒数第2个元素交换····················第n/2-1个元素与倒数...原创 2018-07-22 21:48:57 · 280 阅读 · 0 评论