![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔试题
只会写臭虫
这个作者很懒,什么都没留下…
展开
-
华为校招2019.8.7笔试第三题(栈+表达式求值)
输入一个表达式的字符串,只包含0、1、|、&、!、(、)七种字符,然后输出表达式的结果,保证输入合法。!优先级大于&大于|。 这题有个需要注意的点就是:!是一元运算符,这里考虑两种情况,如果!后面是数字,就直接进行运算,并将运算结果入栈。如果!后面是(,就将!压进符号栈,在(出栈时判断当前栈顶是否为!,若为!,将数字栈中的栈顶元素弹出进行!运算。 代码: #include<i...原创 2019-08-08 10:39:56 · 711 阅读 · 4 评论 -
整数的因式分解(c语言实现)
#include<stdio.h> int main() { int n,i; printf("Plz input int:"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++) { whil...转载 2019-08-15 09:16:55 · 4995 阅读 · 0 评论 -
二叉树最大叶子结点到最小叶子结点的最短距离
有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。 给定二叉树的根节点root,请返回所求距离。 解法: 先利用getMaxandMin函数找到叶子结点中最大值和最小值对应的结点,然后利用tree函数,递归返回一个pair<int,int>,第一个...原创 2019-08-15 12:27:06 · 867 阅读 · 0 评论 -
手写堆排序
若从小到大排序,把原有数组维护成一个大顶堆即可,注意从非叶子结点中的最后一个结点倒序遍历。 若二叉树结点下标从0开始,某个节点下标为k,则它的左右子节点的下标分别为2k+1,2k+2。 获得某个节点的父节点下标的方法为(idx+1)/2-1 若二叉树结点下标从1开始,某个节点下标为k,则它的左右子节点的下标分别为2k,2k+1,获得某个节点的父节点下标的方法为idx/2。 代码如下: #incl...原创 2019-08-16 23:34:26 · 521 阅读 · 0 评论 -
最优编辑(牛客网,动态规划)
对于两个字符串A和B,我们需要进行插入、删除和修改操作将A串变为B串,定义c0,c1,c2分别为三种操作的代价,请设计一个高效算法,求出将A串变为B串所需要的最少代价。 给定两个字符串A和B,及它们的长度和三种操作代价,请返回将A串变为B串所需要的最小代价。保证两串长度均小于等于300,且三种代价值均小于等于100。 测试样例: “abc”,3,“adc”,3,5,3,100 返回:8 思路: d...原创 2019-08-17 16:05:18 · 311 阅读 · 0 评论 -
LeetCode 48. 旋转图像
方法1: 先进行矩阵转置,再将矩阵每一行逆序。 class Solution { public: void rotate(vector<vector<int>>& matrix) { int n=matrix.size(); if(n==0) return; for(int i=0;i...原创 2019-08-18 10:49:57 · 97 阅读 · 0 评论