每日一题
通过letcode和牛客里的题提升代码能力
fighting QAQ
及时当勉励,岁月不待人
展开
-
全排列字典序
全排列字典序【牛客剑指offer:字符串的排列】【本题解析】【代码实现】class Solution {public: void DFS(string& str,set<string>& res,int begin){ //边界条件 if(begin == str.size() - 1){ res.insert(str); } for(int i = begin;i <原创 2020-10-25 14:31:42 · 211 阅读 · 0 评论 -
【牛客】链表中环的入口结点,代码原理解析
链表中环的入口结点,代码原理解析【本题链接】题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解题思路1.首先判断是否有环,快指针走两步,慢指针走一步,相遇则有环,快指针走到空,则没有环(前后指针法)2.有环,则让其中一个指针重新指向链表头部,另一指针在相遇位置,两个指针同时出发,每次都走一步,再次相遇的位置就是环节点的入口。代码实现class Solution {public: ListNode* EntryNodeOfLoop(ListNod原创 2020-10-24 20:13:37 · 220 阅读 · 0 评论 -
【牛客】设计LRU缓存结构(map和链表)
【牛客】设计LRU缓存结构(map和链表)[本题链接]题目描述 设计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,表示s原创 2020-09-05 17:05:38 · 207 阅读 · 0 评论 -
【每日一题】旋转打印矩阵
【每日一题】旋转打印矩阵题目描述:二维数组,通过N(1<N<2)来确定矩阵的大小,从右上角开始向下打印,然后向左打印,顺时针完整矩阵填充举例:输入:4输出:输入:8输出:题解:1.通过min,max来控制每一层边解控制2.通过循环控制来给每个位置赋值3.通过count自加,完成按顺序数组自加代码如下:#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<vector>usin原创 2020-08-24 15:12:08 · 265 阅读 · 0 评论 -
易错选择题
1.选择题题一:以 下 for 循 环 的 执 行 次 数 是()。for(x=0,y=0;(y=123)&&(x<4);x++);A 是无限循环B 循环次数不定C 4次D 3次他的回答: A (错误)正确答案: C逗号表达式的要领1.逗号表达式的运算bai过程为:从左往右逐du个计算表达式。2.逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。所以此题考察了逗号表达式,逗号表达式从左往右一次计算,但是此题循环中的判断条件,y=123是个赋值语原创 2020-08-07 22:26:11 · 1606 阅读 · 1 评论 -
【剑指offer】数组中出现次数超过一半的数字(三种解法)
数组中出现次数超过一半的数字【本题链接】【题目描述】题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。【本题解析】解法一:(巧用map,简单高效)本题本来考察的就是出现次数问题。使用Map较为方便,key存储数字值,value存储出现的次数。在数组中读取一个数字后,若Map中不存在相应数字则在Map中添加该数字,并将次数置为原创 2020-06-04 11:40:05 · 278 阅读 · 0 评论 -
【剑指offer】复杂链表的复制(详解 + 两种方法)
【剑指offer】复杂链表的复制【本题链接】【题目描述】输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)【题目分析】本题具有一定难度,主要考查了对于链表的掌握,我们主要使用两种方法解决此题,常规方法逻辑思维比较复杂,对于数据结构的掌控力要求比较高,可以有效的锻炼代码能力和逻辑思维。第二种使用map解决,较为方便原创 2020-05-21 13:27:14 · 2707 阅读 · 3 评论 -
【剑指offer】二叉搜索树的后序遍历序列(举例 + 图解)
【剑指offer】二叉搜索树的后序遍历序列【本题链接】【题目描述】输入一个非空整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。【解题思路】性质:二叉排序树的性质:左子树上所有节点的值均小于它的根节点;右子树上所有节点的值均大于它的根节点。二叉排序树后序遍历的性质:序列最后一个数字是根节点,序列剩余部分分成两部分,前一部分是左子树,后一部分是右子树。举例:判断序列{1,3,2,5,7,6,4}是否是二叉排原创 2020-05-12 11:55:56 · 1175 阅读 · 3 评论 -
【剑指offer】从上往下打印二叉树
【剑指offer】从上往下打印二叉树【本题链接】【题目描述】从上往下打印出二叉树的每个节点,同层节点从左至右打印。【题目解析】本题主要考察了队列、树等数据结构的使用,题目描述已经很清晰了,就是层序遍历这棵树,我们根据队列先进先出的规则来解决此题。【解题思路】1.若树为空,则直接返回数组2.若不为空,则按照根节点,根的左子树节点和右子树节点进行打印3.将根节点进入队列,取到对头的元素放入数组,进行出队操作,根的左节点和右节点依次进入队列(左右节点为空则跳出),将已放入数组的对头结点删除。4原创 2020-05-09 11:35:20 · 750 阅读 · 8 评论 -
【剑指offer】树的子结构(递归+图解)
【剑指offer】树的子结构(递归+详解)【本题链接】【题目描述】输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)【本题解析】本题题意比较明了,主要考察的是树型结构的掌握,一般设计到树型结构的题使用递归是最简单的方法,否则就会比较难以控制代码【解题思路】总体思路:首先根据题意来判断第二颗树是否是第一棵树的子树。则要保证第二棵树的全部节点都...原创 2020-04-26 13:23:33 · 207 阅读 · 0 评论 -
【剑指offer】重建二叉树(递归思想)
【剑指offer】重建二叉树(递归思想)【本题链接】【题目描述】输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。【题目分析】本题主要是对二叉树性质的考察,是否能理解到三种遍历之间的关系是解决此题的关...原创 2020-04-20 12:23:03 · 806 阅读 · 10 评论 -
【剑指offer】从尾到头打印链表(单链表逆置 + 图解 + 单链表实现)
【剑指offer】从尾到头打印链表(单链表逆置)【本题链接】【题目描述】输入一个链表,按链表从尾到头的顺序返回一个ArrayList。【题意解析】本题就是单链表逆置问题,考察了对于链表结构的掌握【解题思路】本题一共有两种解法,一种不改变单链表的结构,另一种改变单链表的结构。【解法一:】最简单的获取链表中各个节点的值,然后在数组中进行逆置操作,则可以从尾到头打印单链表,使用到C...原创 2020-04-18 15:08:11 · 1236 阅读 · 10 评论 -
【剑指offer】替换空格(两种解法)
【剑指offer】替换空格【本题链接】【题目描述】请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We AreHappy.则经过替换之后的字符串为We%20Are%20Happy。【本题解析】这道题题意很明确,就是考察字符串操作的题,有多种解法,我主要说两种解法。【解题方法】方法一:O(n2)的解法常规方法,要在空格处添加一个“%20”,则需要将后面...原创 2020-04-17 11:37:34 · 253 阅读 · 3 评论 -
【剑指offer】二维数组中的查找
【剑指offer】二维数组中的查找【本题链接】【题目描述】在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。【题意分析】题目描述比较简单,从上到下,从左到右依次递增的二维数组中进行查找。【解题思路】1.首先要抓住这个题的特点,那就是从上到下...原创 2020-04-13 13:36:25 · 247 阅读 · 8 评论 -
【牛客网编程题】数位之积(vivo2020届春招编程题)
数位之积(vivo2020届春招编程题)本题链接【题目描述】现给定任意正整数 n,请寻找并输出最小的正整数 m(m>9),使得 m 的各位(个位、十位、百位 … …)之乘积等于n,若不存在则输出 -1。示例1输入36输出49示例2输入100输出455【题意分析】本题题意比较明了,是一个最优解问题,有一定难度,逻辑思路比较复杂。【解题思路】...原创 2020-04-08 11:25:08 · 860 阅读 · 1 评论 -
【牛客易错编程题】把字符串转换成整数
class Solution {public:int StrToInt(string str) {if(str.empty()){return 0;}int symbol = 1;//标记正负号if(str[0] == ‘-’){symbol = -1;str[0] = ‘0’;//字符零占位}if(str[0] == ‘+’){symbol = 1;str[0] ...原创 2020-04-06 11:04:22 · 923 阅读 · 2 评论 -
“牛客一小步,知识成长一大步”【牛客】”不要二”
牛客 ”不要二”本题链接题目描述二货小易有一个W*H的网格盒子,网格的行编号为0H-1,网格的列编号为0W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根小易想知道最多可以放多少块蛋糕在网格盒子里。输...原创 2020-04-04 21:15:52 · 1043 阅读 · 7 评论 -
“牛客一小步,知识成长一大步”【牛客网】连续最大和
【牛客网】连续最大和本题链接题目描述一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。输出描述:所有连续子数组中和最大的值。示例1...原创 2020-04-02 22:05:14 · 202 阅读 · 1 评论 -
“牛客一小步,知识成长一大步”【牛客网】统计回文
【牛客网】统计回文本题链接题目描述“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样...原创 2020-04-01 17:20:38 · 237 阅读 · 1 评论 -
“牛客一小步,知识成长一大步”【牛客】进制转换
进制转换本题链接题目描述给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入描述:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)示例1输入7 2输出111【题意解析】本题题目很简单,题...原创 2020-03-31 15:07:18 · 238 阅读 · 2 评论 -
【牛客网】n个数里出现次数大于等于n/2的数
n个数里出现次数大于等于n/2的数本题链接题目描述输入n个整数,输出出现次数大于等于数组长度一半的数。输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。输出描述:输出出现次数大于等于n/2的数。示例1输入3 9 3 2 5 6 7 3 2 3 3 3输出3#include<iostream>...原创 2020-03-31 14:06:05 · 530 阅读 · 4 评论 -
“牛客一小步,知识成长一大步”【牛客网】字符串中找出连续最长的数字串
【牛客网】字符串中找出连续最长的数字串本题链接题目描述读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例1输入abcd12345ed125ss123456789输出123456789【解题思路】此题是一道比较典型的找子串...原创 2020-03-20 21:44:47 · 232 阅读 · 0 评论 -
【每日一题】倒置字符串
倒置字符串题目描述将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I输入描述:每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100输出描述:依次输出倒置之后的字符串,以空格分割示例1输入I like beijing.输出beijing. like I题目分析此...原创 2020-03-19 15:44:15 · 439 阅读 · 1 评论 -
【牛客网】删除公共子序列
【牛客网】删除公共子序列链接:https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212?tpId=85&&tqId=29868&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking题目描述输入两个字符串,从第一字符串中删除...原创 2020-03-14 15:34:06 · 358 阅读 · 4 评论 -
【牛客】[编程题]组队竞赛
[编程题]组队竞赛本提链接:https://www.nowcoder.com/questionTerminal/6736cc3ffd1444a4a0057dee89be789b?orderByHotValue=1&page=1&onlyReference=false热度指数:3071时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M算法知识...原创 2020-03-13 18:29:38 · 3538 阅读 · 11 评论