![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode试题
dpf_xa_ca
初出茅庐
展开
-
牛客网 汽水瓶 编程题 —— C++ 《完整代码加分析》
一,二,三,程序运行结果四,原创 2020-09-09 14:45:45 · 844 阅读 · 1 评论 -
牛客网 完全数计算 编程题 —— C++ 《完整代码加分析》
一,题目描述完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身,例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。给定函数count(int n),用于计算n以内(含n)完全数的个数。计算范围, 0 < n <= 500000返回n以内完全数的个数。 异常情况返回-1/** 完全数(Perfect number),又称完美数或完备数原创 2020-09-07 23:31:57 · 807 阅读 · 0 评论 -
牛客网 计算日期到天数的转换 编程题 —— C++ 《完整代码加分析》
一,题目描述根据输入的日期,计算是这一年的第几天。。详细描述:输入某年某月某日,判断这一天是这一年的第几天?。接口设计及说明: /***************************************************************************** Description : 数据转换 Input Param : year 输入年份 Month 输入月份 Day 输入天原创 2020-07-18 18:15:35 · 381 阅读 · 0 评论 -
牛客网 查找组成一个偶数最接近的两个素数 编程题—— C++ 《完整代码加分析》
一,题目描述任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对输入描述:输入一个偶数输出描述:输出两个素数示例1输入20输出713二,程序分析1,本题首先需要判断素数,素数表示除过1和本身,不能被其它数整除。2,通过循环遍历来判断一个数是否为素数。3,找到最近的两个素数,那么应该从最中间的位置开始向两边查找。三,程序代码#include<iostream>#include原创 2020-07-15 15:28:26 · 351 阅读 · 0 评论 -
牛客网 二进制插入编程题 —— C++ 《完整代码加分析》
一,题目描述有两个32位整数n和m,请编写算法将m的二进制数位插入到n的二进制的第j到第i位,其中二进制的位数从低位数到高位且以0开始。给定两个数int n和int m,同时给定int j和int i,意义如题所述,请返回操作后的数,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1。测试样例:1024,19,2,6返回:1100二,程序分析i jm:1024:100000000 00 n:19 : 10011 要把n的二进制值插入m的第j位到第i位,只需要把n先左移j位,原创 2020-07-15 14:49:57 · 226 阅读 · 0 评论 -
牛客网 编程题 —— C++ 求最大连续bit数 《完整代码加分析》
一,题目描述功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1输入: 一个byte型的数字输出: 无返回: 对应的二进制数字中1的最大连续数输入描述:输入一个byte数字输出描述:输出转成二进制之后连续1的个数示例1输入3输出2二,程序分析1. 看到这个题目之后,还是比较简单的,下来我们来分析一下。2. 根据位运算,获取每一位的二进制值。获取第i位的值: (n >> i) & 1。如果1连续,则原创 2020-07-11 22:47:30 · 344 阅读 · 0 评论 -
牛客网 编程题 —— C++ 最近的公共祖先 《完整代码加分析》
一,题目描述有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。给定两个int a,b。为给定结点的编号。请返回a和b的最近公共祖先的编号。注意这里结点本身也可认为是其祖先。测试样例:2,3返回:1二,程序分析1.题目所描述的满二叉树如下: 1 / \ 2 3 / \ / \ 4 5 6 7 上述树中子节点与父节点之间的关系为root = child / 2。2.所以如果a != b,就原创 2020-07-11 22:03:27 · 338 阅读 · 0 评论 -
牛客网 编程题 ——C ++ 井字棋 《 完整代码加分析 》
一,题目描述对于一个给定的井字棋棋盘,请设计一个高效算法判断当前玩家是否获胜。给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代表是对方玩家的棋子。测试样例:[[1,0,1],[1,-1,-1],[1,-1,0]]返回:true二,程序分析井字棋有四种情况表示当前玩家获胜,1 代表当前玩家棋子1. 行全为1, 即行的和为32. 列全为1, 列的和为3. 主对角全为1, 对角和为3 4. 副对角全为1, 对角和为3 5. 如果扩原创 2020-07-11 21:07:08 · 594 阅读 · 0 评论 -
牛客网 编程题 —— C++ 求路径总数(JAVA 题目2-3级) 《完整代码加分析》
一,题目描述请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。输入描述:输入两个正整数输出描述:返回结果示例1输入22输出6二,程序分析1.首先,我开始以为走的是格子,但是像例题给的样子,怎么也走不下去,比如,2*2的格子,我走就是2不,但是答案是6个,后来想了一下,这个不是走格子,是走格子外面的边,所以,我们要按照这个思原创 2020-07-10 21:55:47 · 523 阅读 · 0 评论 -
牛客网 编程题——C++ 另类加法《完整代码加分析》
一,题目描述请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。给定两个int A和B。请返回A+B的值测试样例:1,2返回:3二,程序分析1.这个题还是比较容易的,首先考虑的是两者的相加,然后进行按位与的计算,得出结果。2.但是,又因为有进位的计算,所以就要考虑仅为的问题,所以我们要按照与运算,来进行考虑,最后,两者进行相加,结束。3.3. 两个数相加:对应二进制位相加的结果 + 进位的结果比如:3 + 2 --> 0011 + 0010 --> 0011 ^ 0原创 2020-07-05 17:59:31 · 288 阅读 · 0 评论 -
牛客网 编程题——C++求最小公倍数 《完整代码加分析》
一,题目描述正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。示例1输入5 7输出35二,程序分析1.最小公倍数 = 两数之积除以最大公约数2.即a与b的最大公约数,可以转化为a、b之间的余数为两者之间最小的数之间的公约数。所以对于输入的两个数进行连续求余,直到余数为0,求余的分母即为结果。3.所以根据这个原理,解题思路还是比较清晰的,编程过程也是可以原创 2020-07-01 19:08:28 · 812 阅读 · 0 评论 -
牛客网 编程题—— C++ 两种排序算法 《完整代码加分析》
一,题目描述:考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法:1.根据字符串的字典序排序。例如:“car” < “carriage” < “cats” < "doggies < “koala”2.根据字符串的长度排序。例如:“car” < “cats” < “koala” < “doggies” < “carriage”考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,所以需要你原创 2020-07-01 18:47:40 · 337 阅读 · 0 评论 -
牛客网 编程题 —— C++ 合法括号序列判断 《完整代码加分析》
一,题目描述对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。测试样例:"(()())",6返回:true测试样例:"()a()()",7返回:false测试样例:"()(()()",7返回:false二,程序分析1.首先看到这个题目,能想到的就是括号匹配的问题,那么,我们想怎么能够实现这样呢,所以我们可以使用栈的方法,来进行。2.我们可以让括号的一遍,进行入栈,然后,继续入栈原创 2020-06-29 18:14:22 · 796 阅读 · 0 评论 -
牛客网 编程题——C++ Fibonacci数列 《完整代码加分析》
一,题目描述Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。输入描述:输入为一个正整数N(1原创 2020-06-29 17:21:01 · 597 阅读 · 1 评论 -
牛客网 编程题—— C++ 字符串转成整数【 完整代码加分析 】
一,题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+21474836471a33输出21474836470二,程序分析1.首先遇到这个题,我们首先能想到的使用atoi进行转化,到那时这个题目不让使用,所以,就是让我们来实现这个功能。2.我们可以开始判断这个字符串有三给方面,空字符串,,负字原创 2020-06-27 19:21:20 · 492 阅读 · 1 评论 -
牛客网——C++ 不要二【 完整代码加分析 】
一,题目描述二货小易有一个W*H的网格盒子,网格的行编号为0H-1,网格的列编号为0W-每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根小易想知道最多可以放多少块蛋糕在网格盒子里。输入描述:每组数组包含网格长宽W,H,用空格分割.(1 ≤ W、H ≤ 1000)输出描述:输出一个最多可以放的蛋糕数示例1输入3 2原创 2020-06-27 18:47:46 · 327 阅读 · 0 评论 -
牛客网——C++ 连续最大和【 完整代码加分析 】
一,题目描述一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。输出描述:所有连续子数组中和最大的值。示例1输入复制3 -1 2 1输出复制3二,三,程序代码#include<iostream>#include<vec原创 2020-06-20 23:13:31 · 1774 阅读 · 0 评论 -
牛客网——统计回文【完整分析加代码】
一,题目描述“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。例如:A = “aba”,B = “b”。这里有4种把B插入A的办法:* 在A的第一个字母之前: "baba" 不是回文*原创 2020-06-18 21:21:36 · 243 阅读 · 0 评论 -
牛客网——C++进制转换【完整分析加代码】
一,题目描述给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入描述:输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。输出描述:为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)示例1输入7 2输出111二,程序分析看到此题,如果对进制不太清楚的话,我们肯定一般不会有什么想法,但是,大家可以看一下我的思路,应该很快就能看懂。1,首先,我们创建两个字符串,一个是保留计算结原创 2020-06-10 16:21:56 · 534 阅读 · 1 评论 -
牛客网——C++计算糖果【完整分析加代码】
一,题目描述A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。输入描述:输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。输出描述:原创 2020-06-10 15:22:47 · 779 阅读 · 0 评论 -
牛客网——C++ 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二,程序分析创建变量,和一个变量数组vector。将输入变量的数值插入到数组中,并且进行排序。根据题意,多的数肯定比这个数组的一半长,那么原创 2020-06-07 19:41:41 · 514 阅读 · 0 评论 -
牛客网——C++字符串中找出连续最长的数字串【完整分析加代码】
《 《《《 感觉不错,关注一个再走。》》》》题目描述:读入一个字符串str,输出字符串str中的连续最长的数字串。输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例1:输入abcd12345ed125ss123456789输出123456789解题思想:1.首先,我们看到这个题的首先想法是将字符串输入,然后将现有的数字长度进行比较,找到最长的数字串,最后输出结果,所以我们首先创建三个字符变量,【str原创 2020-06-07 18:57:35 · 1208 阅读 · 0 评论 -
C++ 牛客网 链表分割 《完整分析 加 完整代码》
题目描述:编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。题目分析:首先我们根据题意可以分析 这个题整体需要我们把一个链表要分为两部分,然后有将组合。下来我们就整体分析: 我们首先可以创建两个新的链表,然后在创建这两个新链表的...原创 2020-01-17 11:53:59 · 371 阅读 · 0 评论 -
牛客网 —— 栈的压入、弹出序列 c++《解题分析和完整解题步骤》
首先,我们先看一下题目的要求:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所 有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)现在我们先分析一下:第一步:我们首先明白栈的特点是:...原创 2019-04-15 23:00:17 · 391 阅读 · 1 评论 -
牛客网 链表中倒数第k个结点 《 两种想法加代码 》
题目描述输入一个链表,输出该链表中倒数第k个结点。想法1;第一步: 我们应该先创建两个 指针,一个指针快,一个指针慢,第二步: 我们先让快指针走 k-1 步,然后让快指针和慢指针同时走,当快指针走到next->NULL时,那么慢指针刚好走到倒数第k个节点。同学可以试一试,在纸上面画一画。就可以很快思考出来了。想法2:第一步:我们可以先用一个计数《count》,把链表先遍历一...原创 2019-03-20 22:59:56 · 103 阅读 · 0 评论 -
876 LeedCode 链表的中间节点 《C语言》 完整分析加代码
首先 :我们先看一下题目的要求,给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.v...原创 2019-03-21 18:03:31 · 232 阅读 · 0 评论 -
206 LeetCode 反转链表《C语言》分析加代码
首先先看以下题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL想法分析:我们看到这个题,感觉很简单,但是一定要考虑边界问题,就是当heap节点为NULL,或者heap的next为NULL,直接返回 heap节点。然后用递归的想法,将链表遍历一遍就可以了,下...原创 2019-03-21 18:20:42 · 227 阅读 · 0 评论 -
203 LeetCode 移除链表元素 《C语言和C++代码》
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5下面是完整代码;C语言/** * Definition for singly-linked list. * struct ListNode { * int val; *...原创 2019-03-18 23:10:59 · 240 阅读 · 0 评论 -
LeedCode 155 最小栈 C语言 《 实现代码 》
首先,这里面用的是C语言写的,如果需要c++实现,我把链接放在下面:c++实现链接:https://blog.csdn.net/dpfxaca6/article/details/89312214我们可以先看一下题目:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top()...原创 2019-04-15 23:12:25 · 806 阅读 · 0 评论 -
LeedCode 150 逆波兰表达式求值 c++ 《接解题分析加实现代码》
和前面的一样,我们先看下题目的要求:根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 +...原创 2019-04-16 09:40:16 · 218 阅读 · 0 评论 -
LeedCode 144. 二叉树的前序遍历 C/C++《两种语言实现》加 《非递归实现》
和前面的一样,我们先看一下题目:给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]首先我们先给出C语言的实现代码:/** * Definition for a binary tree node. * struct TreeNode { * int val;...原创 2019-04-16 10:33:43 · 301 阅读 · 0 评论 -
LeedCode 155 最小栈 c++ 《分析和完整的解题步骤》
c++解法:我们先看一下题目的要求:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-...原创 2019-04-15 15:02:41 · 214 阅读 · 0 评论 -
21 LeetCode 合并两给有序链表 《C语言》《完整分析 加 代码》
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思想:首先,看到这给题目,我想信大多数同学都是想着直接把两给链表合并成一个链表,但是如果你仔细看到,它不仅仅是直接合并,而且是按照谁小谁在前面,所以,我们要认真思...原创 2019-03-20 20:14:31 · 185 阅读 · 0 评论