算法编程
shirepo
这个作者很懒,什么都没留下…
展开
-
不使用四则运算实现加法运算
牛客在线编程题:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。非递归求解:class Solution {public:int Add(int num1, int num2){while (num2!= 0){int temp = num1^num2;num2 = (num1&num2) num1 = temp;}re原创 2017-07-10 17:10:27 · 648 阅读 · 0 评论 -
输出旋转数组的最小值
牛客编程题题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。//逆序逐个比较,输出最小的class Solution {pu原创 2017-07-24 15:02:22 · 305 阅读 · 0 评论 -
C++ 栈实现队列
牛客编程题题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。//思路:如果我们将元素压入栈A,然后弹出栈A的元素压入栈B,再弹出栈B元素,注意的是向栈B压入新元素,需要保证此时栈B为空,不然元素弹出顺序出错class Solution{public:void push(int node) {stack1.push原创 2017-07-24 11:21:18 · 564 阅读 · 0 评论 -
字符串替换
牛客在线编程题题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。//这里适当说明,本题要求在原来的内存空间内替换修改字符串,空间总大小为length,已经存储的字符串以str指针指向首地址,这题合适的做法//是从字符串尾部进行替换,这样不会涉及到覆盖问题。class Solution {原创 2017-07-17 21:04:04 · 374 阅读 · 0 评论 -
逆向输出链表
牛客编程题题目描述输入一个链表,从尾到头打印链表每个节点的值//思路:逆向输出,首先想到,栈的特点,它是后进先出,我们顺序遍历链表,将元素压入栈中,最后遍历完,顺序输出栈的元素,即可以实现逆序/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :*原创 2017-07-24 10:20:55 · 534 阅读 · 0 评论 -
重建二叉树
牛客在线编程题题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。//思路,先序遍历,访问顺序,根节点->左子树->右子树,中序遍历,访问顺序,左子树->根节点->右子树;先序遍历的序列依次取出来的值都为每颗原创 2017-07-18 21:22:34 · 221 阅读 · 0 评论 -
动态规划-数字三角形
此题目来源于北大POJ,在下面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形的行数大于1小于等于100,数字为 0 - 997 3 8 8 1 0 2 7 4 4 4 5 2 6 5/*思路1:有题目可知,每个tri(i, j)只和它的左上以及右上相关,原创 2017-07-13 16:57:09 · 488 阅读 · 0 评论 -
按小到大顺序输出一个正整数的所有质数因子
牛客在线编程题:输入描述:输入一个long型整数输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。示例1输入180输出2 2 3 3 5/*基本思想:从2开始依次判断每个数是否为正整数num的因子,并该数满足质数*/#include #include #includ原创 2017-07-12 16:52:33 · 3006 阅读 · 0 评论 -
十六进制转十进制
//牛客编程题:十六进制转十进制(多组输入),例如:输入 0xA,输出 10/*分两步,1)判断标识符“0x”,如果本身输出不合法,无需做转化,2)按输入十六进制从后往前(低位到高位)依次判断每个字符代表的数值大小,再乘以16的位数的几次方(相当于十进制,百位千位对应于10的二次和三次方)直到“0x”处停止,累加输出对应的十进制数*/#include #includ原创 2017-07-12 10:56:40 · 573 阅读 · 0 评论 -
0交换排序
牛客网编程题:长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的交换,完成以下函数//题目中唯一允许的交换操作void swap_with_zero(int* array, int len, int n){int zIndex = -1;int nIndex = -1;for (int i = 0; i if (array[i] == 0){zIndex =原创 2017-07-12 09:59:48 · 2386 阅读 · 0 评论 -
二叉树的深度,平衡二叉树,二叉树的镜像
//二叉树的数据结构/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {原创 2017-07-11 09:59:34 · 303 阅读 · 0 评论 -
二叉搜索树转化为有序双向链表
链接:https://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5来源:牛客网题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。struct TreeNode {int val;struct TreeNo转载 2017-07-27 21:47:12 · 313 阅读 · 0 评论