leetcode
吃西瓜要吐米米
亦余心之所善兮,虽九死其犹未悔。
展开
-
LeetCode.1求两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> v; vector<...原创 2018-04-25 10:07:06 · 240 阅读 · 0 评论 -
LeetCode13. 罗马数字转整数
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M.字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做...原创 2018-04-25 10:30:40 · 410 阅读 · 0 评论 -
LeetCode14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。cla原创 2018-04-25 10:34:33 · 895 阅读 · 0 评论 -
LeetCode20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: fa...原创 2018-04-25 10:38:22 · 1554 阅读 · 1 评论 -
LeetCode21. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4/** * Definition for singly-linked list. * struct ListNode { * int val; * ...原创 2018-04-25 10:41:00 · 143 阅读 · 0 评论 -
LeetCode26. 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。class Solution...原创 2018-04-25 10:44:20 · 307 阅读 · 0 评论 -
LeetCode27. 移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。...原创 2018-04-25 10:47:39 · 214 阅读 · 0 评论 -
LeetCode28. 实现strStr()
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。class Solution { public int strStr(String haystack, String needle) { if(needle==nul...原创 2018-04-25 10:50:01 · 117 阅读 · 0 评论 -
LeetCode35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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-04-25 10:51:53 · 773 阅读 · 0 评论 -
LeetCode58. 最后一个单词的长度
给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5class Solution { public int lengthOfLastWord(String str) { if(str==null||str...原创 2018-04-25 10:53:50 · 637 阅读 · 0 评论 -
LeetCode66. 加一
给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。class Solu...原创 2018-04-26 12:39:11 · 935 阅读 · 0 评论 -
整数数组转换成字符串,字符串转化成整数数组,java语言实现
将字符串转换成整数数组。 public static int[] stringFormatInteger(String s) { int len=s.length(); int[] a=new int[len]; for(int i=0;i<len;i++) { a[i]=s.charAt(i)-'0'; } return a;...原创 2018-04-26 12:38:50 · 8566 阅读 · 0 评论 -
LeetCode67. 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"class Solution { public String addBinary(String a, String b) {原创 2018-04-26 12:38:20 · 530 阅读 · 0 评论 -
LeetCode83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3/** * Definition for singly-linked list. * public class ListNode { * int va...原创 2018-04-26 13:22:52 · 191 阅读 · 0 评论 -
LeetCode70.爬楼梯
假设你正在爬楼梯。需要 n 步你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 步 + 1 步2. 2 步示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 步 + 1 步 + 1 步2. 1 步 + 2 步3. ...原创 2018-04-26 21:07:04 · 193 阅读 · 0 评论 -
LeetCode88. 合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6],...原创 2018-04-27 20:59:03 · 142 阅读 · 0 评论 -
LeetCode125. 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。解题思路:将字符串转化成只含有字母和数字的字符数组,再对字符数组进行验证。public boolean isPalindrome(String s) { if(s==null||s.length()==0) { return true; }...原创 2018-05-06 15:23:22 · 137 阅读 · 0 评论 -
LeetCode136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。解题分析:可用哈希表来存储数据 public static int singleNumber(int[] nums) { Map map=new HashMap(); for(int i=0;i<nums.length;i++) { if(map.get(nu...原创 2018-05-06 16:02:25 · 141 阅读 · 0 评论 -
LeetCode485. 最大连续1的个数
给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含 0 和1。输入数组的长度是正整数,且不超过 10,000。思路:遍历数组,定义count变量对连续出现的1计数,当出现0时,更新最大值,并开始重新计数。class Solution { pu...原创 2018-06-03 09:58:28 · 563 阅读 · 0 评论 -
LeetCode492. 构造矩形
作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求:1. 你设计的矩形页面必须等于给定的目标面积。2. 宽度 W 不应大于长度 L,换言之,要求 L >= W 。3. 长度 L 和宽度 W 之间的差距应当尽可能小。你需要按顺序输出你设计的页面的长度 L 和宽度 ...原创 2018-06-03 10:53:30 · 458 阅读 · 0 评论 -
LeetCode496. 下一个更大元素
给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: ...原创 2018-06-03 11:43:36 · 650 阅读 · 0 评论 -
LeetCode500. 键盘行
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。示例1:输入: ["Hello", "Alaska", "Dad", "Peace"]输出: ["Alaska", "Dad"]注意:你可以重复使用键盘上同一字符。你可以假设输入的字符串将只包含字母。思路:为键盘的每一行字符构建一个哈希表,判断给定字符串是否完全由其中一个哈希表的字符构成。class So原创 2018-06-04 11:50:10 · 446 阅读 · 0 评论 -
LeetCode599. 两个列表的最小索引总和
假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。示例 1:输入:["Shogun", "Tapioca Express", "Burger King", "KFC"]["Piatti", "The .原创 2018-06-11 14:51:23 · 1195 阅读 · 0 评论 -
LeetCode504. 七进制数
给定一个整数,将其转化为7进制,并以字符串形式输出。示例 1:输入: 100输出: "202"示例 2:输入: -7输出: "-10"注意: 输入范围是 [-1e7, 1e7] 。思路:十进制转七进制,注意num值的3种情况;1.大于0,2.等于0,3.小于0。class Solution { public String convertToBase7(int num) { ...原创 2018-06-04 17:59:35 · 453 阅读 · 0 评论 -
LeetCode605. 种花问题
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。示例 1:输入: flowerbed = [1,0,0,0,1], n = 1输出: True...原创 2018-06-11 18:31:20 · 470 阅读 · 0 评论 -
LeetCode345. 反转字符串中的元音字母
编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:给定 s = "hello", 返回 "holle".示例 2:给定 s = "leetcode", 返回 "leotcede".注意:元音字母不包括 "y".思路:定义两个指针,分别指向字符串的头和尾,当两个指针所指字符都为元音字母时,交换两个字符的位置。class Solution { public String re...原创 2018-06-04 20:17:50 · 491 阅读 · 0 评论 -
LeetCode434. 字符串中的单词数
统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: "Hello, my name is John"输出: 5思路:从第二个单词起,每出现一个单词的条件必是空字符后出现非空字符,例如:‘ ’+'m' 出现my; ' '+'n' 出现name 等等。因此,只需统计空字符后紧跟着出现非空字符的次数即可。别忘了如果字符...原创 2018-06-05 08:29:55 · 1010 阅读 · 0 评论 -
LeetCode628. 三个数的最大乘积
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。思路:首先将数组按升序排序。得到三个数的最大乘积有2种可能。给定一个整型数组...原创 2018-06-11 21:23:44 · 632 阅读 · 0 评论 -
LeetCode414. 第三大的数
给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。示例 1:输入: [3, 2, 1]输出: 1解释: 第三大的数是 1.示例 2:输入: [1, 2]输出: 2解释: 第三大的数不存在, 所以返回最大的数 2 .示例 3:输入: [2, 2, 3, 1]输出: 1解释: 注意,要求返回第三大的数,是指第三大且...原创 2018-06-05 08:31:02 · 1090 阅读 · 0 评论 -
LeetCode448. 找到所有数组中消失的数字
给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]思路:为1~n的元素构建哈希表;元...原创 2018-06-05 08:46:21 · 746 阅读 · 0 评论 -
LeetCode459. 重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。示例 2:输入: "aba"输出: False示例 3:输入: "abcabcabcabc"输出: True解释: 可由子字符串 "abc" 重复四次构成。 (或...原创 2018-06-05 08:55:30 · 894 阅读 · 0 评论 -
LeetCode283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路:class Solution { public void moveZeroes(int[] nums) { if(nums==null) ...原创 2018-06-05 09:08:16 · 176 阅读 · 0 评论 -
LeetCode258. 各位相加
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。思路:class Solution { public int addDigits(int num) { while(num>=10) { num=(...原创 2018-06-05 09:11:44 · 378 阅读 · 0 评论 -
LeetCode617. 合并二叉树
给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1 ...原创 2018-06-12 14:55:03 · 902 阅读 · 0 评论 -
LeetCode100. 相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 ...原创 2018-06-05 13:27:19 · 1811 阅读 · 1 评论 -
LeetCode118. 杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]思路:class Solution { public List<List<Integer>> ...原创 2018-07-08 14:38:24 · 146 阅读 · 0 评论 -
java使用栈结构实现二叉树的深度优先遍历
/** * 深度优先遍历 * 辅助数据结构:栈 * @param root */ public void depthOrderTraversal(TreeNode root) { if(root==null) { return ; } Stack<TreeNode> stack=new Stack<TreeNode...原创 2018-06-05 13:52:14 · 1863 阅读 · 0 评论 -
LeetCode506. 相对名次
给出 N 名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”("Gold Medal", "Silver Medal", "Bronze Medal")。(注:分数越高的选手,排名越靠前。)示例 1:输入: [5, 4, 3, 2, 1]输出: ["Gold Medal", "Silver Medal", "Bronze Med.原创 2018-06-05 14:39:30 · 804 阅读 · 0 评论 -
LeetCode520. 检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确。我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。否则,我们定义这个单词没有正确使用大写字母。示例 1:输入: "USA"输出: True示例 2:输入: "FlaG"输出: False注意:...原创 2018-06-06 09:40:50 · 188 阅读 · 0 评论 -
LeetCode551. 学生出勤纪录 I
给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符:'A' : Absent,缺勤'L' : Late,迟到'P' : Present,到场如果一个学生的出勤纪录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。你需要根据这个学生的出勤纪录判断他是否会被奖赏。示例 1:输入: "PPALLP"输出: True示例 2:输入: "PPALLL"...原创 2018-06-06 11:00:35 · 394 阅读 · 0 评论