自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(235)
  • 收藏
  • 关注

原创 剑指 Offer 10- II. 青蛙跳台阶问题

哈哈,阔别很久,再次刷题,坚持第57天啦,加油!!!题目一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。.

2021-11-12 14:35:16 269

原创 JZ25 合并两个排序的链表

题目输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。数据范围:0 \le n \le 10000≤n≤1000,-1000 \le 节点值 \le 1000−1000≤节点值≤1000要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},转换过程如下图所示:或输入{-1,2,4},{1,3,4}时,合...

2021-10-25 19:20:12 232

原创 JZ76 删除链表中重复的结点

坚持第56天,加油!!!题目在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5示例1输入:{1,2,3,3,4,4,5}复制返回值:{1,2,5}复制示例2输入:{1,1,1,8}复制返回值:{8}代码/* public class ListNode { int

2021-10-25 18:31:20 174

原创 JZ6 从尾到头打印链表

坚持第55天啦,加油!!!题目输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。如输入{1,2,3}的链表如下图:返回一个数组为[3,2,1]0 <= 链表长度 <= 10000代码/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this

2021-10-23 16:49:08 130 1

原创 JZ74 和为S的连续正数序列

坚持54天啦,加油!!!题目小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?数据范围:0 < n \le 1000<n≤100进阶:时间复杂度O(n)O(n)返回值描述:输出所有和为S的连续正数序列.

2021-10-22 15:33:19 90

原创 JZ41 数据流中的中位数

题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。代码import java.util.*;public class Solution { public PriorityQueue<Integer> low = new PriorityQu

2021-10-21 17:24:32 75

原创 JZ30 包含min函数的栈

题目定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数,并且调用 min函数、push函数 及 pop函数 的时间复杂度都是 O(1)push(value):将value压入栈中pop():弹出栈顶元素top():获取栈顶元素min():获取栈中最小元素示例:输入:["PSH-1","PSH2","MIN","TOP","POP","PSH1","TOP","MIN"]输出:-1,2,1,-1解析:"PSH-1"表示将-1压...

2021-10-19 16:18:29 109 3

原创 JZ50 第一个只出现一次的字符

题目在一个长为字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)数据范围:0 \le n \le 100000≤n≤10000,且字符串只有字母组成。要求:空间复杂度O(n)O(n),时间复杂度O(n)O(n)代码public class Solution { public int FirstNotRepeatingChar(String str) { int[] count=new int[58...

2021-10-19 14:25:09 77

原创 JZ4 二维数组中的查找

题目在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target= 7,返回true。给定target=3,返回false。数据范围:矩阵的长宽满足0 \le n,m \le 5000≤n,m≤500, 矩...

2021-10-18 16:01:27 127 2

原创 JZ3 数组中重复的数字

坚持第50天啦,加油加油!!!题目在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任一一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1代码import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直

2021-10-18 10:47:11 64

原创 725. 分隔链表

题目给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。这 k 个部分应该按照在链表中出现的顺序排列,并且排在前面的部分的长度应该大于或等于排在后面的长度。返回一个由上述 k 部分组成的数组。示例 1:输入:head = [1,2,3], k = 5输出:[[1],[2],[3],[],[]]解释:第一个元素 output.

2021-10-14 14:17:37 195 2

原创 234. 回文链表

坚持第49天啦,加油加油!!!题目给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。示例 1:输入:head = [1,2,2,1]输出:true示例 2:输入:head = [1,2]输出:false提示:链表中节点数目在范围[1, 105] 内0 <= Node.val <= 9代码/** * Definition for singly-linked list. .

2021-10-14 13:39:04 65 1

原创 83. 删除排序链表中的重复元素

题目存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。返回同样按升序排列的结果链表。示例 1输入:head = [1,1,2]输出:[1,2]示例 2:输入:head = [1,1,2,3,3]输出:[1,2,3]代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode

2021-10-13 20:34:10 54

原创 21. 合并两个有序链表

坚持第48天啦,加油!!!题目将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]代码又是一个错误示范。。。。。。果然就是一看就会,一做就废。。。。我讨厌链表题。。。/** * Definition.

2021-10-13 19:52:15 75

原创 75. 颜色分类

坚持第47天,加油加油!!!题目给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:nums = [1]..

2021-10-12 14:05:38 62

原创 88. 合并两个有序数组

坚持第46天啦,加油加油!!!题目给你两个按 非递减顺序 排列的整数数组nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。.

2021-10-11 13:57:31 84 1

原创 128. 最长连续序列

题目给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为O(n) 的算法解决此问题。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9代码class Solution { public int longestCons.

2021-10-06 15:14:48 77

原创 594. 最长和谐子序列

题目和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。示例 1:输入:nums = [1,3,2,2,5,2,3,7]输出:5解释:最长的和谐子序列是 [3,2,2,2,3]示例 2:输入:nums = [1,2,3,4]输出:2示例 3:输入:nums =

2021-10-06 14:45:05 95

原创 217. 存在重复元素

题目给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true代码class Solution { public boolean containsDuplicate(int[] nums.

2021-10-06 14:20:13 71

原创 503. 下一个更大元素 II

题目给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数;第二个 1 的下一个最大的数需要循环搜索,结果也是 2。代码class Solution { .

2021-10-06 14:06:49 75

原创 739. 每日温度

坚持第45天啊,太不容易啦我,国庆节还在敲代码。。。。。题目请根据每日 气温 列表 temperatures,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用0 来代替。示例 1:输入: temperatures = [73,74,75,71,69,72,76,73]输出:[1,1,4,2,1,1,0,0]示例 2:输入: temperatures = [30,40,50,60]输出:[1,1,1,0]示例 3:输入: tempera...

2021-10-05 15:30:19 67

原创 328. 奇偶链表

题目给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6

2021-09-26 20:57:28 38

原创 234. 回文链表

题目给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNo...

2021-09-26 20:54:39 48

原创 445. 两数相加 II

题目给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例1:输入:l1 = [7,2,4,3], l2 = [5,6,4]输出:[7,8,0,7]示例2:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[8,0,7]示例3:输入:l1 = [0], l2 = [0]输出:[0]代码/** * Definit

2021-09-26 20:50:41 66

原创 24. 两两交换链表中的节点

坚持第44天,加油!!!题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]代码/** * Definition for singly-linked list. * public class ListNode { *

2021-09-26 20:45:56 59

原创 376. 摆动序列

坚持第43天啦,加油!!!题目如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如,[1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3)是正负交替出现的。相反,[1, 4, 7, 2, 5]和[1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。...

2021-09-25 21:37:24 43

原创 5. 最长回文子串

坚持第42天,加油!!!事实证明,第一道题还是选简单的好些,,,,题目给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"代码就很尴尬,,,错了class Solution { public String longest

2021-09-24 16:38:41 48

原创 415. 字符串相加

题目给定两个字符串形式的非负整数num1 和num2,计算它们的和并同样以字符串形式返回。你不能使用任何內建的用于处理大整数的库(比如 BigInteger),也不能直接将输入的字符串转换为整数形式。示例 1:输入:num1 = "11", num2 = "123"输出:"134"示例 2:输入:num1 = "456", num2 = "77"输出:"533"示例 3:输入:num1 = "0", num2 = "0"输出:"0"代码class Sol...

2021-09-19 17:29:41 95

原创 92. 反转链表 II

题目给你单链表的头指针 head 和两个整数left 和 right ,其中left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。示例 1:输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]示例 2:输入:head = [5], left = 1, right = 1输出:[5]代码class Solution { public Lis...

2021-09-19 16:44:31 71

原创 103. 二叉树的锯齿形层序遍历

题目给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层序遍历如下:[ [3], [20,9], [15,7]]代码class Solution { public List<List<Integer>> zigz...

2021-09-19 15:49:52 58

原创 贪心法总结

1、选好策略2、排序,优先对列,集合贪心一般解题步骤贪心算法一般分为如下四步: 将问题分解为若干个子问题 找出适合的贪心策略 求解每一个子问题的最优解 将局部最优解堆叠成全局最优解 其实这个分的有点细了,真正做题的时候很难分出这么详细的解题步骤,可能就是因为贪心的题目往往还和其他方面的知识混在一起。股票的特殊性不重叠区间(二维数组,x轴分布)渔(套路):一般这种数对,还涉及排序的,根据第一个元素正向排序,根据第二个元素反向排序,或者根据第一个元

2021-09-19 15:16:43 197

原创 回溯法总结

BacktrackingBacktracking(回溯)属于 DFS。普通 DFS 主要用在可达性问题,这种问题只需要执行到特点的位置然后返回即可。 而 Backtracking 主要用于求解排列组合问题,例如有 { 'a','b','c' } 三个字符,求解所有由这三个字符排列得到的字符串,这种问题在执行到特定的位置返回之后还会继续执行求解过程。因为 Backtracking 不是立即返回,而要继续求解,因此在程序实现时,需要注意对元素的标记问题:在访问一个新元素进入新的递归调用时...

2021-09-19 15:16:17 134

原创 动态规划总结

动态规划的的四个解题步骤是:定义子问题 写出子问题的递推关系 确定 DP 数组的计算顺序 空间优化(可选)1、重点还是状态转移矩阵的问题。找出转移矩阵,矩阵的含义就是题目要求的含义。找出dp[i]与dp[i-1].dp[i-2]等前态的关系。或者二维数组稍微接触过一点动态规划的朋友都知道动态规划有一个“子问题”的定义。什么是子问题?子问题是和原问题相似,但规模较小的问题。例如这道小偷问题,原问题是“从全部房子中能偷到的最大金额”,将问题的规模缩小,子问题就是“从 kk 个房子中能偷到的最大金

2021-09-19 15:15:47 172

原创 53. 最大子序和

题目给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000代...

2021-09-19 15:08:02 47

原创 3. 无重复字符的最长子串

再度更新一波,果然习惯一断就难续上了。。。。。坚持第41天,加油!!!!题目给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。代码class Solution { public int lengthOfLongestSubstring(String s) { List<Character>list=new ArrayList<Character>(); i...

2021-09-19 14:15:35 59

原创 面经:javase

请你比较一下Java和JavaSciprt?考察:Java&JavaScript参考回答:JavaScript 与Java是两个公司开发的不同的两个产品。Java 是原Sun Microsystems公司推出的面向对象的程序设计语言,特别适合于互联网应用程序开发;而JavaScript是Netscape公司的产品,为了扩展Netscape浏览器的功能而开发的一种可以嵌入Web页面中运行的基于对象和事件驱动的解释性语言。下面对两种语言间的异同作如下比较:- 基于对象和面向对象:Java

2021-09-17 11:33:20 136

原创 378. 有序矩阵中第 K 小的元素

坚持第40天啦,加油加油!!题目给你一个n x n矩阵matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。示例 1:输入:matrix = [[1,5,9],[10,11,13],[12,13,15]], k = 8输出:13解释:矩阵中的元素为 [1,5,9,10,11,12,13,13,15],第 8 小元素是 13示例 2:输入:matrix = [[-5]], k =...

2021-09-16 21:02:01 63

原创 566. 重塑矩阵

题目在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。给你一个由二维数组 mat 表示的m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:mat = [[1,2],..

2021-09-15 16:00:23 102 2

原创 240. 搜索二维矩阵 II

题目编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例 1:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true示例 2:输入:matrix = [[1,4,7,11,15],[2,5,8,12...

2021-09-15 15:54:43 51

原创 485. 最大连续 1 的个数

题目给定一个二进制数组, 计算其中最大连续 1 的个数。代码class Solution { public int findMaxConsecutiveOnes(int[] nums) { if(nums==null) return 0; int cur=0; int max=0; for(int i=0;i<nums.length;i++) { cur=num

2021-09-15 15:06:13 46

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除