剑指offer-面试题18-删除链表的节点-链表
摘要:/* 题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。 */ /* 思路: 将要删除的节点的下一个节点的value和next复制过来,删除下一个节点。 考虑两种特殊情况: 节点为尾结点,则需要从头遍历。 节点既是尾结点也是头结点,需要将头节点指向的内容置为空。 */
阅读全文
posted @
2019-11-17 16:09
笨宝宝
阅读(98)
推荐(0)
剑指offer-面试题17-打印从1到最大的n位数-数字
摘要:/* 题目: 输入数字n,按顺序打印从1到最大的n位十进制数。 如输入3,打印从1,2,3到999。 */ /* 思路: 大数问题转化为字符串或数组。 */ #include<iostream> #include<string.h> #include<algorithm> #include<cmat
阅读全文
posted @
2019-11-14 21:19
笨宝宝
阅读(125)
推荐(0)
剑指offer-面试题16-数值的整数次方-数字
摘要:/* 题目: 实现函数double Power(double base,int exponent), 求base的exponent次方。 */ /* 思路: 本题需要考虑的情况较多: 1、0的负数次方报错。 2、判断double值为0,需要使用精度。 3、考虑exponent为负数的情况。 可创新的
阅读全文
posted @
2019-11-14 20:00
笨宝宝
阅读(132)
推荐(0)
剑指offer-面试题15-二进制中1的个数-位运算
摘要:/* 题目: 二进制中1的个数,例如9为1001,有2位1. */ /* 思路: 算法2: 左移unsigned类型flag=1,和n做&运算,当flag移动中1的位置与n对应位置也为1时,则对应位置结果为1。 算法一直执行32次。 算法1: 假设数字1101,1101-1=1100 ,1100&1
阅读全文
posted @
2019-11-12 22:28
笨宝宝
阅读(133)
推荐(0)
剑指offer-面试题14-剪绳子-贪婪算法
摘要:/* 题目: 给定一个长度为n的绳子,把绳子剪为m段,(n>1,m>1) 求各段绳子乘积的最大值。 */ /* 思路: 贪婪算法。 当绳子的长度大于5时,尽可能多的剪长度为3的绳子;当剩下的绳子长度为4时,把绳子剪为两段长度为2的绳子。 */ /* 证明: 当n>=5时,2(n-2)>n,3(n-3
阅读全文
posted @
2019-11-12 21:58
笨宝宝
阅读(201)
推荐(0)
剑指offer-面试题14-剪绳子-动态规划法
摘要:/* 题目: 给定一个长度为n的绳子,把绳子剪为m段,(n>1,m>1) 求各段绳子乘积的最大值。 */ /* 思路: 动态规划。 f(n)=max(f(1)*f(n-1),f(2)*f(n-2),f(3)*f(n-3),...,f(n/2)*f(n-n/2))。 求最优解。 大问题可分解为若干个小
阅读全文
posted @
2019-11-12 21:43
笨宝宝
阅读(138)
推荐(0)
剑指offer-面试题13-机器人的运动范围-递归法
摘要:/* 题目: 地上有一个m行n列的方格。一个机器人从坐标(0,0)的格子开始运动, 每次可向上、下、左、右移动一格,但不能进入行坐标和列坐标之和大于k的格子。 如,当k=18时,机器人能进入(35,37),因为3+5+3+7=18。 但不能进入(35,38),问机器人能够到达多少格子。 */ /*
阅读全文
posted @
2019-11-12 20:59
笨宝宝
阅读(136)
推荐(0)
剑指offer-面试题12-矩阵中的路径-回溯法
摘要:/* 题目: 设计一个函数,判断一个矩阵中是否存在一条包含该字符串所有字符的路径。 路径可从字符串的任意一格开始,每一步可向上、下、左、右移动一格。 如果一条路径经过了矩阵中的某一格,那么该路径不能再次经过该格。 */ /* 思路: 采用回溯法。 遍历数组,当选中其中一个格子时,若与当前字符串的指定
阅读全文
posted @
2019-11-11 21:54
笨宝宝
阅读(142)
推荐(0)
剑指offer-面试题11-旋转数组的最小数字-二分法
摘要:/* 题目: 把一个数组最开始的若干个元素搬到数组末尾,我们称之为数组的旋转。 输入一个递增排序的数组的旋转,输出旋转数组中的最小元素。 */ /* 思路: 采用二分的方法,旋转数组实质上是上左半部分为递减数组,右半部分为递增数组。 取中间元素mid,若大于等于最右端的元素,则说明mid在左半部分,
阅读全文
posted @
2019-11-10 20:34
笨宝宝
阅读(91)
推荐(0)
剑指offer-基础练习-快速排序-排序
摘要:/* 题目:快速排序 */ /* 思路:将一个数组分为两份,左边的数字小于index,右边的数字大于index,递归划分后形成一个排序后的数组。 */ void QuickSort(int data[],int length,int start,int end){ if(start == end)
阅读全文
posted @
2019-11-10 14:45
笨宝宝
阅读(188)
推荐(0)
剑指offer-面试题10-斐波那契数列-递归循环
摘要:/* 题目:求斐波那契数列的第n项 */ /* 思路: f(n) = 0 n=0, 1 n=1, f(n-1) + f(n-2) n>1 */ int Fibonacci(int n){ if(n < 0) return -1; if(n == 0 || n == 1) return n; int
阅读全文
posted @
2019-11-09 13:39
笨宝宝
阅读(144)
推荐(0)
剑指offer-面试题9-用两个栈实现队列-栈和队列
摘要:/* 题目: 用两个栈实现一个队列。队列声明如下。 */ /* 思路: 将值压入stack1,再从stack1弹出到stack2,则为先进先出。 appendTail时直接压入stack1即可,当stack2没有可用于deleteHead的元素时,将stack1的元素全部压入stack2。 */ t
阅读全文
posted @
2019-11-08 20:05
笨宝宝
阅读(107)
推荐(0)
剑指offer-面试题8-二叉树的下一个节点-二叉树
摘要:/* 题目: 给定一棵二叉树和其中一个节点,找出中序遍历的下一个节点。 */ /* 思路: 两种情况: 节点存在右子树:节点右子树的最左节点; 节点不存在右子树,节点向上一直找父节点或祖父节点,直到其父节点或祖父节点为其双亲节点的左子树,则next节点为父节点或祖父节点,若没有找到,则无next节点
阅读全文
posted @
2019-11-08 19:09
笨宝宝
阅读(106)
推荐(0)
剑指offer-面试题7-重建二叉树-二叉树
摘要:/* 题目: 输入二叉树的前序遍历和中序遍历的结果,重建二叉树。假设输入的前序遍历和中序遍历的结果中不包含重复的数字。 */ /* 思路: 使用前序遍历找到根节点,再通过中序遍历找到左子树和右子树。 采用递归的方法建立。 */ struct BinaryTreeNode{ int value; Bi
阅读全文
posted @
2019-11-06 22:06
笨宝宝
阅读(104)
推荐(0)
剑指offer-面试题6-从头到尾打印链表-链表
摘要:/* 题目: 输入一个链表的头节点,从尾到头反过来打印每个节点的值 */ /* 思路: 解法一:利用栈后进先出的特性。 解法二:利用递归函数的性质。 */ void PrintListReversingly_Iteratively(ListNode *pHead){ std::stack<ListN
阅读全文
posted @
2019-11-06 20:59
笨宝宝
阅读(92)
推荐(0)
剑指offer-基础练习-增删节点-链表
摘要:/* 链表基本操作: 插入节点和删除节点 */ /* 思路: 使用指向链表的头指针,这样在新插入节点后,头指针不会改变 */ struct ListNode{ int value; ListNode* next; } void AddToTail(ListNode** pHead,int value
阅读全文
posted @
2019-11-06 20:38
笨宝宝
阅读(110)
推荐(0)
剑指offer-面试题5-替换空格-字符串
摘要:/* 题目: 请实现一个函数,把字符串中的每个空格替换成'%20'. 例如输入“We are happy",则输出 ”We%20are%happy"。 */ /* 结题思路: 考虑给定数组内存足够,且不能开辟新的数组的情况。 使用两个指针,从后往前复制。 注意数组最后一个字符为'\0'。 */ vo
阅读全文
posted @
2019-11-05 21:40
笨宝宝
阅读(106)
推荐(0)
剑指offer-面试题4-二维数组中的查找-数组
摘要:/* 题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 */ /* 解题思路: 从矩阵的右上角开始进行比较,将比较对象限定在左下角。 */ bool Find(int *m
阅读全文
posted @
2019-11-05 20:24
笨宝宝
阅读(101)
推荐(0)