剑指offer
cdjccio
这个作者很懒,什么都没留下…
展开
-
剑指offer——调整数组顺序使奇数位于偶数前面找
Q:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。A:1、新建两个数组分别放原数组中的奇数和偶数。 2、将奇数数组中的数复制给原数组 3、将偶数数组中的数复制到原数组奇数的后边#include <iostream>#include <...原创 2018-05-02 22:17:42 · 144 阅读 · 0 评论 -
剑指offer--从一段字符串中提取数字
问题:从一段字符串中获取数字example:input:1ab2cd3ef45goutput:1 2 3 45思路:解析字符串局部整型变量、整型数组的初始化: 如果部分赋值,则其余部分初始化为0;比如int a[5] = {1, 2}; 那么编译器会帮你把后面的三个元素置为0。 如果未赋值,则都是随机值。比如int a[5]; 则编译器将数组元素赋...原创 2019-04-10 15:57:19 · 463 阅读 · 0 评论 -
剑指offer--京东算法面试(将字符串中的随机个数的空格数替换为一个空格)
#include <iostream>#include <string.h>#include <stdlib.h>using namespace std;/**\brief: 将I have a family! 替换为 I have a family!.\input: src:源字符串\ strLen:源字符串的长...原创 2018-11-13 21:56:48 · 242 阅读 · 0 评论 -
剑指offer--求出数组中最大元素出现的次数
#include <iostream>using namespace std;// 思想:用空间换取时间// 读取数组中的元素,将其出现的次数保存在新的数组中void findMaxnum(int data[], int len){ int sp[1000] = {0}; int Max = 0; // 遍历数组元素,将元素出现的次数保存在新的...原创 2018-09-05 10:27:32 · 306 阅读 · 0 评论 -
剑指offer——求栈中的最小元素
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。思路:1、入栈时判断辅助栈min_data中是否有元素,如果没有元素,则将值压入栈中,如果有元素,比较栈顶元素和value值,如果小于等于栈顶元素,将value压入辅助栈中,否则,不做处理。保证辅助栈中栈顶一直是栈中的最小值。2、出栈使为了防止辅助栈出现下溢,必须在数据栈和辅助栈...原创 2018-08-23 23:51:48 · 410 阅读 · 0 评论 -
剑指offer--将字符串中的空格替换为20%
#include <iostream>#include <windows.h>#include <map>#include <string>#include <cstring>#include <vector>#include <deque>#include <set>原创 2018-08-01 22:54:48 · 182 阅读 · 0 评论 -
剑指offer——二叉树的镜像
Q:题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5A:步骤:1.交换根结点的左右子结点...原创 2018-05-07 21:09:01 · 157 阅读 · 0 评论 -
剑指offer——树的子结构
Q:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)A:要查找树A中是否存在和树B结构一样的子树。我们可以分为两步: 第一步在树A中找到和B的根节点一样的值一样的结点R, 第二步在判断树A中以R为根节点的子树是不是包含和树B一样的结构。 /*struct TreeNode { int val; struct TreeNode *...原创 2018-05-07 20:36:31 · 142 阅读 · 0 评论 -
剑指offer——我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
Q:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?A: 既然是长条形的,那么从后向前,最后一个矩形2*2的,只有两种情况: 第一种是最后是由一个2*(n-1)的矩形加上一个竖着的2*1的矩形 另一种是由一个2*(n-2)的矩形,加上两个横着的2*1的矩形 因此我们可以得出, 第2*n个矩形的覆盖方法...原创 2018-04-26 21:46:49 · 4479 阅读 · 0 评论 -
剑指offer——一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
Q:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。A:该问题实质是斐波那契数列求和,递推公式为 f(n)=f(n-1)+f(n-2);class Solution {public: int jumpFloor(int number) { if(number <= 0) { retur...原创 2018-04-26 20:56:29 · 4245 阅读 · 0 评论 -
剑指offer——输入一个链表,反转链表后,输出链表的所有元素
Q:输入一个链表,反转链表后,输出链表的所有元素。A:1、先在原链表的头节点前再添加一个头结点; 2、使用头插法逆置新加入头结点后的所有节点。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {p...原创 2018-05-03 20:52:27 · 606 阅读 · 0 评论 -
剑指offer——输入一个链表,输出该链表中倒数第k个结点
Q;输入一个链表,输出该链表中倒数第k个结点。A:定义两个指针: (1)第一个指针从链表的头指针开始遍历向前走k-1,第二个指针保持不动; (2)从第k步开始,第二个指针也开始从链表的头指针开始遍历; (3)由于两个指针的距离保持在k-1,当第一个(走在前面的)指针到达链表的尾结点时,第二个指针(走在后面的)指针正好是倒数第k个结点。/*struct ListNode { int val...原创 2018-05-03 19:35:58 · 468 阅读 · 0 评论 -
剑指offer——合并两个排序的链表
Q:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。A:选择第一个节点元素值较小的链表为基础链表,通过不断比较两个链表的元素值,将另一个链表中的节点链接到基础链表中。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL)...原创 2018-05-03 21:56:18 · 667 阅读 · 0 评论 -
剑指offer——顺时针打印矩阵
Q:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.A:本题采取记录最外圈四个角的位置方法, 当满足左右间距大于1,上下间距大于1时,每次剥下一圈,将四个角都往内移一...原创 2018-05-09 22:07:12 · 147 阅读 · 0 评论 -
输入数据的方法
#include <iostream>#include <cstdio>#include <string>#include <vector>using namespace std;int main(){ // 输入一串连续的数字并存放在vector数组中 // input : 12345678 // outp...原创 2019-04-09 23:21:33 · 672 阅读 · 0 评论