手撕代码
1.给定两个字符串s1和s2,统计s2子串在s1里面出现的个数?
int fun(char* s1, char *s2) { int i(0), j(0), n(0), s1_len(0), s2_len(0); char *pti; //定义一个指针,记录进入j循环的时候s1[i]的地址 s1_len = strlen(s1); s2_len = strlen(s2); for (i = 0; i<s1_len; i++) { pti = &s1[i]; //取得此时s1[i]的地址 for (j = 0; j<s2_len; j++) { if (*pti != s2[j])break; //如果pti所指向的地址的内容与字符s2[j]不相等 pti++; //指针后移 if (j == s2_len - 1)n++; //s2所有字符与s1中从&s1[i]开始的字符匹配完毕 } } return n; } int main() { char s1[1024]; char s2[512]; for (;;) { cout << "输入s1" << endl; cin.getline(s1, 1024); cout << "输入s2" << endl; cin.getline(s2, 512); cout << "s2在s1中出现的次数:" << fun(s1, s2) << "\n\n\n"; } return 0; }
根据上一段代码,分别设计黑盒测试案例以及白盒测试案例
说说黑盒测试案例的设计方法?说说白盒测试案例的设计方法?
2.场景题:现在收到一则短信,短信是火车票订票信息,包含订单号,车次,座位号,姓名等信息。现在要把这些信息存进数据库里面,应该选择哪些字段作为主键?
3.求二叉树的深度。讲一下思路?
作为测试,针对上面的代码,你怎么去验证这个功能,有哪些场景你写一下吧?你上面写的测试案例可以划分为几类呢?
写代码,类似高考成绩,一个表中有很多数据(无序的),给你一个成绩,查出在表中的排名
1.找出这两个链表是否有相交的点
找出相交点,用set
双指针判断是否相交
2.判断链表有没有环,环起点在哪儿。
快慢指针 ListNode* slow = head; ListNode* fast = head->next;
3.手撕topk,时间复杂度是多少。
class Solution { public: vector<int> getLeastNumbers(vector<int>& arr, int k) { vector<int> res; priority_queue<int> pq; for(int num:arr) { pq.push(num); if(pq.size()>k) { pq.pop(); } } while(!pq.empty()) { res.push_back(pq.top()); pq.pop(); } return res; } };
写个算法,实现抢红包随机获取金额的过程参考
链表反转
两数之和(leetcode第一题~、~)
判断一个字符串是否为另一个字符串子串(暴力写的)
股票最大利润
实现单链表前后交叉排序:1,2,3,4,5,6 变成 1,4,2,5,3,6
因式分解
有序二叉树,一种遍历方法使之有序,中序遍历。
非递归实现先序遍历
找无序数组中第k个数(一开始说用堆实现、后来我又想着用快排的partation实现)
算法题:从字符串S变到T,插入消耗2、删除消耗2、替换消耗3、求最小消耗
算法题:两个栈实现一个队列(实现push、pop、count三个函数)(简单)
strcpy的实现
给出两个链表,找出相同的链接。a->b->c->d->f、b1->a1->c1->d->f
二叉树的遍历方式,手写先序遍历(参考代码:https://www.cnblogs.com/anzhengyu/p/11083568.html)
两个字符串的最长公共子串(参考代码:https://www.cnblogs.com/anzhengyu/p/11166708.html)
查找二叉树最大深度
二叉树遍历
写代码判断IP地址(https://blog.csdn.net/u014259820/article/details/78833196?utm_source=distribute.pc_relevant.none-task)
在字符串中找出不重复字符的个数
找出两个只出现一次的数字,其余的数字都出现了两次
给n元钱,m个人,写个随机分钱的函数
两个栈实现一个队列
给个数组求连续子序列最大和
写一个程序;给一个数组,a【2 -2 3 3 6 -9 7】输出a【2 -2 3 -9 3 6 7】输入正负数都有数组,输出数组正负交替出现,多的那一类都放在后面;
给定一个数组 输出和为k的两个数的位置 a【2 7 3 5 11】k=9 输出 0 1 https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-2/
算法题:实现两个String字符串寻找最大公共子字符串
让写一个洗牌的函数,写完问我为啥那样写、再写一个打印牌的函数,问我洗完牌之后345不连在一起的概率 如何模拟一副扑克牌的洗牌过程
查找字符串中重复的子串,并输出重复的次数 https://blog.csdn.net/zouheliang/article/details/80649584
判断是否为平衡二叉树
找出一个字符串的最长不重复子串(https://www.cnblogs.com/linghu-java/p/9037262.html)
大数据的处理
在海量IP中找出访问次数最多的100个IP
(1)将ip地址放入多个小文件中,保证每种IP只出现在一个文件中
(2)利用hashmap统计每个小文件中IP出现的次数
(3)利用最小堆得到所有IP访问次数最多的100个
END