牛客+LeetCode
牛客网、LeetCode刷题
lh_lyh
这个作者很懒,什么都没留下…
展开
-
LeetCode 98. 验证二叉搜索树
题目给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输出...原创 2019-08-28 18:59:50 · 130 阅读 · 0 评论 -
LeetCode 523. 连续的子数组和
题目给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。示例 1:输入: [23,2,4,6,7], k = 6输出: True解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。示例 2:输入: [23,2,6,4,7], k = 6输出: True解...原创 2019-08-21 16:22:11 · 292 阅读 · 0 评论 -
LeetCode 41. 缺失的第一个正数
题目给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。相似题目:LeetCode 448. 找到所有数组中消失的数字、LeetCode 442. 数组中...原创 2019-08-20 22:05:32 · 177 阅读 · 0 评论 -
LeetCode 442. 数组中重复的数据
题目给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。找到所有出现两次的元素。你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入:[4,3,2,7,8,2,3,1]输出:[2,3]类似LeetCode 448. 找到所有数组中消失的数字思路一如果数字是重复的,就加了两次n,和就大于2n ...原创 2019-08-20 17:58:44 · 180 阅读 · 0 评论 -
LeetCode 448. 找到所有数组中消失的数字
题目给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]思路一不准使用额外...原创 2019-08-20 16:25:43 · 163 阅读 · 0 评论 -
LeetCode 1025.除数博弈
题目爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 false。假设两个玩家都以最佳状态参与游...原创 2019-08-02 17:12:21 · 249 阅读 · 0 评论 -
LeetCode 746. 使用最小花费爬楼梯
题目数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i] (索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从co...原创 2019-08-02 16:14:55 · 123 阅读 · 0 评论 -
LeetCode 53. 最大子序和
题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。思路当前值加或不加取决于前面的连续子序和sum是否大于0,如果大...原创 2019-08-02 14:14:46 · 84 阅读 · 0 评论 -
LeetCode 198. 213. 337. 打家劫舍系列
题目一 198.你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ...原创 2019-08-02 10:41:07 · 162 阅读 · 0 评论 -
LeetCode 300. 最长上升子序列
题目给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?思路一:时间复...原创 2019-08-01 18:43:05 · 178 阅读 · 0 评论 -
LeetCode 887. 鸡蛋掉落
题目你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X...原创 2019-07-22 22:22:51 · 342 阅读 · 0 评论 -
LeetCode 222. 完全二叉树的节点个数
题目给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入: 1 / \ 2 3 / \ /4 5 6输出: 6思路一:递归左子树的个数加右子树的个数...原创 2019-07-22 17:32:41 · 122 阅读 · 0 评论 -
LeetCode 72. 编辑距离
题目给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = “horse”, word2 = “ros”输出: 3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删...原创 2019-07-19 16:00:54 · 111 阅读 · 0 评论 -
LeetCode 845. 数组中的最长山脉
题目我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”:B.length >= 3存在 0 < i < B.length - 1 使得 B[0] < B[1] < … B[i-1] < B[i] > B[i+1] > … > B[B.length - 1](注意:B 可以是 A 的任意子数组,包括整个数组 A。)给...原创 2019-07-19 10:09:20 · 294 阅读 · 0 评论 -
最长连续序列O(n)
算法思想:这些数字用一个 哈希表(unordered_map) 保存(或者用 Python 里的 Set),实现 O(1)时间的查询,同时,我们只对当前数字 - 1 不在哈希表里的数字,作为连续序列的第一个数字去找对应的最长序列,这是因为其他数字一定已经出现在了某个序列里。 int longestConsecutive(vector<int>& nums) { ...原创 2019-06-17 10:51:10 · 312 阅读 · 0 评论 -
分数到小数
使用map记录小数是否重复,使用unordered_map能够实现快速查找。注意输入的int型转换为long long型,防止溢出。 string fractionToDecimal(int numerator, int denominator) { //使用map来确定小数循环起始位置 string res = ""; if(num...原创 2019-05-18 17:15:00 · 571 阅读 · 0 评论 -
求众数
方法一建立一个元素计数的map int majorityElement(vector<int>& nums) { map<int,int> ref; int len = nums.size(); for(int i = 0;i < len;i++){ if(ref.find(n...原创 2019-05-18 17:11:10 · 406 阅读 · 2 评论 -
数组中第K个最大元素
参考: 堆排序方法一: 利用c++中的priority_queue建立小顶堆。 int findKthLargest(vector<int>& nums, int k) { priority_queue<int,vector<int>,greater<int>> minHeap; //加一个greater<i...原创 2019-04-29 15:57:16 · 249 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 合并表记录
题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。输入描述: 先输入键值对的个数 然后输入成对的index和value值,以空格隔开输出描述: 输出合并后的键值对(多行)示例1 输入 4 0 1 0 2 1 2 3 4输出 0 3 ...原创 2018-09-13 15:44:20 · 152 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 数字颠倒
题目描述描述:输入一个整数,将这个整数以字符串的形式逆序输出程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001输入描述:输入一个int整数输出描述:将这个整数以字符串的形式逆序输出示例1输入1516000输出0006151c++:#include<iostream>#include...原创 2018-08-23 17:13:22 · 383 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 明明的随机数
题目描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。Input Pa...原创 2018-08-13 18:10:09 · 344 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 字符串字典顺序排序
题目描述 给定n个字符串,请对n个字符串按照字典序排列。 输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。输出描述: 数据输出n行,输出结果为按照字典序排列的字符串。示例1 输入 9 cap to cat card two too up...原创 2018-09-06 20:53:39 · 862 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 删除字符串中出现次数最少的字符
题目描述 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。 输入描述: 字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。输出描述: 删除字符串中出现次数最少的字符后的字符串。示例1 输入 abcdd输出 ddC++:...原创 2018-09-06 09:56:06 · 300 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 单词倒排
题目描述 对字符串中的所有单词进行倒排。说明:1、每个单词是以26个大写或小写英文字母构成;2、非构成单词的字符均视为单词间隔符;3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;4、每个单词最长20个字母;输入描述: 输入一行以空格来分隔的句子输出描述: 输出句子的逆序示例...原创 2018-09-05 11:39:48 · 356 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 字符串分割
题目描述 连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组,长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。首先输入一个整数,为要输入的字符串个数。例如:输入:2 abc 12345789输出:abc00000 12345678 90000000输入描述: 首先输入数字n,表示要...原创 2018-08-26 15:27:40 · 804 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 字符串分隔
题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100)输出描述: 输出到长度为8的新字符串数组示例1 输入 abc 123456789输出 abc00000 12345678 9000...原创 2018-08-26 15:01:58 · 492 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 求最小公倍数
题目描述正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。示例1输入5 7输出35c++:两数最小公倍数 = 两数之积 / 两数最大公约数求最大公约数:辗转相除法。a%b赋值给新b,原来的b赋值给新a,再继续新...原创 2018-08-19 17:16:10 · 512 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 提取不重复的整数
题目描述输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。输入描述:输入一个int型整数输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数示例1输入9876673输出37689C++:通过位操作记录已出现的数#include<iostream>using namespace ...原创 2018-08-16 16:14:50 · 275 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 图片整理
题目描述Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。输入描述:Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。输出描述:Lily的所有图片按照从小到大的顺序输出示例1输入Ihave1no原创 2018-08-12 23:50:35 · 2900 阅读 · 2 评论 -
牛客网 - 在线编程 - 华为机试 - 字符串反转
题目描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。例如:输入描述:输入N个字符输出描述:输出该字符串反转后的字符串示例1输入abcd输出dcbaC++:#include <iostream>using namespace std;int main(){ string str; ci...原创 2018-08-10 16:15:59 · 332 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 取近似值
题目描述写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。输入描述:输入一个正浮点数值输出描述:输出该数值的近似整数值示例1输入5.5输出6C++:#include<iostream>using namespace std;int main(){ ...原创 2018-08-10 16:10:32 · 399 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 计算字符个数
题目描述:写出一个程序,接受一个由字母和数字组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。输入描述:输入一个有字母和数字以及空格组成的字符串,和一个字符。输出描述:输出输入字符串中含有该字符的个数。示例1输入ABCDEF A输出1C++:#include <iostream>#includ...原创 2018-08-10 16:03:54 · 310 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 进制转换
题目描述写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )输入描述:输入一个十六进制的数值字符串。输出描述:输出该数值的十进制字符串。示例1输入0xA输出10c++:#include<iostream>using namespace std;int main(){ int n...原创 2018-08-22 16:51:52 · 431 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 合法IP
题目描述 现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。现在需要你用程序来判断IP是否合法。输入描述: 输入一个ip地址输出描述: 返回判断的结果YE...原创 2018-08-27 00:28:41 · 556 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 不同字符统计
题目描述 输入一行字符,分别统计出包含英文字母、空格、数字和其它字符的个数。输入描述: 输入一行字符串,可以有空格输出描述: 统计其中英文字符,空格字符,数字字符,其他字符的个数示例1 输入 1qazxsw23 edcvfr45tgbn hy67uj m,ki89ol.\/;p0-=\][输出 26 3 10 12C...原创 2018-08-28 22:25:49 · 212 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 字符串处理
题目描述 按照指定规则对输入的字符串进行处理。详细描述:将输入的两个字符串合并。对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。对排序后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符为‘...原创 2018-08-31 15:49:40 · 709 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 字符个数统计
题目描述 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。输入描述: 输入N个字符,字符在ACSII码范围内。输出描述: 输出范围在(0~127)字符的个数。示例1 输入 abc输出 3C++:方法一 正常计数,如若在前面的字符串中碰到一样的字符,count ...原创 2018-08-28 17:22:32 · 351 阅读 · 0 评论 -
C++ / Python 笔记
C++:cin 、cin.get() 、cin.getline() 、getline() 、gets() sort(str.begin(),str.end())函数在&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;algorithm&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;中 创建动态数组:int * a = new int [n] &amp;amp;amp;amp;amp原创 2018-08-28 11:46:17 · 143 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 求int型正整数在内存中存储时1的个数
题目描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。输入描述: 输入一个整数(int类型)输出描述: 这个数转换成2进制后,输出1的个数示例1 输入 5输出 2c++:#include<iostream>using namespace std;int main(){ in...原创 2018-08-27 23:07:22 · 149 阅读 · 0 评论 -
牛客网 - 在线编程 - 华为机试 - 记录均正II
题目描述从输入任意个整型数,统计其中的负数个数并求所有非负数的平均值输入描述:输入任意个整数输出描述:输出负数个数以及所有非负数的平均值示例1输入-13-4-7输出30.0c++:#include<iostream>#include<iomanip>using namespace std;int ma...原创 2018-08-20 19:47:29 · 353 阅读 · 0 评论