![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔试刷题每日一题
一禅的师兄
这个作者很懒,什么都没留下…
展开
-
字符串指定位置
一个小伙伴的笔试题,非常简单,题目是编写一个zjbmi_find函数,实现传入字符串的'z','i','b','m','i'字符依次排到最前面。如:输入:zjbmi is a zzleading brain-machine interface company in the world";输出:看了下就是字符串删除与替换,他交卷了,后面没有做,晚上抽空写了下,就暴力写下就行了。#include <iostream>#include <string>#in原创 2020-11-24 23:11:44 · 841 阅读 · 0 评论 -
翻转字符串C与C++实现
//整个字符串的翻转char *strrev(const char *str){ char *temp=new char[strlen(str)]; for(int i=0;i<=strlen(str);i++){ temp[i]=str[strlen(str)-i-1]; } return temp;}std::string strrev6(std::string str){ for(int i=0;i<=str.size()/2;++i..原创 2020-11-16 21:33:10 · 115 阅读 · 0 评论 -
解决笔试中垃圾输入数组中的逗号过滤问题
#include <iostream>#include <string>#include "string.h"#include <vector>#include "stdio.h"#include <algorithm>using namespace std;void printvec(vector<int> arr){ for(auto x: arr){ cout<<x<<" ";.原创 2020-11-06 16:07:41 · 191 阅读 · 0 评论 -
leetcode306.累加数
1.为了处理大正数相加应该使用两字符串相加的程序,并且与和的字符串比较,避免转换为int消耗时间与溢出。2.dfs时的i,j,k分别代表第一个、第二个和第三个数字的起始下标,这样好处在于计算各个字符串时都很方便。3.第一个数字的起始下标一定是0,但是第二和第三个数字的起始下标不固定,需要通过两层循环枚举,在拿到起始数字之后,就可以dfs一直到最后验证是否整个字符串符合要求。4.这道题dfs的递归结束条件和普通稍有不同,要仔细思考。这里递归成功的标志是一直到字符串最后一个字符都满足要求,即是...原创 2020-09-26 23:28:14 · 110 阅读 · 0 评论 -
leetcode 347:计数组中前K个高频元素
#include <iostream>#include <vector>#include <unordered_map>#include <queue>#include <algorithm>using namespace std;vector<int> count(vector<int> nums,int k){ unordered_map<int,int> map;//key...原创 2020-09-26 23:11:52 · 122 阅读 · 0 评论 -
实现字符串的每个字母的开头字母为大写
例子: hello world===>Hello Word(简单手撕)void test(char *p){ int k=0; do { if(k==0 && *p!='\0') { *(p)=toupper(*(p)); k=0; } else if(*p!=' ') k=1; else k=0; *p++; }while (*p=='\0');}..原创 2020-09-16 18:49:46 · 314 阅读 · 0 评论 -
华为手撕字符统计
如果统计的个数相同,则按照ASCII码由小到大排序输出。如果有其他字符,则对这些字符不用进行统计。实现以下接口:输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出清空目前的统计结果,重新统计调用者会保证:输入的字符串以‘\0’结尾。思路:第一步: 使用map<char, int> 统计每个字符的个数, map默认按字典排序第二步: 将map中的数据拷...原创 2020-09-15 15:16:38 · 182 阅读 · 0 评论 -
字符串编辑代价
给定两个字符串str1和str2,再给定三个整数ic,dc和rc,分别代表插入、删除和替换一个字符的代价,请输出将str1编辑成str2的最小代价。示例1输入"abc","adc",5,3,2输出2示例2输入"abc","adc",5,3,100输出8题目链接:https://www.nowcoder.com/questionTerminal/05fed41805ae4394ab6607d0d745c8e4?orderByHotValue=1&.原创 2020-09-13 23:53:27 · 734 阅读 · 0 评论 -
判断X年X月X日是这年的第几天
#include<iostream>using namespace std;int judge(int Year,int month,int Day){ int Monthday[13]={ 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if(((Year%4==0 )&&(Year%100!=0))||(Year %400==0)){ //闰年29天 Monthday[2]++.原创 2020-09-08 09:27:47 · 240 阅读 · 0 评论 -
大数乘法
#include<iostream>#include<algorithm>#include<string>using namespace std; string add(string a,string b){ if(a.length()==0) return b; if(b.length()==0) return a; a.length()<b.length()?a.swap(b):a.length(); reverse(a.begin.原创 2020-09-07 23:42:43 · 88 阅读 · 0 评论 -
找出数组中倒数第二小的数
找出数组中倒数第二小的数#include <iostream>#include <vector>#include <algorithm>using namespace std;int findSecondSmall(vector<int> arr,int len){ if(arr.size()==0|| len<2) return 0xffffffff; int min=arr[0]; //第一小的 int second=ar.原创 2020-09-06 22:09:23 · 2083 阅读 · 0 评论 -
不使用库函数实现(字符串到整数)(整数到字符串)的实现(手撕)
/* ============================================================================ Name : mystoi.c Author : Version : Copyright : Your copyright notice Description : Hello World in C, Ansi-style =====================================.原创 2020-09-06 15:16:57 · 541 阅读 · 0 评论 -
序列变换
题目描述给定一个长度为N的数列Ai。你可以对数列进行若干次操作,每次操作可以从数列中任选一个数,把它移动到数列的开头或者结尾。求最少经过多少次操作,可以把数列变成单调不减的。“单调不减”意味着数列中的任意一个数都不大于排在它后边的数。输入格式第一行是一个正整数N。第二行是N个正整数Ai。输出格式输出一个整数,表示最少需要的操作次数。输入输出样例输入 #1复制56 3 7 8 6输出 #1复制2说明/提示对于30%的数据,满足1≤n≤10。原创 2020-09-05 23:02:41 · 1636 阅读 · 0 评论 -
二叉求路径和等于目标值
1、剑指offer面试题25:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。从树的根结点开始往下一直到叶节点所经过的结点形成一条路径。解题思路:从根结点开始,当每访问到一个结点,我们把该结点添加到路径上,并累加该结点的值。如果该结点为叶结点并且路径中结点值的和刚好等于输入的整数,则当前路径符合要求,我们把它打印出来。如果当前不是叶子结点,则继续访问它的子结点。当前结点访问结束后,递归函数将自动回到它的父结点。因此我们在函数退出之前要在路径上删除当前结点并减去当前结...原创 2020-08-28 09:27:04 · 674 阅读 · 0 评论 -
指定区间进行链表翻转
/** * struct ListNode { * int val; * struct ListNode *next; * }; */class Solution {public: /** * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ ListNode* reverseBetween(Li.原创 2020-08-27 15:19:14 · 204 阅读 · 0 评论 -
找中位数
题目描述给定两个有序数组arr1和arr2,已知两个数组的长度都为N,求两个数组中所有数的上中位数。上中位数:假设递增序列长度为n,若n为奇数,则上中位数为第n/2+1个数;否则为第n个数[要求]时间复杂度为O(logN)O(logN),额外空间复杂度为O(1)O(1)示例1输入复制[1,2,3,4],[3,4,5,6]输出复制3说明总共有8个数,上中位数是第4小的数,所以返回3。#include <iostream>#incl原创 2020-08-27 10:42:37 · 423 阅读 · 0 评论 -
子数组累加与累乘总结
1、数组中子数组的最大累乘积这个思路其实和计算数组的大于k的最长子数组长度一样的,先求的所有以a[i]为结尾的最大累乘积的子数组,a【i】从a[0]变化到a[N-1]在分析以a【i】为结尾的子数组时候,有三种情况 比如数组 3 4 5,a【i】为5,这时候,a[i]前面的子数组中的最大累乘积,12,乘以5,也就是60,所以这是max*a[i]如果是数组 -3 4 -5,a[i]为-5,这时候,-3*4,也就是-12,最小累乘积,反而可以让整体累乘达到最大 如果是数组,0....原创 2020-08-26 14:49:29 · 659 阅读 · 0 评论 -
双指针找出直方图中的最大矩形面积
问题描述有一个直方图,横轴长度为n,第i列的高度为h [i]。请你求出在这个直方图中面积最大的子矩阵。输入格式第一行一个正整数n。第二行n个用空间间隔的非负整数,依次描述h [1],h [2],…,h [n]。输出格式输出一行一个数,表示最大面积。样例输入 5 2 3 3 3 2 样例输出10数据范围对于30%的测试点,保证n <= 4。对于70%的测试点,保证n <= 1000。对于所有测试点,保证n ...原创 2020-08-26 10:47:43 · 370 阅读 · 0 评论 -
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积
题目在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 41 2 3 4 5 6 7 8来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximal-square著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。分析动态规划思想:将一个问题划分为N原创 2020-08-26 09:34:28 · 3438 阅读 · 0 评论 -
手撕全排列
全排列:计算出n个整数的全排列种数,并输出这所有的排列。假设这n个整数是 1 ~ nInput一个整数 n ( 1 ≤ n ≤ 9 )Output第一行输出全排列的个数a,接下来a行,每行一个排列。Sample Input3Sample Output61 2 31 3 22 1 32 3 13 1 23 2 1#include<stdio.h>#include<iostream>using namespace std;int a.原创 2020-08-25 23:55:39 · 553 阅读 · 0 评论 -
在字符串中找出重复字符串
一个重复字符串是由两个相同的字符串首尾拼接而成,例如abcabc便是长度为6的一个重复字符串,而abcba则不存在重复字符串。给定任意字符串,请帮小强找出其中的最长重复子串。例子01010101 输出4#include <iostream>#include <string>using namespace std;int main(){ string input; while(getline(cin,input)){ int len.原创 2020-08-25 23:29:15 · 7641 阅读 · 2 评论 -
深信服笔试题
对应LeetCode 453题(刷题的重要性)题目描述:给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。示例:输入:[1,2,3]输出:3解释:只需要3次移动(注意每次移动会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]比如输入[1,1,8,10,10,6]升序排序得[1,1,6,8,10,10]index = 1 从[1...原创 2020-08-25 22:34:06 · 4415 阅读 · 1 评论 -
设计LRU缓存结构,该结构在构造时确定大小(面试手撕)
题目描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构 get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1) 某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。 当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)若opt=2,接下来一个整原创 2020-08-25 09:24:10 · 1481 阅读 · 0 评论 -
十六进制转十进制(面试手撕)
#include <iostream>#include <string>#include <algorithm>#include <cmath>using namespace std;int main(){ string str; while(getline(cin,str)) { int len=str.size(); size_t sum=0; int temp=0; f.原创 2020-08-20 14:56:42 · 129 阅读 · 0 评论 -
给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的出站了,先进站的才能出站。要
#include <iostream>#include <string>#include <vector>#include <stack>#include <algorithm>using namespace std;bool isOutNum(vector<int> push1,vector<int> pop1,int len){ if(push1.size()==0||pop1.siz...原创 2020-08-19 18:51:54 · 1071 阅读 · 0 评论 -
牛顿迭代法推导
在x1处做f(x)的切线,重复上面步骤,应用:计算一个数字的立方根,不使用库函数详细描述:•接口说明原型:publicstaticdoublegetCubeRoot(doubleinput)输入:double待求解参数返回值:double输入参数的立方根,保留一位小数#include<iostream>#include <cmath>#include <iomanip>using namespace st...原创 2020-08-18 11:12:59 · 1718 阅读 · 0 评论 -
面试手撕一个死锁
#include <unistd.h>#include <mutex>#include <thread>#include <iostream>using namespace std;/*================*简单的死锁demo===========================*@brief:两个线程对两个资源申请加锁*@date:2020-08-17*=====================================.原创 2020-08-17 14:31:14 · 167 阅读 · 0 评论 -
实现两个长字符串相加
大数相加不能直接使用基本的int类型,因为int可以表示的整数有限,不能满足大数的要求。可以使用字符串来表示大数,模拟大数相加的过程。思路:1.反转两个字符串,便于从低位到高位相加和最高位的进位导致和的位数增加; 2.对齐两个字符串,即短字符串的高位用‘0’补齐,便于后面的相加; 3.把两个正整数相加,一位一位的加并加上进位。/** * 两个大数相加,且这两个大数是正整数 * 暂时不考虑负数,不考虑输入不合法的情况 * 要保证输入是正确的才...原创 2020-08-17 08:49:15 · 2154 阅读 · 0 评论 -
笔试中使用vector写入固定长度
#include<iostream>#include<vector>using namespace std;int main(){ // 读入长度为n的一组数据 int n; cin >> n; vector<int> ivec(n, 0); for (auto &m : ivec) // 必须声明为引用类型,不然无法修改vector中的值 cin >> m; return 0;...原创 2020-08-16 22:32:34 · 461 阅读 · 0 评论 -
手撕找出字符串中长度大于2的重复子字符串数
bool substrnum(string s){ int n = s.size(); int m = 0; for(int i=0;i<n-2;++i){ for(int j=i+2;j<n-1;++j){ int tmp = 0; while(s[i+tmp] == s[j+tmp]){ m += 1; ++tmp; .原创 2020-08-16 16:14:20 · 2164 阅读 · 0 评论 -
科大讯飞笔试题
1、定义一个n*m的数字矩阵,找出不同行不同列的两个数的乘积的最大值。输入: n,m 2 2 1 2 3 4输出最大值为:6 #include <vector>#include <string>#include <iostream>#include <algorithm>using namespace std;int main(){ i...原创 2020-08-16 12:42:32 · 2390 阅读 · 0 评论 -
华为机试题整理
1、整数反转后求和#include <iostream>using namespace std;int reversenum(int x){ int a=0; while (x>0) { a=a*10+x%10; x/=10; } return a;}int reverseAdd(int a,int b){ if(a<1||a>70000||b<1||b>70000).原创 2020-08-12 23:28:55 · 3028 阅读 · 0 评论 -
链表刷题指南
https://blog.csdn.net/Bertram03/article/details/88866456?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-3.channel_param转载 2020-08-12 13:58:33 · 124 阅读 · 0 评论 -
DFS +剪枝(经典例题)
描述乔治拿来一组等长的木棒,将它们随机地裁断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。输入输入包含多组数据,每组数据包括两行。第一行是一个不超过64的整数,表示砍断之后共有多少节木棍。第二行是截断以后,所得到的各节木棍的长度。在最后一组数据之后,是一个零。输出为每组数据,分别输出原始木棒的可能最小长度,每组数据占原创 2020-08-11 16:53:47 · 943 阅读 · 0 评论 -
常用的链表手撕代码整理
具体参考大佬的:https://blog.csdn.net/qq_37466121/article/details/88204678#include <iostream>#include <vector>using namespace std;struct listnode{ int val; listnode* next; //listnode(int x):val(x),next(NULL){}};listnode * createnode(int原创 2020-08-10 16:01:42 · 257 阅读 · 0 评论 -
大虎2021软件校招笔试题
1.说明:trip[i][1]为上车点的人数,trip[i][2]为下车点的人数#include <iostream>#include <vector>using namespace std;int minCarCount(vector<vector<int> > trips,int capcity){ vector<int> stations(1001); int len=trips.size(); ..原创 2020-08-09 23:58:34 · 216 阅读 · 0 评论 -
大疆嵌入式软件编程题==找鞍点
2、N X N数组,输出行中最小,列中最大的数的位置,比如:1 2 34 5 67 8 9输出:row=2,col=0#include <iostream>#include <vector>#include <unordered_map>#include <algorithm>using namespace std;typedef pair<int,int> PAIR;int n;bool cmp_by原创 2020-08-09 15:58:09 · 251 阅读 · 0 评论 -
动态规划结题总结
动态规划动态规划组成部分:一、确定状态最后一步:递归解法:递归会重复遍历,递归层次会很高采用动态规划:转态方程(二)动态规划组成部分三:初始条件和边界条件动态规划组成部分:计算顺序总结:#include <iostream>#include <vector>#include <limits.h>using namespace std;//DP 适用于:计数...原创 2020-08-02 23:51:03 · 281 阅读 · 0 评论 -
回文数索引
[编程题]回文数索引给定一个仅由小写字母组成的字符串。现在请找出一个位置,删掉那个字母之后,字符串变成回文。请放心总会有一个合法的解。如果给定的字符串已经是一个回文串,那么输出-1。输入描述:第一行包含T,测试数据的组数。后面跟有T行,每行包含一个字符串。输出描述:如果可以删去一个字母使它变成回文串,则输出任意一个满足条件的删去字母的位置(下标从0开始)。例如:bcc我们可以删掉位置0的b字符。输入例子1:3aaabbaaaaa输出例子1:3.原创 2020-08-01 22:58:47 · 106 阅读 · 0 评论 -
归并算法的总结
1.合并两个有序链表struct node{ int data; struct node* next;};node* merge(node*head,node *head1,node *head2){ node *temp=head; while(head1!=NULL&&head2!=NULL){ if(head1->data<head2->data){ temp->next=head1;原创 2020-07-29 11:22:00 · 150 阅读 · 0 评论