OJ练习
s695540301
在校程序猿
展开
-
LeetCode-括号生成
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]class Solution { public List<String> generateParenthesis(int n原创 2018-06-06 22:44:02 · 333 阅读 · 0 评论 -
LeetCode-罗马数字转整数
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做...原创 2018-05-27 15:05:02 · 490 阅读 · 0 评论 -
LeetCode-两数之和 II - 输入有序数组
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9...原创 2018-05-27 15:00:43 · 722 阅读 · 0 评论 -
LeetCode-删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?class Solution { public ListNode removeNthFrom...原创 2018-06-03 15:03:10 · 239 阅读 · 0 评论 -
LeetCode-搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0class Solution...原创 2018-06-03 14:34:19 · 184 阅读 · 0 评论 -
LeetCode-回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:class Solution { public boolean isPalindrome(int x) ...原创 2018-05-16 07:48:39 · 153 阅读 · 0 评论 -
LeetCode-无重复字符的最长子串
给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。解题思路:这道题wa了挺久的挺尴尬的,考原创 2018-05-15 23:21:33 · 378 阅读 · 0 评论 -
LeetCode-最长特殊序列 Ⅰ
给定两个字符串,你需要从这两个字符串中找出最长的特殊序列。最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。子序列可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。输入为两个字符串,输出最长特殊序列的长度。如果不存在,则返回 -1。示例 :输入: "aba", "cdc"输出: 3解析:...原创 2018-05-26 07:35:13 · 1203 阅读 · 0 评论 -
LeetCode-和为K的子数组
给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。package subArraySumEqualK...原创 2018-05-26 07:32:33 · 2290 阅读 · 0 评论 -
LeetCode-两数相加
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807class Solution { publ...原创 2018-05-14 23:19:25 · 2039 阅读 · 0 评论 -
LeetCode-整数转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写...原创 2018-05-27 15:08:32 · 322 阅读 · 0 评论 -
LeetCode-盛最多水的容器
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。注意:你不能倾斜容器,n 至少是2。思路:一开始看题有点蒙蔽不知道说的什么意思,后来一想是木桶效应,很简单。class Solution { pu...原创 2018-05-27 15:10:16 · 508 阅读 · 0 评论 -
LeetCode-正则表达式匹配
给定一个字符串 (s) 和一个字符模式 (p)。实现支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串 (s) ,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"p = "a"输出: fals...原创 2018-05-27 15:11:12 · 1240 阅读 · 0 评论 -
LeetCode-合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListN...原创 2018-06-05 21:15:13 · 649 阅读 · 0 评论 -
LeetCode-Z字形变换
将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:P A H NA P L S I I GY I R之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"实现一个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s = "PAYPALISHIRING", numRows ...原创 2018-05-24 23:11:30 · 340 阅读 · 0 评论 -
LeetCode-两个排序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。示例 1:nums1 = [1, 3]nums2 = [2]中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]中位数是 (2 + 3)/2 = 2.5package subject4;public ...原创 2018-05-24 23:09:46 · 456 阅读 · 0 评论 -
LeetCode-最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).package threeSumCloses...原创 2018-05-28 22:55:02 · 215 阅读 · 0 评论 -
LeetCode-电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的原创 2018-06-04 07:51:54 · 741 阅读 · 0 评论 -
LeetCode-最长回文子序列
给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:"bbbab"输出:4一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2一个可能的最长回文子序列为 "bb"。package test516;/*给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:"bbbab"输出...原创 2018-05-22 23:18:28 · 467 阅读 · 0 评论 -
LeetCode-字符串转整数 (atoi)
实现 atoi,将字符串转为整数。在找到第一个非空字符之前,需要移除掉字符串中的空格字符。如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值。如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,它们对于函数没有影响。当字符串中的第一个非空字符序列不是个...原创 2018-05-22 23:03:53 · 556 阅读 · 0 评论 -
LeetCode-有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: fa...原创 2018-05-22 23:00:05 · 991 阅读 · 0 评论 -
LeetCode-四数之和
给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-...原创 2018-06-03 15:52:50 · 483 阅读 · 0 评论 -
LeetCode-最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。示例 1:输入: "babad"输出: "bab"注意: "aba"也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"分析:可以看出是动态规划的题。(1)设置数组flag[length][length],flag[i][j]表示string的第i位到第j位是不是回文串。(2)可知当i等于j...原创 2018-05-20 21:00:36 · 91 阅读 · 0 评论 -
LeetCode-三数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]class Solution {...原创 2018-05-13 18:03:13 · 253 阅读 · 0 评论 -
2016年华为优招编程题
题目大意是这样的:输入一串字符串,里面是由整数和整数之间的逗号(,)组成的,例如 1,7,9,232,43等。我们需要把逗号忽略并对整数进行排序,同时如果排序后整数相邻如果有连续数,连续数中只保留最大数和最小数。样例输入:4,3,2,5,9,10样例输出:2 5 9 10解题思路:1.输入字符串用C++中的string类来处理。从中可以分隔出整数和逗号2.用sort原创 2016-08-12 09:04:18 · 887 阅读 · 0 评论 -
熊猫阿波的故事及C++保留小数点的问题
熊猫阿波的故事Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5253 Accepted Submission(s): 4019Problem Description凡看过功夫熊猫这部电影的人都会对影片中那只憨憨的熊猫阿波原创 2015-10-11 00:27:14 · 488 阅读 · 0 评论 -
Eddy's AC难题
Eddy's AC难题Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4441 Accepted Submission(s): 2096Problem DescriptionEddy是个ACMer,他不仅喜欢做ACM题,而原创 2015-10-10 23:58:35 · 548 阅读 · 0 评论 -
第k小数
问题:在时间复杂度在O(n)的情况下,输入一系列无顺序数字,求第k小的数字。http://www.cnblogs.com/Jason-Damon/archive/2013/06/17/3140959.html原创 2015-07-22 10:11:34 · 464 阅读 · 0 评论 -
HDU 1069 Monkey and Banana
#include#include#include#includeusing namespace std;int n;struct node{int length;int width;int height;}num[120];int dp[120];bool cmp(node a,node b){ if(a.length>b.length) return true;原创 2015-05-19 22:55:08 · 352 阅读 · 0 评论 -
Doing Homework again
Doing Homework againTime Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8208 Accepted Submission(s): 4834Problem DescriptionIgnatius原创 2015-05-17 20:24:41 · 344 阅读 · 0 评论 -
今年暑假不AC
今年暑假不ACTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34021 Accepted Submission(s): 18109Problem Description“今年暑假不AC?”“是的。”“原创 2015-05-17 20:05:19 · 546 阅读 · 0 评论 -
最少拦截系统
最少拦截系统Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 24199 Accepted Submission(s): 9486Problem Description某国为了防御敌国的导弹袭击,发展出一种导弹拦原创 2015-05-16 18:22:50 · 447 阅读 · 0 评论 -
最大限制相邻选数和
DescriptionDescription 假设有一类题目:给定一个数组,其中元素皆为int型,所有元素绝对值之和在int型示数范围内。在给定限制内选数,求在所有选法选中数之和中,最大值是多少。限制:对于问题“最大限制相邻选数和(N)”,其限制为相邻的N个元素不能被同时选中。 聪明的WRZ同学马上知道这类题目可以按某个方向递推解决,并给出对于m个元素的数组a,N=1,2时的解法:(动态规划递原创 2015-05-13 22:11:38 · 801 阅读 · 0 评论 -
c++ vector的用法
转载:http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。1 基本操作(1)头文件#include.(2)创建vector对象,vector vec;(3)尾部插入数字:vec.push_back(a);转载 2016-08-12 15:25:01 · 193 阅读 · 0 评论 -
校招算法复习之冒泡排序
冒泡排序是指对一串数字进行排序,其中形象的表示是指这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。就是说最原始的冒泡排序是指从小到大排序(当然排序从小到大还是从大到小都没有关系啦~) 算法思想(Bubble sort):按从小到大排序。把数字按输入顺序从左到右排成一列(在内存中一般用数组实现)。然后从左到右依次去比较找寻当前最小值。比如vector[0]是最原创 2016-08-13 16:21:52 · 288 阅读 · 0 评论 -
校招算法之冒泡排序的优化
冒泡排序算法的基础见:冒泡排序。但是冒泡排序的复杂度最好的情况是O(n),这种情况是怎么出现的呢? 这就是冒泡排序的优化。原理:设定一个标志值(flag),判断此时排序是否已经完成不需要再次排序。 C++版代码:#includeusing namespace std;void bubbleSort(int* bubble,int num);int main()原创 2016-08-13 17:45:16 · 269 阅读 · 0 评论 -
LeetCode-反转整数
给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。public class Solution { publi...原创 2018-05-13 16:58:25 · 200 阅读 · 0 评论 -
LeetCode-检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: "USA"输出: True示例 2:输入: "FlaG"输出: False注意:...原创 2018-05-17 23:54:27 · 195 阅读 · 0 评论 -
LeetCode-最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。class Solution { publi原创 2018-05-17 23:50:33 · 154 阅读 · 0 评论 -
LeetCode-两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路:(1)暴力解法。对于任意num in nums[],遍历数组查找能否构成target;复杂度为O(n...原创 2018-05-09 23:28:55 · 116 阅读 · 0 评论