随笔分类 -  剑指Offer

摘要:题目: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的 阅读全文
posted @ 2017-08-21 18:54 Sindyang 阅读(179) 评论(0) 推荐(0)
摘要:题目: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 思路1: 若一个整型数组中只有一个数字出现了一次,其他数字都出现了两次,则可以通过异或的方法得到该数字。而在该题目中,有两个数字只出现一次,若可以把这个数组分成2个子数组,两个数字分别位于2个子数组 阅读全文
posted @ 2017-08-20 17:49 Sindyang 阅读(164) 评论(0) 推荐(0)
摘要:题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相 阅读全文
posted @ 2017-08-18 21:02 Sindyang 阅读(108) 评论(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 @ 2017-08-18 18:53 Sindyang 阅读(151) 评论(0) 推荐(0)
摘要:题目: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路1: 为方便操作,首先为链表加入一个头节点。基本思路为有3个指针,分别为pre,current,nextnode, 阅读全文
posted @ 2017-08-18 16:18 Sindyang 阅读(147) 评论(0) 推荐(0)
摘要:题目: 输入一个链表,输出该链表中倒数第k个结点。 思路1: 代码1: 1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 };*/ 阅读全文
posted @ 2017-08-18 09:06 Sindyang 阅读(98) 评论(0) 推荐(0)
摘要:题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路: 1.判断两个链表是否为空,若其中一个链表为空,则直接返回另一个链表。 2.新建一个节点作为合并后的链表头部,最后返回时需要返回该头部的下一个节点。 3.当两个链表均不为空时,按照数字大小 阅读全文
posted @ 2017-08-17 15:00 Sindyang 阅读(110) 评论(0) 推荐(0)
摘要:题目: Write a program to find the node at which the intersection of two singly linked lists begins. For example, the following two linked lists: begin t 阅读全文
posted @ 2017-05-09 10:30 Sindyang 阅读(183) 评论(0) 推荐(0)
摘要:题目: 141.Given a linked list, determine if it has a cycle in it. 142.Given a linked list, return the node where the cycle begins. If there is no cycle, 阅读全文
posted @ 2017-04-23 11:58 Sindyang 阅读(196) 评论(0) 推荐(0)