leetcode
文章平均质量分 76
skka
此人很勤快,什么都没有写
展开
-
239. 滑动窗口最大值
题目给定一个数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。进阶:你能在线性时间复杂度内解决此题吗?示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释: 滑动窗口的位置 最大值--------------- ...原创 2020-09-04 18:36:48 · 158 阅读 · 0 评论 -
148. 排序链表
在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5思路由于时间复杂度在O(nlogn),容易想到归并排序和堆排序,由于堆排序需要能够按index访问,并不适合链表,递归的归并排序空间复杂度O(logn),不满足常数空间复杂度要求,...原创 2020-07-19 20:37:16 · 162 阅读 · 0 评论 -
143. 重排链表
题目给定一个单链表L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.思路正常的想法是,找到第n个节点插入0和..原创 2020-07-04 23:04:19 · 216 阅读 · 0 评论 -
剑指 Offer 45. 把数组排成最小的数
题目输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"示例2:输入: [3,30,34,5,9]输出: "3033459"思路每两个数逐个比较,如果两个数共有的高位能比较出大小,则比较成功,如23和221比较。否则得试着将两个数字拼接为相等长度。比较的方法:举例,320和32比较,应该解析为32032和32323比较(即不断循环原数字,直到两个数字长度之和)代码class.原创 2020-06-30 21:35:18 · 100 阅读 · 0 评论 -
79. 单词搜索
题目给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE", 返回 true给定 word = "AB...原创 2020-06-28 23:24:01 · 158 阅读 · 0 评论 -
703. 数据流中的第K大元素
题目设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的KthLargest类需要一个同时接收整数k 和整数数组nums的构造器,它包含数据流中的初始元素。每次调用KthLargest.add,返回当前数据流中第K大的元素。示例:int k = 3;int[] arr = [4,5,8,2];KthLargest kt...原创 2020-04-21 18:46:29 · 303 阅读 · 0 评论 -
202.快乐数
题目:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。示例:输入:19输出:true解释:12 + 92 =...原创 2020-04-16 16:27:29 · 205 阅读 · 0 评论 -
面试题52. 两个链表的第一个公共节点《剑指offer 第二版》
题目:输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。思路:将链表按尾端来对齐,从前向后遍历找到第一个公共节点。具体实现:计算出两个链表的长度,分别为lenA,lenB。哪个长就将哪个链表向后遍历|lenA-lenB|的长度,然后两个链表同时向后遍历找到第一个公共节点。代码:/** * Definition for sing...原创 2020-04-09 14:38:16 · 233 阅读 · 0 评论 -
面试题38. 字符串的排列《剑指offer(第二版)》
题目输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]题解1:基于选择的排列思路:多次对字符串进行遍历,用StringBuffer来存储选择的字符,每次对于每个字符都可以选择加入或者不加入St...原创 2020-03-23 18:20:49 · 336 阅读 · 0 评论 -
面试题09. 用两个栈实现队列《剑指offer(第二版)》
问题描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输...原创 2020-03-20 19:36:42 · 274 阅读 · 0 评论 -
64. 最小路径和
题目:给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。代码:动态规划法:class Solution { public i...原创 2019-11-22 20:55:09 · 163 阅读 · 0 评论 -
27. 移除元素
题目:给定一个数组 nums和一个值 val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums...原创 2019-10-18 13:24:12 · 142 阅读 · 0 评论 -
26. 删除排序数组中的重复项
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例...原创 2019-10-18 13:06:14 · 135 阅读 · 0 评论 -
25. K 个一组翻转链表
题目:给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3...原创 2019-10-18 12:39:59 · 134 阅读 · 0 评论 -
24. 两两交换链表中的节点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.思路:考察链表的节点交换操作,具体交换如下图代码:/** * Definition for singly-linked l...原创 2019-10-18 10:51:30 · 173 阅读 · 0 评论 -
23. 合并K个排序链表
题目:合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6思路1:和普通的两个有序数组排序的方法类似,每次选出n个链表当前所指元素中的最小值加入新的链表,直到...原创 2019-10-18 10:29:47 · 168 阅读 · 0 评论 -
22. 括号生成
题目:给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]思路:核心思想是 组合算法的应用。首先介绍组合算法。从m个元素取n个元素,不考虑取出顺序。一种代码实现:(基于深度遍...原创 2019-10-16 23:57:01 · 130 阅读 · 0 评论 -
21. 合并两个有序链表
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:整体思路类似归并排序,选择两个链表 l1,l2 中较小的元素加入新的链表l3,最后若l1,l2中一个遍历完,另一个链表还有元素未遍历,则...原创 2019-10-15 19:16:30 · 129 阅读 · 0 评论 -
20. 有效的括号
题目:给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false思路...原创 2019-10-15 18:45:52 · 136 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点
题目:给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路:设置一个指针q,指向当前扫描元素p的第前n+1个元...原创 2019-10-15 14:37:38 · 141 阅读 · 0 评论 -
18. 四数之和
题目:给定一个包含n 个整数的数组nums和一个目标值target,判断nums中是否存在四个元素 a,b,c和 d,使得a + b + c + d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四...原创 2019-10-15 14:21:44 · 150 阅读 · 0 评论 -
17. 电话号码的字母组合
题目:给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].代码:class Solution { public List&l...原创 2019-10-15 13:50:53 · 156 阅读 · 0 评论 -
16. 最接近的三数之和
题目:给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路:延续第15题的双指针...原创 2019-10-15 10:38:58 · 138 阅读 · 0 评论 -
15. 三数之和
多的不说,各种特殊情况加超时,恶心到了,头疼参考博客:https://blog.csdn.net/God_Mood/article/details/87081242原创 2019-10-15 10:17:05 · 166 阅读 · 0 评论 -
14. 最长公共前缀
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。思路:将第一个数组第一个字符串作为基...原创 2019-10-14 21:25:42 · 134 阅读 · 0 评论 -
13. 罗马数字转整数
题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列...原创 2019-10-14 20:06:18 · 139 阅读 · 0 评论 -
12. 整数转罗马数字
题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列...原创 2019-10-14 19:54:09 · 204 阅读 · 0 评论 -
2.两数相加
题目:给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 ->...原创 2019-09-03 14:13:22 · 144 阅读 · 0 评论 -
3. 无重复字符的最长子串
题目:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重...原创 2019-09-03 14:13:12 · 156 阅读 · 0 评论 -
5.最长回文子串的简单解法
1.暴力法求解时间复杂度O(n^3)空间复杂度O(n)代码:class Solution { public String longestPalindrome(String s) { if(s.trim().equals("")){ return ""; } char[] arr = s.toCharAr...原创 2019-09-03 14:13:36 · 197 阅读 · 0 评论 -
11. 盛最多水的容器
题目:给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能...原创 2019-09-14 15:10:57 · 132 阅读 · 0 评论 -
9.回文数
题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。...原创 2019-09-11 14:14:52 · 164 阅读 · 0 评论 -
8. 字符串转换整数 (atoi)
题目:请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,...原创 2019-09-08 17:09:03 · 145 阅读 · 0 评论 -
7.整数反转
题目:给定一个 32 位有符号整数,将整数中的数字进行反转。示例1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21思路:思路很简单,首先考虑最简单的正数,每次除以10取余得到最低位的数字,然后低位乘以10加上高位。对于负数,先取相反数,按照正数的算法求得后再取相反数。本题唯一...原创 2019-09-08 14:16:22 · 265 阅读 · 0 评论 -
6.Z字形变换
题目:将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为 "LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE TO ES I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDH...原创 2019-09-08 12:35:24 · 230 阅读 · 0 评论 -
4.寻找两个有序数组的中位数
题目:给定两个大小为 m 和 n 的有序数组nums1 和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。你可以假设nums1和nums2不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则...原创 2019-09-03 18:18:17 · 142 阅读 · 0 评论