随笔分类 - 剑指offer
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解法一:从
阅读全文
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 分析: 因为栈是后进先出的数据结构,当将数据依次压入第一个栈后,再依次从这个栈弹出,压入第二个栈,如果此时从第二个栈中获取数据,表现正好像一个 “先进先出” 的队列数据结构。入栈和入队的操作是一样的,不需
阅读全文
摘要:题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 解法一:可以直接反转链表,但是这样会破坏原链表的结构,所以不推荐,直接用一个vector存储链表的值,然后进行反转输出即可。 /** * struct ListNode { * int val; * struct ListNo
阅读全文
摘要:题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解法一:重新申请一个空的字符串用来存储替换后的字符串,从前往后替换,遇到空格直接替换成“%20”,其他的不变。时间复杂度O(n),
阅读全文
摘要:题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解法一:暴力搜索 在一个二维数组中查找一个数字的最简单办法就是直接遍历,从上到下从左到右搜索,等
阅读全文