
剑指offer
Keen_hard
Just a developer
展开
-
剑指offer_合并俩个有序数组
题目:给定俩个有序的数组,将俩个数组合并到一个数组中,使得数组依然有序。解题思路:用 i 和 j 标记俩个数组的开始位置,俩俩比较,将小的数插入到新数组中。当一个数组结束的时候,将另外一个数组插入到新数组中。示例代码如下:#include<iostream>#include<vector>using namespace std;void MergeOrde...原创 2019-09-28 23:27:34 · 191 阅读 · 0 评论 -
剑指offer_链表中找环问题
题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解题思路:定义俩个快慢指针,同时指向链表的头指针,快指针每次走俩步,慢指针每次走一步,当快慢指针相遇的时候,此时证明链表中有环,然后将快指针指向头指针,然后快指针和慢指针同时走,每次走一步,当快慢指正再次相遇的时候,此时这个结点就是环的入口结点。代码示例如下:/*struct ListNode { ...原创 2019-09-22 22:33:43 · 130 阅读 · 0 评论 -
剑指offer_二维数组查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的个二维数组和一个整数,判断数组中是否含有该整数。例如下面的二维数组就是每行、每列都递增排序。如果在这个数组中查找数字7,则返回true;如果查找数字5,由于数组不含有该数字,则返回false。解法一分析:使用双循环,外层循环控制列数,内层循环控制遍历一行数据,若等于key...原创 2019-07-30 18:49:55 · 170 阅读 · 0 评论 -
剑指offer_字符串替换问题
题目一:函数将字符串中的字符‘※’号移到字符串的前部分,前面的非‘※’字符后移,但不能改变非字符的先后顺序,函数返回串中非’*'字符的数量。(要求尽可能的占用少的时间和辅助空间)。例如:原始串为"au※※toc※※h※※i※ps",处理后为"※※※※※※※autochips",函数返回9。思路:使用俩个标记 i, j 都指向字符串的末尾,然后 i 往前走,若遇到非字符则将其位置的值拷到 j 位置...原创 2019-08-19 18:42:56 · 225 阅读 · 0 评论 -
剑指offer_将偶数置于奇数的前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路:重新创建一个新数组,然后顺序遍历原数组,找出其中的奇数,然后将其尾插到新数组,然后再次顺序遍历原数组,找出其中的偶数,然后再顺序尾插到新数组,最后将新数组赋给原数组。代码示例如下:class Solutio...原创 2019-09-22 21:41:43 · 131 阅读 · 0 评论 -
剑指offer_二叉树的层次遍历
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路:创建一个队列,先将二叉树的根节点放入队列中,然后开始循环,只要队列不为空,获取队列的第一个元素,将其保存为一个节点tmp,,接着将其push_back到新数组里面,然后判断其左孩子是否为空,若其不为空,将其push到队列中,然后再继续判断其右孩子是否为空,若不为空,将其push到队列中,然后将tmp结点pop.依次循环就完成...原创 2019-09-22 15:44:46 · 114 阅读 · 0 评论 -
剑指offer_从尾到头打印链表
解法一:通过栈先进后出的特点,先将链表每个结点压到栈里面,最后出栈就可以实现了从尾到头打印链表。代码实现如下:struct ListNode { int val; struct ListNode *next; ListNode(int x) :val(x), next(NULL) {}};class Solution {public: vec...原创 2019-08-23 00:07:29 · 119 阅读 · 0 评论