![](https://img-blog.csdnimg.cn/20201211193510910.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Algorithm to practice
AC
Rosiness^
BUG 进步的阶梯
展开
-
LeetCode:125. 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falseclass Solution { bool isNumOrChar(char c){ if(tolower(c) >= 'a' && tolo原创 2020-05-19 20:57:16 · 5100 阅读 · 0 评论 -
快慢指针用法习题 LeetCode:202.快乐树
方法:使用“快慢指针”思想找出循环:“快指针”每次走两步,“慢指针”每次走一步,当二者相等时,即为一个循环周期。此时,判断是不是因为1引起的循环,是的话就是快乐数,否则不是快乐数。编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变...原创 2020-02-12 23:35:09 · 5214 阅读 · 1 评论 -
LeetCode:617. 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:输入: Tree 1 Tree 2 ...原创 2020-02-04 00:05:20 · 6670 阅读 · 0 评论 -
LeetCode:7.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−231,231− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。分析方法:弹出...原创 2020-01-17 15:17:20 · 3448 阅读 · 0 评论 -
LeetCode:1007. 行相等的最少多米诺旋转
在一排多米诺骨牌中,A[i]和B[i]分别代表第 i 个多米诺骨牌的上半部分和下半部分。(一个多米诺是两个从 1 到 6 的数字同列平铺形成的—— 该平铺的每一半上都有一个数字。)我们可以旋转第i张多米诺,使得A[i]和B[i]的值交换。返回能使A中所有值或者B中所有值都相同的最小旋转次数。如果无法做到,返回-1.示例 1:输入:A =...原创 2020-01-16 20:42:42 · 5223 阅读 · 0 评论 -
LeetCode:21. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4C++代码:/** * Definition for singly-linked list. * public class ListNod...原创 2020-01-16 20:36:50 · 2327 阅读 · 0 评论 -
LeetCode:791. 自定义字符串排序
字符串S和T只包含小写字符。在S中,所有字符只会出现一次。S已经根据某种规则进行了排序。我们要根据S中的字符顺序对T进行排序。更具体地说,如果S中x在y之前出现,那么返回的字符串中x也应出现在y之前。返回任意一种符合条件的字符串T。示例:输入:S = "cba"T = "abcd"输出: "cbad"解释: S中出现了字符 "a", "b", "c", 所以 "a"...原创 2020-01-14 23:16:18 · 4987 阅读 · 1 评论 -
LeetCode:581. 最短无序连续子数组
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。说明 :输入的数组长度范围在[1, 10,000]。...原创 2020-01-14 23:11:36 · 2671 阅读 · 0 评论 -
LeetCode:1304. 和为零的N个唯一整数
给你一个整数n,请你返回任意一个由n个各不相同的整数组成的数组,并且这n个数相加和为0。示例 1:输入:n = 5输出:[-7,-1,1,3,4]解释:这些数组也是正确的 [-5,-1,1,2,3],[-3,-1,2,-2,4]。示例 2:输入:n = 3输出:[-1,0,1]示例 3:输入:n = 1输出:[0]提...原创 2020-01-14 23:02:47 · 3377 阅读 · 0 评论 -
LeetCode:187.重复的DNA序列解析
所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来查找 DNA 分子中所有出现超过一次的 10 个字母长的序列(子串)。示例:输入:s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"输出:["AAAAACCCCC", "...原创 2020-01-10 22:47:09 · 4970 阅读 · 0 评论 -
LeetCode: 449. 序列化和反序列化二叉搜索树
序列化是将数据结构或对象转换为一系列位的过程,以便它可以存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一个或另一个计算机环境中重建。设计一个算法来序列化和反序列化二叉搜索树。 对序列化/反序列化算法的工作方式没有限制。 您只需确保二叉搜索树可以序列化为字符串,并且可以将该字符串反序列化为最初的二叉搜索树。编码的字符串应尽可能紧凑。注意:不要使用类成员/全局/静态变量来存...原创 2020-01-10 22:45:08 · 3322 阅读 · 0 评论 -
LeetCode:1260.二维网格迁移
给你一个n行m列的二维网格grid和一个整数k。你需要将grid迁移k次。每次「迁移」操作将会引发下述活动:位于grid[i][j]的元素将会移动到grid[i][j + 1]。 位于grid[i][m - 1]的元素将会移动到grid[i + 1][0]。 位于grid[n - 1][m - 1]的元素将会移动到grid[0][0]。请你返回...原创 2020-01-10 22:42:04 · 4968 阅读 · 0 评论 -
203. 移除链表元素
删除链表中等于给定值val的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5删除结点的步骤找到该结点的前一个结点进行删除操作三种方法1.删除头结点时另做考虑(由于头结点没有前一个结点)2.添加一个虚拟头结点,删除头结点就不用另做考虑3...原创 2019-07-17 10:59:20 · 3260 阅读 · 0 评论 -
逛街
小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于等于后面的楼时,后面的楼将被挡住)输入描述:输入第一行将包含一个数字n,代表楼的栋数,接下来的一行将包含n个数字wi(1<=i<=n),...原创 2020-02-18 15:33:10 · 3118 阅读 · 0 评论 -
压缩算法
小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?输入描述:输入第一行包含一个字符串s,代表压...原创 2020-02-18 15:24:14 · 16049 阅读 · 0 评论 -
最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minS...原创 2020-02-17 01:01:30 · 2256 阅读 · 0 评论 -
用两个栈实现一个队列&用两个队列实现一个栈
区别与联系相同点:(1)栈和队列都是控制访问点的线性表;(2)栈和队列都是允许在端点处进行数据的插入和删除的数据结构;不同点:(1)栈遵循“后进先出(LIFO)”的原则,即只能在该线性表的一头进行数据的插入和删除,该位置称为“栈顶”, 而另外一头称为“栈底”;根据该特性,实现栈时用顺序表比较好;(2)队列遵循“先进先出(FIF...原创 2020-02-16 00:21:56 · 2927 阅读 · 0 评论 -
C/S模式和B/S模式区别及其优缺点
1.C/S模式C/S模式又称C/S结构, 是软件系统体系结构的一种. C/S模式与B/S模式相比, C/S模式应用系统最大的优点是不依赖企业外网环境, 即无论企业是否能够上网, 都不影响使用.C/S模式需要安装后才能使用, 即以软件的形式存在优点:1. 由于客户端实现与服务端的直接相连, 没有中间环节, 因此响应速度快 2. 操作界面漂亮, 形式多样, 可以充分满足客户...原创 2020-02-13 00:30:15 · 28312 阅读 · 0 评论 -
小易的字典--牛客网--面试题
题目描述小易在学校中学习了关于字符串的理论, 于是他基于此完成了一个字典的项目。小易的这个字典很奇特, 字典内的每个单词都包含n个'a'和m个'z', 并且所有单词按照字典序排列。小易现在希望你能帮他找出第k个单词是什么。输入描述:输入包括一行三个整数n, m, k(1 <= n, m <= 100, 1 <= k <= 109), 以空格分割...原创 2020-02-12 22:10:46 · 2773 阅读 · 0 评论 -
塔--牛客网--面试题
题目描述小易有一些立方体,每个立方体的边长为1,他用这些立方体搭了一些塔。现在小易定义:这些塔的不稳定值为它们之中最高的塔与最低的塔的高度差。小易想让这些塔尽量稳定,所以他进行了如下操作:每次从某座塔上取下一块立方体,并把它放到另一座塔上。注意,小易不会把立方体放到它原本的那座塔上,因为他认为这样毫无意义。现在小易想要知道,他进行了不超过k次操作之后,不稳定值最小是多少。输...原创 2020-02-12 22:09:00 · 3050 阅读 · 0 评论 -
表达式求值--牛客网--面试题
题目描述今天上课,老师教了小易怎么计算加法和乘法,乘法的优先级大于加法,但是如果一个运算加了括号,那么它的优先级是最高的。例如:1+2*3=71*(2+3)=51*2*3=6(1+2)*3=9现在小易希望你帮他计算给定3个数a,b,c,在它们中间添加"+", "*", "(", ")"符号,能够获得的最大值。输入描述:一行三个数a,b,c (1 <= a, b,...原创 2020-02-12 22:07:50 · 2839 阅读 · 0 评论 -
整理房间--牛客网--面试题
题目描述又到了周末,小易的房间乱得一团糟。他希望将地上的杂物稍微整理下,使每团杂物看起来都紧凑一些,没有那么乱。地上一共有n团杂物,每团杂物都包含4个物品。第i物品的坐标用(ai,bi)表示,小易每次都可以将它绕着(xi,yi)逆时针旋转90^ \circ90∘,这将消耗他的一次移动次数。如果一团杂物的4个点构成了一个面积不为0的正方形,我们说它是紧凑的。因为小易很懒,所以他希望你...原创 2020-02-12 22:06:17 · 2856 阅读 · 0 评论 -
丰收--牛客网--面试题
题目描述又到了丰收的季节,恰逢小易去牛牛的果园里游玩。牛牛常说他对整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛。在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第x个苹果是属于哪一堆的。牛牛觉得这个问题太简单,所以希望你来替他回答。输入描述:第一行一个数n(1 <= n <= 105)。第二行n个数ai(1 <= ai<...原创 2020-02-12 22:04:32 · 2472 阅读 · 0 评论 -
瞌睡--牛客网--面试题
题目描述小易觉得高数课太无聊了,决定睡觉。不过他对课上的一些内容挺感兴趣,所以希望你在老师讲到有趣的部分的时候叫醒他一下。你知道了小易对一堂课每分钟知识点的感兴趣程度,并以分数量化,以及他在这堂课上每分钟是否会睡着,你可以叫醒他一次,这会使得他在接下来的k分钟内保持清醒。你需要选择一种方案最大化小易这堂课听到的知识点分值。输入描述:第一行 n, k (1 <= n, k <...原创 2020-02-12 22:03:22 · 2531 阅读 · 0 评论 -
俄罗斯方块--牛客网--面试题
俄罗斯方块小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的方块会叠在先前的方块之上,当一整行方块都被占满时,这一行会被消去,并得到1分。有一天,小易又开了一局游戏,当玩到第 m 个方块落下时他觉得太无聊就关掉了,小易希望你告诉他这局游戏他获得的...原创 2020-02-12 22:00:55 · 2430 阅读 · 0 评论 -
面试例题1
下面c++代码的输出结果是什么?int i=1;void main(){ int i=i;}A. main()里的i是一个未定义的值B.main()里的i值为1C.编译器不允许这种写法D.main()里的i值为0答案A解析当面试者看到int i=1,i变量从声明的那一刻开始就是可见的了,main()里的i不是1,因为它和mian()外的i无关...原创 2019-07-12 14:45:32 · 2286 阅读 · 0 评论 -
递归实现指数型枚举--(普及组--递归)
题目描述 从1−n 这n个整数中随机选取任意多个,每种方案里的数从小到大排列,按字典序输出所有可能的选择方案。输入 输入一个整数n。(1≤n≤10)输出 每行一组方案,每组方案中两个数之间用空格分隔。 注意每行最后一个数后没有空格。样例输入3样例输出11 21 2 31 322 33样例输入24样例输出21...原创 2020-02-10 17:12:45 · 294 阅读 · 0 评论 -
猴子选大王--(入门组--结构体)
题目描述 有n只猴子围成一个圈,从1~n编号,大家决定从中选出一个大王。经过协商,决定选大王的规则为: 从编号为1的猴子开始报数,报到kk的猴子出圈,然后再从下一只开始继续报1到k……最后剩下来的那一只就是大王。 要求编程从键盘输入n、k,输出成为大王的猴子编号。输入 一行两个正整数n和k,2≤n≤1000,2≤k≤输出 一行一个正整数,代表猴王的编号。样...原创 2020-02-10 17:08:58 · 587 阅读 · 0 评论 -
成绩统计--(入门组--结构体)
题目描述 兴趣小组收集学员成绩信息,每个学员的成绩用两种表示方法,一种用best、good、poor三种等级来表示,还有一种就是直接用分数来表示(百分制)。 请保存学员成绩信息,并且统计有多少人使用等级来表示成绩的,用分数来表示成绩的人的平均分是多少(取整)。输入 第1行一个正整数n,表示学员人数n≤1000。 第2~n+1,每行一个字符和一个字符串,中间用一个...原创 2020-02-10 17:02:50 · 1021 阅读 · 0 评论 -
注册账号
题目描述 在某网站收集了n个人的注册账号,账号类型有身份证号或者QQ号两种。 请编程用恰当的数据结构保存信息,并统计身份证中男性和女性的人数,以及QQ账号的平均值(取整)。 提示:身份证号码中倒数第二位若为奇数则表示男性,若为偶数则表示女性。输入 第1行,一个正整数n,1≤n≤10000; 下面n行,每行一个字符和一个字符串。第一个字符表示账号类型,有...原创 2020-02-10 16:57:24 · 8250 阅读 · 0 评论 -
最大子序和
题目描述 输入一个长度为n的整数序列,从中找出一段不超过M的连续子序列,使得整个序列的和最大。 例如1,−3,5,1,−2,3: 当 m=4时,S=5+1−2+3=7; 当 m=2或 m=3时,S=5+1=6。输入 第一行两个数 n,m。 第二行有n个数,要求在n个数找到最大子序和。输出 一个数,数出他们的最大子序和。...原创 2020-02-09 19:12:14 · 134 阅读 · 0 评论 -
三角函数
题目描述 输入一组勾股数a,b,c(a≠b≠c),用分数格式输出其较小锐角的正弦值(要求约分)。输入 一行,包含三个数,即勾股数a,b,c(无大小顺序)。输出 一行,包含一个数,即较小锐角的正弦值(约分后的分数)。样例输入3 5 4样例输出3/5数据规模与约定 时间限制:1 s 内存限制:256 M 100%的数据保证(1≤a,b...原创 2020-02-09 19:00:10 · 500 阅读 · 0 评论 -
车厢重组
题目描述 在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。 一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列,车厢编号在1∼N。 他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最...原创 2020-02-09 18:51:51 · 361 阅读 · 0 评论 -
幸运数的划分
题目描述 判断一个正整数n是否能被一个"幸运数"整除。幸运数是指一个只包含4或7的正整数。如:7、47、477等都是幸运数,17、42则不是幸运数。输入 一行一个正整数n,1≤n≤1000。输出 一行一个字符串,如果能被幸运数整除输出"YES";否则,输出"NO"。样例输入47样例输出YES数据规模与约定 时间限制:1 s 内存限制:2...原创 2020-02-09 16:05:22 · 21424 阅读 · 1 评论 -
比身高
题目描述 有N个人排成一排,假设他们的身高均为正整数,请找出其中符合以下条件的人: 排在他前面且比他高的人数与排在他后面且比他高的人数相等。输入 第一行为一个正整数N,1<N<1000,表示有多少个人。 下面N行,每行一个正整数,表示从前往后每个人的身高,假设第i个人的身高为Hi(1≤Hi≤10000)。输出 一行一个整数,表示满足这个条件的...原创 2020-02-09 15:34:38 · 2100 阅读 · 0 评论 -
插队问题
题目描述 有n个人(每个人有一个唯一的编号,用1~n之间的整数表示)在一个水龙头前排队准备接水,现在第n个人有特殊情况,经过协商,大家允许他插队到第x个位置。输出第n个人插队后的排队情况。输入 第一行1个正整数nn,表示有n个人,2<n≤100 第二行包含nn个正整数,之间用一个空格隔开,表示排在队伍中的第1~第n个人的编号。 第三行包含1个正整数x,表示...原创 2020-02-09 15:28:42 · 2836 阅读 · 0 评论 -
安装雷达
题目描述 地图xx轴的上方为海,下方为陆地,海中有n个小岛,坐标分别为(Xi,Yi)。有一种雷达,能探测到的范围为以d为半径的圆。问海岸线上至少造多少雷达可以把所有的小岛都处在探测范围内。注意雷达是建在海岸线上的,也就是x轴上的。输入 第一行输入两个数n,d。(1≤n≤1000) 接下来n行,每行两个数代表小岛的坐标。(−1000≤Xi,Yi≤1000)...原创 2019-07-12 10:40:21 · 484 阅读 · 0 评论 -
二分查找代码讲解
#include<stdio.h>int binary_search(int *arr,int n,int x){ int head=0,tail=n-1,mid;//定义头尾指针和中间指针 while(head<=tail){ mid=(head+tail)>>1;//中间指针等于头尾指针相加的一半 if(arr[mid]==x) return mi...原创 2019-07-12 12:11:28 · 457 阅读 · 0 评论 -
最大异或对
题目描述 在给定的N个整数 A1,A2……AN中选出两个进行异或运算,得到的结果最大是多少?输入 第一行一个整数N,第二行N个整数A1−AN。输出 输出一个整数表示答案。样例输入31 2 3样例输出3样例输入10181262 369842 1036879 546331 868986 496157 646816 459571 ...原创 2019-07-25 15:52:36 · 303 阅读 · 0 评论 -
输出A字菱形
输出A字菱形题目描述 输入一个正整数n,并输出一个菱形,这个菱形有 2n−1行,第一行有2个字母A,之后的n−1行每行字母A的数量会递增2个,后面的n+1行至 2n−1行,每行字母A的数量会递减2个,同时,我们需要在每行前输出一定数量的空格,以保证菱形居中,注意末尾不要有多余的输出。输入 输入一个正整数nn。(0<n<40)输出...原创 2019-07-30 22:49:42 · 901 阅读 · 0 评论