笔试题
让我们荡起双脚
信言不美,美言不信。
善者不辩,辩者不善。
知者不博,博者不知。
圣人不积,既以为人己愈有,既以与人己愈多。
天之道,利而不害;圣人之道,为而不争。
展开
-
笔试题:挖掘机技术哪家强
题目描述 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。输入描述: 输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。输出描述: 在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证原创 2015-08-13 02:02:36 · 2295 阅读 · 0 评论 -
笔试题:判断一个树是不是平衡二叉树
class Solution {public: int length(TreeNode* t) { if(t==NULL)return 0; return length(t->left)>length(t->right)?length(t->left)+1:length(t->right)+1; } bool IsBlance(Tr原创 2015-09-06 01:01:44 · 497 阅读 · 0 评论 -
笔试题:动态规划之求数组中的最长路径
#include <iostream>using namespace std;void Grial(int (*a)[5],int (*b)[5],int x, int y){ if(x>=5 || y>=5)return ; int i = x; int j = y; if(i-1>=0 && j-1>=0) b[原创 2015-09-06 08:06:06 · 1428 阅读 · 0 评论 -
笔试题:删除链表中重复的节点
#include <iostream>#include <queue>using namespace std;struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};class Solution {public:原创 2015-09-05 14:29:06 · 568 阅读 · 0 评论 -
算法题:数组中只出现一次的两个数字
class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { int count = 0; int n = data.size(); if(n<2) { *num1=0;原创 2015-09-06 01:43:56 · 508 阅读 · 0 评论 -
笔试题:求两个乱序数组的共公数组
#include #include #include using namespace std;vector find(int a[],int n,int b[],int m){ int i = 0; vector result; bitset bt1; bitset bt2; //适合分布集中的大型数据较小的数组。 for (; i < n; i++) { bt1.se原创 2015-09-11 17:01:35 · 595 阅读 · 0 评论 -
笔试题:再hash法
#include<iostream>#include <string.h>#define DefaultSize 13using namespace std;struct PeopleNode{ int flags; char *name; PeopleNode():flags(0),name(new char[20]){}};class Hash{public原创 2015-09-12 00:20:43 · 763 阅读 · 0 评论 -
笔试题:求二叉树和值为sum的所有路径
#include <iostream>#include <stack>using namespace std;struct TreeNode{ int data; TreeNode *left; TreeNode *right; TreeNode(int d = int()):data(d), left(NULL), right(NULL){}};clas原创 2015-09-06 17:00:53 · 718 阅读 · 0 评论 -
笔试题:o(n)解法求最大回文串(Manacher)
#include <iostream>using namespace std;void Grial(char *s){ int maxindex = 0;//init max length int maxstart = 0; int b[100]={0}; string str; string resultStr; str+='@';原创 2015-09-06 21:03:37 · 568 阅读 · 0 评论 -
笔试题:知识点总结
#include <iostream>using namespace std;int main(){ int *a = new int; for (int i = 0; i < 20; i++) { *(a + i) = 9; cout << *(a + i) << endl; } int b[1]; int *p =原创 2015-09-11 21:53:33 · 453 阅读 · 0 评论 -
腾讯2016年9月14号面试笔试题
#include #include #include #include #define DefaultSize 13//文本中的大量字符串,求出现频率最大的前n项字符串。//hash映射保存,有string保存字符串,freq保存出现的次数。//小堆heap以freq为关键值比较,求的前n项大的字符串并且输出。using namespace std; struct SNo原创 2015-09-14 00:19:27 · 634 阅读 · 0 评论 -
笔试题之:快排求第n大的数字
#include using namespace std;int Grial(int a[], int m,int n){ int i = m; int j = n; int temp = a[m]; while (i < j) { while (i=temp)j--; a[i] = a[j]; while (i<j && a[i]<=temp)i++; a[j]原创 2015-09-15 03:26:47 · 675 阅读 · 0 评论 -
排列组合问题
yy笔试题:x + y + z = 10(x,y,z均是大于0的整数),求所有可能的个数?1 1 1 1 1 1 1 1 1 1 = 10;相当于把10拆成10个1,然后用两个挡板选出三组数据就是结果,所以最后的结果是9*8/2=36(种)可能。扩展:有10个球放在4个盒子里面有多少种放法?至少保证每个盒子都有一个球。解题思路与上面一模一样,都是用挡板来进行隔离选择。原创 2015-09-30 22:39:36 · 478 阅读 · 0 评论 -
C/C++:用数组构造队列。
#include #include using namespace std;//用数组实现队列,我开始的想法是用一个数组来实现,那么每次的pop()//操作都会移动整个数组,后来我又想到另外一种方法就是用两个数组逆向//存储操作,这个有点麻烦了,并且不好扩展,于是我想到了使用环形数组来实现,//维护start,end两个下标,相当与信号量,感觉这是一个比较不错的方案,//如果超出数组原创 2015-10-05 11:40:01 · 933 阅读 · 0 评论 -
字符串与数字的合并
#include #include using namespace std;char* CombineString(char *vendor, unsigned short checksum){ string resultstr; resultstr += vendor; resultstr += '_'; string temp; int num = checksum; wh原创 2015-09-17 20:13:06 · 803 阅读 · 0 评论 -
c++笔试题:简易学生信息系统
//姓名 学号 成绩#include #include using namespace std;struct student{ char name[10]; int num; float score;};class studentlist{public: studentlist() { len = 0; } void Insert原创 2015-10-06 22:43:48 · 1352 阅读 · 0 评论 -
笔试题:求数组中和为sum的乘积最小的一对组合
#include <iostream>#include <vector>using namespace std;class Solution {public: vector<int> FindNumbersWithSum(vector<int> array, int sum) { //1 2 3 4 5 6 7 int i = 0; in原创 2015-09-05 00:42:59 · 848 阅读 · 0 评论 -
算法题:双栈排序
题目描述请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。给定一个int[] numbers(C++中为vector),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。测试样例:[1,2,3,4,5]返回:[5,4,3,2,1]cla原创 2015-08-20 23:18:29 · 1474 阅读 · 0 评论 -
笔试题:求第M个到第N个素数之间所有素数
题目描述 令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。输入描述: 输入在一行中给出M和N,其间以空格分隔。输出描述: 输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。输入例子: 5 27输出例子: 11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 7原创 2015-08-13 02:50:19 · 7059 阅读 · 0 评论 -
算法题:二分查找的溢出考虑
#include <iostream>using namespace std;int find_val(int a[],int n,int val){ int low = 0; int high = n-1; while(low<=high) { //mid=(high+low)/2;//可能溢出。 int mid = low+(h原创 2015-08-28 01:29:08 · 4019 阅读 · 0 评论 -
笔试题:求二叉树中和值为sum的所有路径
#include <iostream>#include <stack>using namespace std;struct Node{ Node *left; Node *right; int data; Node(int d = int()) :data(d), left(NULL), right(NULL){}};class DataTree{pub原创 2015-08-31 20:38:24 · 1098 阅读 · 0 评论 -
笔试题:用二叉树构造双向链表
#include <iostream>#include <string.h>using namespace std;struct Node{ Node *left;//相当于双向链表的prev指针。 Node *right;//相当于双向链表的next指针。 char data; Node(char d = char()):data(d),left(NULL)原创 2015-08-31 16:43:47 · 713 阅读 · 0 评论 -
笔试题:乱序求第n大(小)的数。我能想到的最好的方法。
#include using namespace std;//当然用快速排序也是一样的。class Heap{ public: Heap(){} void Insert(int a[],int len,int N) { data = new int[N]; size = N; for(int i=0;i<N;i++) { data[i]=a[i]; }原创 2015-09-01 00:05:03 · 1004 阅读 · 1 评论 -
笔试题:用两个栈实现队列
#include <iostream>#include <stack>using namespace std;template<typename T>class QUEUE{ public: QUEUE(){} ~QUEUE(){} void APPEND(const T val) { while(st2.empty()==false)原创 2015-09-01 00:56:00 · 791 阅读 · 0 评论 -
笔试题:由两个栈构造min栈
#include <iostream>#include <stack>using namespace std;template<typename T>class Min{public: void PUSH(T val) { T temp = val; st1.push(val); if (st2.empty() == true原创 2015-08-31 19:49:42 · 555 阅读 · 0 评论 -
面试题:6个问题
1.当参数*x==1,*y==1,*z==1时,下列不可能是函数add的返回值的(D)?int add(int *x,int *y,int *z){*x += *x;*y += *x;*z += *y;return *z;}A.4 B.5 C.6 D.7解析:1.当x,y,z指向同一快地址时,z=8。2.当只有x,y指向同一快地址时,z=5。3......x,z......原创 2015-08-17 17:47:19 · 977 阅读 · 0 评论 -
笔试题:判断栈的push(),pop()序列是否正确
#include <iostream>#include <stack>using namespace std;bool Grial(int a[],int n,int b[],int m){ if(n!=m)return false; stack<int> st; int j = 0; for(int i=0;i<n;i++) { st.原创 2015-09-01 11:12:21 · 618 阅读 · 0 评论 -
笔试题:逆序一个栈的递归与非递归实现
//非递归实现。#include <iostream>#include <stack>using namespace std;void Deal(stack<int> &st,int val){ stack<int> temp; while(st.empty()==false) { temp.push(st.top()); st.pop原创 2015-09-01 13:59:52 · 407 阅读 · 0 评论 -
欢迎来挑战:极限打印99乘法表
#include <iostream>using namespace std;int main(){ //凡是有两个for,while循环的,有 if,有?:的,有Switch的全部Out! int count = 1; int sum = (1 + 9) * 9 / 2; int flags = 1; for (int i = 1; i <= sum;原创 2015-09-03 15:34:50 · 801 阅读 · 0 评论 -
笔试题:cvte第一题二分法求字符串
#include <iostream>using namespace std;typedef struct String2Number{ char *String; int code;};String2Number auString2Number[] = { {"au",0x10}, {"bc",0x2}, {"chn",0x11}, {"原创 2015-09-08 20:14:42 · 511 阅读 · 0 评论 -
笔试题:求二叉树第n层的节点数。
#include <iostream>#include <string.h>using namespace std;template<typename T>struct Node{ T data; Node<T> *left; Node<T> *right; Node(T d = T()) :data(d), left(NULL), right(NULL){}原创 2015-09-04 01:00:55 · 1668 阅读 · 0 评论 -
笔试题:扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…..LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的原创 2015-09-05 01:18:36 · 1123 阅读 · 0 评论 -
笔试题:求和为sum的连续数列
#include #include using namespace std;class Solution {public: vector > FindContinuousSequence(int sum){ int index; //思想: //(y-x+1)=n; //(x+y)*n/2=sum; //--->(2*x-1+n)=2*sum/n; //--->2原创 2015-09-04 23:31:55 · 676 阅读 · 0 评论 -
找出一组数据中多次出现的所有数字(空间要求最低)
#include <iostream>#include <bitset>#include <map>using namespace std;void CheckDuplicates(int *array, int len){ bitset<40000> bt1; bitset<40000> bt2; for (int i = 0; i < len; i++)原创 2015-09-17 20:35:39 · 580 阅读 · 0 评论