笔试
楚暮天流
科研民工
展开
-
Leetcode 5 最长回文子串
题目描述:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。思路:基本的动态规划做法。1.借助一个二维布尔数组,dd[i][j]为true表示字符串中索引i到j为回文子串,否则反之。2.以字符串"babac"为例,如下图。每一个dd[i][j]代表图中一个方格,每个方格中的T和F分别代表当前子串是否为回文字符串,如dd[0][2]="b...原创 2019-03-20 17:42:32 · 174 阅读 · 0 评论 -
LeetCode 搜索旋转排序数组 Java
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。半暴力法:class Solution { pu...原创 2019-04-24 13:52:00 · 113 阅读 · 0 评论 -
Leetcode 96 不同的二叉搜索树 Java 0ms 击败100%
给定一个整数 n,求以1 ...n为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 ...原创 2019-05-04 16:54:47 · 155 阅读 · 0 评论 -
LeetCode 70 爬楼梯 Java 用时0ms
假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. ...原创 2019-05-05 13:21:47 · 271 阅读 · 0 评论 -
Leetcode 35 搜索插入位置 Java 用时1ms 击败97.97%
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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], ...原创 2019-04-29 21:11:36 · 283 阅读 · 0 评论 -
LeetCode 94 二叉树中序遍历 递归
给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]递归算法比较简单,难点在于list列表需要定义在外面,或者在内部使用addAll函数,连接子list。代码如下:/*** Definition for a binary tree node.* public clas...原创 2019-04-30 10:07:54 · 194 阅读 · 0 评论 -
LeetCode 66 加一 Java用时 1ms
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321...原创 2019-04-30 16:43:26 · 224 阅读 · 0 评论 -
Leetcode 简化路径 Java用时 12ms 击败91%
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠/开头,并且两个目录名之间必须只有...转载 2019-05-06 10:31:54 · 232 阅读 · 0 评论 -
Leetcode 逆波兰式表达式求值
class Solution { public int evalRPN(String[] tokens) { Stack<Integer> stack = new Stack<>(); for (int i = 0 ;i < tokens.length;i++){ String str = t...原创 2019-05-13 17:43:14 · 345 阅读 · 0 评论 -
剑指offer -7 重建二叉树 简洁代码
/*** Definition for binary tree* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/import java.util.*;public class ...原创 2019-08-15 17:52:16 · 131 阅读 · 0 评论 -
记录一下 ZOOM笔试的菜鸡经历
菜鸡zoom被虐记单选20*2 多选10*3 2道编程题编程题1:输入一个字符串和一个整数m,去除其中m个'0',如CD00P000,m=2 输出:CDP000。现场笔试没过,下来搞了半个小时...原创 2019-08-17 16:17:01 · 6492 阅读 · 4 评论 -
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 · 342 阅读 · 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 · 197 阅读 · 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 · 121 阅读 · 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 · 131 阅读 · 0 评论 -
Leetcode 10 正则表达式
给定一个字符串(s) 和一个字符模式(p)。实现支持'.'和'*'的正则表达式匹配。'.' 匹配任意单个字符。'*' 匹配零个或多个前面的元素。匹配应该覆盖整个字符串(s) ,而不是部分字符串。说明:s可能为空,且只包含从a-z的小写字母。 p可能为空,且只包含从a-z的小写字母,以及字符.和*。示例 1:输入:s = "aa"p...原创 2019-04-08 11:24:32 · 117 阅读 · 0 评论 -
leetcode 14 最长公共前缀 用时3ms
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。纪念一下自己的独立暴力解法,一点没有参...原创 2019-04-11 17:06:45 · 147 阅读 · 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 · 204 阅读 · 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 · 419 阅读 · 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 · 168 阅读 · 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 · 569 阅读 · 0 评论 -
Leetcode 生成括号
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n=3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]题解 借鉴(抄的,哈哈)的回溯法只有在我们知道序列仍然保持有效时才添加'('or'),我们可以通过跟踪到前为止放置的左括号...原创 2019-04-18 14:20:23 · 161 阅读 · 0 评论 -
Leetcode 删除排序数组重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为: [1,2]你不需要考虑数组中超出新长度后面的元素。示例2:...原创 2019-04-18 16:49:04 · 221 阅读 · 0 评论 -
JAVA实现小根堆排序
代码:import java.util.Arrays;public class solution { public static void main(String []args){ int a[]={5,3,6,4,1,11,9,21,4,5,-5}; heapSort(a); System.out.println(Arrays.toSt...原创 2019-08-27 14:22:28 · 863 阅读 · 0 评论