程序员面试宝典
长安挨踢民工
这个作者很懒,什么都没留下…
展开
-
CM66——最小调整有序
一题目给定一个int整数数组A及其大小n,请编写一个函数,找出索引m和n,只要将m和n之间的元素排好序,整个数组就是有序的。注意:n-m应该越小越好,即找出符合条件的最短序列。请返回一个二元组,元组的两个元素分别代表所求序列的起点和终点。(原序列位置从0开始标号,若原序列有序,返回[0,0])。要求A中元素均为正整数。测试样例:[1,4,6,5,9,10],6返回:[2,3]二题解class Rearrange {public: vector<int> f原创 2021-01-14 09:48:58 · 451 阅读 · 0 评论 -
CM62-井字棋-【数组】
一 题目描述给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及井字棋规则),返回当前玩家是否胜出。测试样例:[[1,0,1],[1,-1,-1],[1,-1,0]]返回:true二 题解://扩展到N阶的棋盘同样适用;class Board {public: bool checkWon(vector<vector<int> > boa原创 2020-11-07 13:30:09 · 299 阅读 · 0 评论 -
CM7-清除行列-【数组】
一 题目描述输入一个NxN矩阵,如果某个元素值为0,则将该行、该列元素值置0,最后输出该矩阵测试用例:输入[[1,2,3],[0,1,2],[0,0,1]]输出:[[0,0,3],[0,0,0],[0,0,0]]二 题解class Clearer {public: vector<vector<int> > clearZero(vector<vector<int> > mat, int n) { vector<原创 2020-11-06 16:02:47 · 102 阅读 · 0 评论 -
CM6-像素翻转-【数组】
一 题目描述现有一个NxN的矩阵,阶数为N,请编写一个算法将矩阵顺时针旋转90度并将其作为返回值。要求不使用缓存矩阵,保证N不大于500,元素不大于256,每个元素用int表示。 测试样例: [[1,2,3],[4,5,6],[7,8,9]],3返回:[[7,4,1],[8,5,2],[9,6,3]]二 题解 :直接找规律转换class Transform {public: vector<vector<int> > transformImage(v..原创 2020-11-06 15:03:45 · 111 阅读 · 0 评论 -
CM80-字符串变换-【字符串】
一 题目题目描述 给定一个string数组dic及数组大小n,同时给定字典中的两个字符串串s和串t,为将s变到t,每次可以改变s中的任意一个字符,请返回由s到t变换所需的最少步数。同时需要满足在变换过程中的每个串都是字典中的串。若无法变换到t则返回-1。保证字符串长度均小于等于10,字典中字符串数量小于等于500。测试样例: ["abc","adc","bdc","aaa”],4,”abc","bdc"返回:2二 题解class Change {public: /* 检查..原创 2020-10-30 15:46:58 · 224 阅读 · 0 评论 -
CM78-字串判断-【字符串】
一 题目描述题目描述 给定一个string数组p及其大小n,同时给定长字符串string s,请返回一个bool数组,元素为true或false对应p中的对应字符串是否为s的子串。要求p中的串长度小于等于8,且p中的串的个数小于等于500,同时要求s的长度小于等于1000。测试样例: ["a","b","c","d"],4,"abc"返回:[true,true,true,false]二 题解利用字符串的find的函数查找class Substr {public: ve..原创 2020-10-29 11:35:02 · 425 阅读 · 0 评论 -
CM77-最长合成字符串-【字符串】
一 题目描述给定一个string数组str及其大小n。请编写一段代码找出该数组中最长的那个字符串,且要求该字符串能由数组中其他的字符串组成(使用的字符串可重复)。请返回满足要求的最长字符串的长度,保证题意所述的最长单词存在。测试样例: ["a","b","c","ab","bc","abc"],6返回:3二 题解先将字符串数组根据字符串长度进行递减排序,然后遍历字符串数组,对当前字符串首先判断其是否能由数组中其它字符串组成,如果能,返回当前字符串长度,不能返回-1。class...原创 2020-10-28 21:05:24 · 485 阅读 · 0 评论 -
CM76-单词最近距离-【字符串】
一 题目描述给定一个string数组article(由单词构成)和数组中元素的个数n,同时给定数组中的两个单词x和y。请返回这两个单词的最短距离(比如两个单词分别在第1和第3个位置,则最短距离为2)。保证两个单词不相同且均在数组中出现,同时保证数组中单词数小于等于1000二 题解暴力法:class Distance {public: int getDistance(vector<string> article, int n, string x, string y) .原创 2020-10-28 19:59:25 · 140 阅读 · 0 评论 -
CM69-词频统计-【字符串】
一 题目描述给定一个string数组article及其大小n及一个待统计单词word,请返回该单词在数组中出现的频数。文章的词数在1000以内。二 题解遍历字符串数组,统计word出现的次数class Frequency {public: int getFrequency(vector<string> article, int n, string word) { // write code here map<string,int&原创 2020-10-28 19:19:37 · 364 阅读 · 0 评论 -
CM53-变位词排序- 【字符串】
一 题目描述给出一个string的数组str及其大小int n,对其进行排序,将所有变位词合并,保留其字典序最小的一个串。变位词指的是变换其字母顺序所构成的新的词或短语,并返回排序合并后的数组。要求字符串长度不大于20,数组大小小于等于300。测试样例: ["ab","ba","abc","cba"]返回:["ab","abc"]二 题解先将字符串数组进行排序,然后变量每个字符串:先排序,然后加入到集合中(集合中不存在该元素的前提下),同时将未排序的字符串加入到返回数组中。这样集合中..原创 2020-10-28 19:09:36 · 97 阅读 · 0 评论 -
CM46-合法括号序列判断-【字符串】
一 题目描述给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。测试样例:"(()())",6返回:true测试样例:"()a()()",7返回:false测试样例:"()(()()",7返回:false二 题解class Parenthesis {public: bool chkParenthesis(string A, int n) { // write code here原创 2020-10-17 16:56:01 · 177 阅读 · 0 评论 -
CM8-翻转字串-【字符串】
一 题目描述给定2个字符串s1和s2,请判断s2是否为s1旋转而成,返回bool值。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。测试样例:"Hello world","worldhello "返回:false,因为在s2中末尾多了个空格字符"waterbottle","erbottlewat"返回:true二 题解class ReverseEqual {public: bool checkReverseEqual(strin.原创 2020-10-17 15:08:15 · 129 阅读 · 0 评论 -
CM5-基本字符串压缩-【字符串】
一 题目描述现给定一个string iniString字符串(长度小于等于10000),请按连续重复字母压缩的方式将该字符串压缩,返回结果为string,比如,字符串“aabbcccccaaa”经压缩会变成“a2b2c5a3”,若压缩后的字符串没有变短,则返回原先的字符串。注意保证串内字符均由大小写英文字母组成。测试样例"aabcccccaaa"返回:"a2b1c5a3""welcometonowcoderrrrr"返回:"welcometonowcoderrrrr"二原创 2020-10-17 14:40:31 · 88 阅读 · 0 评论 -
CM3-确定两串乱序同构-【字符串】
一 题目描述二 题解class Same {public: void sortString(string &str){ //选择排序 int k,tmp; for(int i=0; i< str.size()-1; i++){ k = i; for(int j=i+1; j< str.size();j++){ if(str[j] <.原创 2020-10-17 11:43:17 · 104 阅读 · 0 评论 -
CM2-原串翻转-【字符串】
一 题目描述二 题解class Reverse {public: string reverseString(string iniString) { // write code here int begin = 0,end = iniString.size() - 1; char temp; while(begin < end){ //首末字符进行交换 temp = .原创 2020-10-17 11:20:03 · 74 阅读 · 0 评论 -
CM1-确定字符互异-【字符串】
一 题目描述二 题解class Different {public: bool checkDifferent(string iniString) { //遍历字符串,使用map统计每个字符出现的次数 map<char,int> pairs; for(int i=0; i<iniString.size(); i++){ pairs[iniString[i]]++; } .原创 2020-10-17 10:46:51 · 139 阅读 · 0 评论 -
CM4-空格替换-【字符串】
一、题目描述二、题解class Replacement {public: string replaceSpace(string iniString, int length) {//形参为字符串变量,不是字符数组 string tmp; for(int i=0; i<length; i++){ if(iniString[i] == ' '){ tmp = tmp + "%20"; .原创 2020-10-17 10:35:41 · 324 阅读 · 0 评论