Leetcode
自己以及借鉴前辈们,刷题经验,一点点整理的每题解法。自己比较菜,仅供各位参考。
楚暮天流
科研民工
展开
-
Leetcode 串联所有单词子串 Java
借鉴其他博主思路:class Solution { public List<Integer> findSubstring(String s, String[] words) { List<Integer> list=new ArrayList<>(); if(words.length==0||s.length()...转载 2019-04-24 11:28:42 · 330 阅读 · 0 评论 -
leetcode 实现strStr() Java 用时2ms
实现strStr()函数。给定一个haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", ne...原创 2019-04-22 10:15:07 · 163 阅读 · 0 评论 -
Leetcode 移除元素 Java 3ms
给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前...原创 2019-04-19 09:05:01 · 193 阅读 · 0 评论 -
Leetcode 删除排序数组重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为: [1,2]你不需要考虑数组中超出新长度后面的元素。示例2:...原创 2019-04-18 16:49:04 · 213 阅读 · 0 评论 -
Leetcode 两两交换链表
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.一种超过时间复杂度的算法(自己写的,真菜,还蠢):class Solution { public ListNode swapPair...原创 2019-04-18 15:31:36 · 192 阅读 · 0 评论 -
Leetcode 生成括号
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n=3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]题解 借鉴(抄的,哈哈)的回溯法只有在我们知道序列仍然保持有效时才添加'('or'),我们可以通过跟踪到前为止放置的左括号...原创 2019-04-18 14:20:23 · 153 阅读 · 0 评论 -
leetcode Java 2ms 删除链表倒数第N个节点
给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的n保证是有效的。采取暴力法:/*** Definition for singly-linked list.* ...原创 2019-04-17 14:26:57 · 547 阅读 · 0 评论 -
Leetcode15 三位数之和
给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]代码如下...原创 2019-04-12 17:27:56 · 196 阅读 · 0 评论 -
leetcode 14 最长公共前缀 用时3ms
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。纪念一下自己的独立暴力解法,一点没有参...原创 2019-04-11 17:06:45 · 133 阅读 · 0 评论 -
leetcode13 罗马数字转整数 用时28ms
罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1...原创 2019-04-11 16:20:03 · 120 阅读 · 0 评论 -
leetcode12 整数转罗马数字
罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1...原创 2019-04-10 19:22:17 · 117 阅读 · 0 评论 -
Leetcode11 盛最多水的容器 Java解法 用时6ms
给定n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。思路:官方双指针思路。这种方法背后的思路在于,两线段之间形成的区域总是会受到其中较短那...原创 2019-04-09 20:52:42 · 413 阅读 · 0 评论 -
Leetcode 10 正则表达式
给定一个字符串(s) 和一个字符模式(p)。实现支持'.'和'*'的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串(s) ,而不是部分字符串。说明:s可能为空,且只包含从a-z的小写字母。 p可能为空,且只包含从a-z的小写字母,以及字符.和*。示例 1:输入:s = "aa"p...原创 2019-04-08 11:24:32 · 112 阅读 · 0 评论 -
leetcode Z字型变换
当行数=4时,每个字母在原字符串的索引的矩阵排列如下:1 7 132 6 8 12 143 5 9 114 10假设当前行数是r,总行数R,I(n)表示某行第n个字母在原字符串中的index,n从1开始:r=1,R时,I(n+1) = I(n)+2(R-1)1<r<R时,I(n+1) = I(n)+2(R-r) n+1为偶数时...原创 2019-04-01 19:15:37 · 164 阅读 · 0 评论