牛客网
flight with me
这个作者很懒,什么都没留下…
展开
-
剑指offer(1-5)
题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解法思路: 1.把每一行看成有序递增的数组,利用二分查找,通过遍历每一行得到答案,时间复杂度是nlogn; public class Solution { public boolean ...原创 2019-02-01 16:47:41 · 134 阅读 · 0 评论 -
剑指offer(16-20)
16.输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解法思路: (1)判空:两链表均为空,返回空; 一链表为空,返回另一链表; 均非空,继续; (2)确定新链表头结点,比较两链表头结点得出; (3)依次遍历两链表,比较两链表各结点的值,小则加入新链表; (4)当一链表到达尾结点,则结束循环,将另一链表直接加在新链表后面。 /* struct List...原创 2019-03-20 12:17:55 · 103 阅读 · 0 评论 -
剑指offer(21-25)
21.输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 解法思路: 模拟压栈过程,建立辅助栈, (1)将压栈序列元素压入辅助栈,比较压入元素与出栈...原创 2019-03-21 12:34:59 · 116 阅读 · 0 评论 -
剑指offer(6-10)
6.把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解法思路:输入数组为非减排序,因此,遍历比较相邻两个数,一旦后一个数比前一个数小,那么这个数即为最小值。 class ...原创 2019-03-18 13:05:38 · 148 阅读 · 0 评论 -
剑指offer(26-30)
26.分解让复杂问题简单:二叉搜索树与双向链表 题目描述: 27.分解让复杂问题简单:字符串的排列 题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解法思路:中序遍历即可。 /* struct TreeNode { int val; struct TreeNode *left; struct Tr...原创 2019-03-22 09:49:52 · 136 阅读 · 0 评论 -
剑指offer(11-15)
11.输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 法一: 解法思路:设置标志数flag = 1,逐次右移1所在的位置,将flag与输入整数进行按位与运算,即可比较出输入整数与flag中当前1所对应的位置是否为0; class Solution { public: int NumberOf1(int n) { int count = 0; ...原创 2019-03-19 11:09:54 · 80 阅读 · 0 评论